version de mon matlab :Matlab 7.0.0.19920 (R14)

je viens de créer deux fonctions :diff2.m et diffapp2.m

La seconde appelle la fonction matlab ode45 (il semblerait que l'erreur soit a cet endroit). Lle but de cette fonction est de résoudre une équation différentielle qui modélise un funambule sur un fil.

J'ai tapé egalement help ode45 et je ne trouve pas la solution, j'ai essayé plein de possibilités et toujours des erreurs.

diff2.m:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
%   K1x"=K2sin(x)+Cm+Co-Cc
%   K9(x"+y")=Cc-Cm
%   Co=-K3sign(x')-K4x'
%   Cc=-K5sign(y')-K6y'
%   Cm=-K7x-K8x'
function xdt=diff2(t,x)
%   initialisation et normalisation
 
xdt=[0000]';
K1=0.92;
K2=16.94;
K3=0.5;
K4=0.1;
K5=1.0;
K6=0.5;
K7=0.0;
K8=0.0;
K9=2.99;
K21=K2/K1;
K31=K3/K1;
K41=K4/K1;
K51=K5/K1;
K61=K6/K1;
K71=K7/K1;
K81=K8/K1;
 
%   teta est x(2), alpha x(4)
%   calcul de la vitesse en teta xdt(2) et en alpha xdt(4)
 
xdt(2)=x(1);
xdt(4)=x(3);
 
%   calcul de l'acceleration en teta
 
xdt(1)=K21*sin(x(2))+(-K31*sign(x(1))-K41*x(1))-(-K51*sign(x(3))-K61*x(3))+(-K71*x(2)-K81*x(1));
 
%   calcul de l'acceleration de alpha
 
xdt(3)=-xdt(1)+(-K5*sign(x(3))-K6*x(3))/K9-(-K7*x(2)-K8*x(1))/K9;
diffapp2.m:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
%   vitesse initiale en teta
a0=0;
 
%   position initiale en teta
b0=10*pi/180;
 
%   vitesse initiale en alpha
c0=0;
 
%   position initiale en alpha
d0=-10*pi/180;
 
%   origine du temps
t0=0;
 
%   temps final
tf=10;
 
%   appel
 
[t,x]=ode45(@diff2,[t0 tf],[a0 b0 c0 d0]',2e-3,0);
 
%   tracé
teta=x(:,2);
alpha=x(:,4);
 
subplot(2,1,1);
plot(t,teta);
grid;
title('teta');
subplot(2,1,2);
plot(t,alpha);
grid;
title('alpha');
messages d'erreur de diff2.m:
??? Input argument "x" is undefined.

Error in ==> diff2 at 30
xdt(2)=x(1);
messages d'erreur de diffapp2.m:
Error in ==> funfun\private\odearguments at 110
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.

Error in ==> ode45 at 173
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, ...

Error in ==> diffapp2 at 21
[t,x]=ode45(@diff2,[t0 tf],[a0 b0 c0 d0]',2e-3,0);
merci d'avance pour votre aide ou votre réponse.