fsolve - résout un système d'équations non-linéaires
Résout un système de n équations non linéaires à n inconnues avec un algorithme du type méthode hybride de Powell. La Jacobienne peut être fournie (c'est fortement conseillé).
0 = fct(x)
fct est une fonction "externe" Cette fonction renvoie v=fct(x) pour x donné.
La séquence d'appel de fct est :
[v]=fct(x).
Si fct est une chaîne de caractères, elle désigne le nom d'une subroutine Fortran ou C liée dynamiquement à Scilab, avec comme liste d'appel Fortran :
fct(n,x,v,iflag) integer n,iflag double precision x(n),v(n)
ou alors pour une routine C :
fct(int *n, double x[],double v[],int *iflag)
(voir link ).
jac est une fonction "externe" aussi. Cette fonction renvoie v=d(fct)/dx (x) pour x donné.
La séquence d'appel de jac est :
[v]=jac(x).
Si jac est une chaîne de caractères, elle désigne le nom d'une subroutine Fortran ou C liée dynamiquement à Scilab. Les séquences d'appel sont les mêmes que pour fct (attention v doit être un tableau n x n).
// un exemple simple a=[1,7;2,8];b=[10;11]; deff('[y]=fsol1(x)','y=a*x+b'); deff('[y]=fsolj1(x)','y=a'); [xres]=fsolve([100;100],fsol1); a*xres+b [xres]=fsolve([100;100],fsol1,fsolj1); a*xres+b // voir routines/default/Ex-fsolve.f [xres]=fsolve([100;100],'fsol1','fsolj1',1.e-7); a*xres+b