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    ];
        end
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
J'ai essayé de le résoudre de la manière suivante :
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);
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(app));
  [teta,y]=ode45(@Force(app),[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.
Merci d'avance