Recently, I've been reading up on various root-finding / optimization algorithms such as the Levenberg-Marquardt method, Gauss-Newton, Conjugate Gradient, trust-region and trust-region-dogleg.

I've then been practicing using Matlab's fsolve function for some easy problems such as solving g (g(1), g(2)) = (0,0), where g's component functions are quadratic in two variables. I can guess the roots easily, since I'm making up these practice problems. Afterwards, I learn how to read all of fsolve's outputs and flags, and its optimization metrics and convergence analysis.

However, this is far too simple for my needs, and I want to solve a rootfinding problem in many more inputs and outputs.

Do you have a suggestion on how I can gain better practice to eventually solve my real problem in several input and output variables?

I need an intermediate form of practice but am struggling to come up with what to work on.

Any particularly good algorithm to look into would be appreciated too. It seems that Matlab's fsolve uses both the trust-region-dogleg and Levengberg-Marquardt algorithms.


  • $\begingroup$ What about curve fitting problems? They can be as complicated as you want, have as many inputs and outputs as you want, and if you make up the data, you even know the true solution. $\endgroup$ – cos_theta Sep 19 '20 at 18:24
  • $\begingroup$ I was under the impression that you're looking for more complicated test problems. Maybe you could explain exactly what you want or what problem you want to solve? $\endgroup$ – cos_theta Sep 19 '20 at 20:37
  • $\begingroup$ As a suggestion, try and compute the frequency response of the Duffing oscillator en.wikipedia.org/wiki/Duffing_equation#Frequency_response $\endgroup$ – Ron Sep 24 '20 at 10:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.