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


Reply via email to