The problem as you stated has infinitely many solutions, since you have
4 variables and only 3 constraints, so you need to be clear about what
you want. One option is to find a solution which also minimizes the norm
of x || x ||, which would add a fourth constraint, allowing you to use
the nonlinear least squares method. This would be similar to Tikhonov
regularization, and you could form the augmented residual vector:
fnew = [ f1; f2; f3; x ]
and augmented Jacobian matrix:
Jnew = [ J ; I ]
Read the section on Tikhonov regularization in the manual to learn where
the above expressions come from.
Patrick
On 03/16/2016 06:37 PM, axplusbu wrote:
Greetings,
I have a problem with p = 4 unknowns and n = 3 equations
i.e. p > n and my system is of the form:
f1(x1,x2,x3,x4) = 0
f2(x1,x2,x3,x4) = 0
f3(x1,x2,x3,x4) = 0
The multidimensional root finder "gsl_multiroots" requires p = n. The
nonlinear least-squares solver "gsl_multifit_nlin" requires n > p. (Note
this requirement appears to be absent from the documentation, the error
appears during compiling: "fsfsolver.c:37: ERROR: insufficient data points,
n < p.")
I could potentially transform my problem into a scalar minimization problem
and use "gsl_multimin". However, I currently have the Jacobian for the
above system and this would require me to re-derive the gradient for a new
scalar function which I would like to avoid.
Note: I was able to solve this problem in the past using the
Levenberg-Marquardt algorithm implemented in MATLAB's "fsolve".
Does there exist a solver in GSL that can solve my problem in its current
form? Or is anyone aware of another software package for doing so?
Thanks,
-axplusbu