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.