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: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
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;messages d'erreur de 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 % 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 diffapp2.m:??? Input argument "x" is undefined.
Error in ==> diff2 at 30
xdt(2)=x(1);merci d'avance pour votre aide ou votre réponse.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);
Partager