Bonjour à tous,
Je suis nouveau sur ce forum et sur matlab aussi
Mon problème consiste à trouver le polynôme y(x) qui minimise une intégrale en f(y(x)).dx entre bornes connues. j'ai donc écrit dans une macro :
pour définir ma fonction f(y(x)). A est la matrice des coef du polynôme y
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 function out=obj(x,A) aux=sqrt(1+polyval(polyder(A,x),x).^2); out=aux./(sqrt(20*(1-polyval(A,x)))+0.001);
Ensuite dans une autre macro j'ai mis :
pour calculer mon intégrale.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 function t=temps(A) x=0:0.01:1; t=quad(@(x) obj(x,A),0,1);
et enfin dans le programme principal j'ai :
où Aeq et beq permettent de définir ma contrainte d'optimisation (y(x) doit passer par 2 points imposés).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Aeq=zeros(2,4); Aeq(1,4)=1; for i=1:1:4; Aeq(2,i)=1; end; beq=[1 0]'; [A,t]=fmincon(temps,zeros(4,1),[],[],Aeq,beq)
Quand j'essaie de lancer fmincon dans matlab, il me demande de définir A. Or A est ma variable et je ne sais pas comment lui faire comprendre
Si quelqu'un a la patience de m'expliquer le problème, je l'en remercie d'avance !
Partager