Bonjour,
j'ai un système d'équations différentielles à résoudre;le code du système est le suivant:
pour la resolution , j'ai crée le code suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 function dyp= sys (t,yp,p1,p2) dyp(1)= -p1.*yp(1).*yp(2)-p2.*yp(1).*yp(3); dyp(2)=-p1.*yp(1).*yp(2); dyp=dyp'; end
Mon but est de chercher les paramètres p1 et p2 qui minimisent l'écart en moindres carrés entre y (valeurs expérimentales) et yp.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 function [t,yp]=reso (p1,p2) init = [0:10:2000]; yp0 = [1 1 0]; [t,yp]=ode45 (@(t,yp) sys(t,yp,p1,p2),init, yp0); end
Pour celà, j'ai défini la fonction en moindre carré dans le fichier suivant:
ainsi que la fonction partielle suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 function critere=CRT(p1,p2,t,yp,y); critere=sum((y-reso(p1,p2)).^2); end
et finalement la fonction fmincon dans le fichier suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 obj=@(p1,p2) CRT(p1,p2,t,yp);
le problème c'est que j'ai toujours des erreurs et j'ai pas su comment le résoudre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 p0=[0.001;0.0005]; A=[1 1 ; -1 -1]; b=[0.006 ; -0.0015]; [p,fval]=fmincon(@obj, p0,A,b);
merci de m'aider ladessus
Partager