Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
6.1.0 - Français

Change language to:
English - 日本語 - Português - Русский

Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function

Aide de Scilab >> Optimisation et Simulation > fsolve

fsolve

résout un système d'équations non-linéaires

Séquence d'appel

[x, v, info] = fsolve(x0, fct)
[x, v, info] = fsolve(x0, fct, fjac)
[x, v, info] = fsolve(x0, fct, fjac, tol)
[x, v, info] = fsolve(x0, fct, tol)

Paramètres

x0

vecteur réel (vecteur initial).

fct

fonction externe (fonction Scilab ou chaîne de caractères ou liste).

fjac

fonction externe (fonction Scilab ou chaîne de caractères ou liste).

tol

scalaire. Tolérance : l'algorithme s'arrête lorsque l'erreur relative estimée entre x et la solution est inférieure à tol (tol=1.d-10 par défaut).

x :

vecteur réel (solution estimée).

v :

vecteur réel facultatif: valeur de la fonction en x.

info

indicateur d'arrêt de l'algorithme :

0Paramètres d'entrée incorrects.
1L'erreur relative estimée entre x et la solution est inférieure à tol.
2Nombre maximal autorisé d'appels à fct atteint.
3tol est trop petite. L'algorithme stationne.
4les itérations n'améliorent pas assez la solution.

Description

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).

Exemples

// 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 SCI/modules/optimization/sci_gateway/fortran/Ex-fsolve.f
[xres]=fsolve([100;100],'fsol1','fsolj1',1.e-7);
a*xres+b

Voir aussi

  • external — Objet Scilab, fonction externe ou routine
  • qpsolve — linear quadratic programming solver
  • optim — non-linear optimization routine
Report an issue
<< Semidefinite Programming Optimisation et Simulation karmarkar >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Feb 25 08:50:25 CET 2020