salut tous,
j'ai besoin de votre aide pour l'utilisation de la fonction lsqnonlin car les resultats que j'ai me paraissent bizarres. J'ai surement dû faire une erreur dans la façon d'utiliser cette fonction...?
CONTEXTE:
j'ai deux séries de données : "experimentales" et "numeriques" . Je je voudrais minimiser l'écart entre ces deux données.
Le vecteur experimental contient 5 données, j'ai donc fait une fonction nommée "calculs" qui me donne les mêmes 5 données mais numeriquement et qui fait la différence entre les deux vecteurs.
=> au final la fonction "calculs" me renvoie:
METHODE:
Code : Sélectionner tout - Visualiser dans une fenêtre à part abs(Yexp-Ynum)
Afin de minimiser cette grandeur:
j'ai utilisé la fonction "lsqnonlin" de la toolbox optimisation de matlab mais ça ne fonctionne pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part abs(Yexp-Ynum)
=> il doit y avoir quelque chose que je n'ai pas compris dans l'utilisation de cette fonction
LA SYNTAXE UTILISEE:
voici la syntaxe que j'ai utilisé:
avec la fonction calculs:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 parametresInitiaux=[5 4.4 2]; options = optimset('Display','iter','TolFun',1e-8) [x,resnorm] = lsqnonlin(@calculs,parametresInitiaux,lb,ub,options);
DONNEES DE SORTIE:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 function RESIDU=calculs(parametresI) %ici je fais des calculs qui prennent les parametres en entrée residuVect=abs(Y_exp-Y_num); RESIDU=residuVect';
l'algorithme me fait que 4 iterations (juste de quoi determiner le gradient de ma fonction car j'ai 3 variables) et me dit que le premier resultat qu'il a le resultat final.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Optimization completed: The final point is the initial point. The first-order optimality measure, 0.000000e+000, is less than options.TolFun = 1.000000e-008. Optimization Metric Options relative first-order optimality = 0.00e+000 TolFun = 1e-008 (selected)
=> je ne comprends pas ceci car je sais que les parametres d'entres que j'ai donné sont carrément faux...
Partager