« Découvrir Scilab/Optimisation d'une fonction » : différence entre les versions

Aller à la navigation Aller à la recherche
→‎Optimisation non linéaire : utilisation de numderivative()
Aucun résumé des modifications
(→‎Optimisation non linéaire : utilisation de numderivative())
function [f, g, ind] = cout(x, ind)
f = x.*x + 5*sin(x);
g = 2*x + 5*cos(x);
endfunction
 
x0 = 0;
 
[fopt, xopt] = optim(cout, x0);
 
plot(x, y);
plot(xopt, fopt, "k+");
</source>
 
Si l'on ne connaît pas de forme analytique de la fonction dérivée, on peut utiliser la fonction <code>numderivative()</code> :
 
<source lang="scilab">
function [y] = fonction(x)
y = x.*x + 5*sin(x);
endfunction
 
 
function [f, g, ind] = cout(x, ind)
f = fonction(x);
g = numderivative(fonction, x);
endfunction
 
n = 40;
x = linspace(-2*%pi, 2*%pi, n);
y = cout(x);
 
x0 = 0;
 
[fopt, xopt] = optim(cout, x0);
 
plot(x, y);
plot(xopt, fopt, "k+");
 
plot(x, y)
plot(xopt, fopt, "k+")
</source>
 
13 890

modifications

Menu de navigation