Bonjour tout le monde,
J'ai un programme Matlab qui tourne correctement lorsqu'il est utilisé dans l'éditeur "classique" MATLAB. Celui-ci utilise la fonction ode45 afin de résoudre un système différentiel.
Je souhaiterais exporter ce programme dans une interface graphique sous AppDesigner.
Néanmoins je n'arrive pas à adapter la syntaxe de l'ode sous AppDesigner. Le but de l'interface est de recueillir des données entrées par l'utilisateur afin de résoudre finalement le système différentiel.
Le système différentiel à résoudre est un système de trois équations avec une fonction 'Mass'. Il fait donc intervenir deux fonctions principales : Masse et Force :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 function M=Masse(app,teta,y) [V,dV]=Volume(app,teta); [cp,h,mp,~,~]=janaf(y(2),'gf',1); % janaf is a function I wrote u=h-app.h0-((y(1).*volume)./y(3)); r=8.314/mp; cv=cp-r; M=[V -y(3)*r -r*y(2) ; 0 y(3)*cv u ; 0 0 1 ]; endJ'ai essayé de le résoudre de la manière suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 function F = Force(app,teta,y) [V,dV]=Volume(app,teta); F=[-y(1)*dV ; -y(1)*dV ; 0]; end
Mais il ne reconnait pas les fonctions Masse et Force qui sont déclarées en "Private function" et je ne peux pas écrire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 opt=odeset('Mass',@Masse); [teta,y]=ode45(@Force,[0:pi/180:4*pi],y0,opt);
Je ne sais pas si j'ai été très clair mais j'espère que vous pourrez m'aider tout de même.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 opt=odeset('Mass',@Masse(app)); [teta,y]=ode45(@Force(app),[0:pi/180:4*pi],y0,opt);
Merci d'avance![]()
Partager