Have you tried Newton's method? Do you have the Jacobian? Since it is a 
small problem you can compute the Jacobian with differences trivially just 
create with MatCreateSeqDense() matrix with size 4 and pass it and 
SNESComputeJacobianDefault to SNESSetJacobian().

   Barry

On May 2, 2013, at 7:04 AM, Abdul-Lateef Haji-Ali <abdullateef.hajiali at 
kaust.edu.sa> wrote:

> Greetings,
> 
> I am trying to solve a system of 4 non-linear equations to find 4 unknowns.
> The equations are slightly complicated  and unstable for slightly large 
> values of the unknowns.
> In most of the cases the correct solution is found. However sometimes the 
> values that are fed to my residual function are big and nan/inf values are 
> produced.
> 
> This is the output of my residual function (x are the parameters and f is the 
> computed residual)
> x= [1, 1, 2, 4]; f= [-1.32993, 6.46116, 0.490443, -4.47854];
> x= [2.32993, -5.46116, 1.50956, 8.47854]; f= [-1.77078, -133.872, 4.26217, 
> 71.9728];
> x= [1.06488, 0.684771, 1.97607, 4.2185]; f= [-0.431978, 2.79625, 0.190123, 
> 0.0503181];
> x= [4.10071, 128.411, -2.75261, -63.4942]; f= [62.0141, 2548.28, -95.0523, 
> -1354.74];
> x= [1.74294, 0.960827, 1.63558, 4.54888]; f= [19.6641, 4.52508, -9.48464, 
> 7.44219];
> x= [-57.9134, -2419.86, 92.2997, 1291.24]; f= [inf, -inf, inf, -inf];
> This was using ngmres, I noticed similar behaviour with other types.
> 
> What can I do to improve the solver?
> N ote that my experience with petsc in new and limited.
> 
> Thank you,
> -- 
> Abdul Lateef Haji Ali

Reply via email to