Bonjour,
j'ai une équation différentielle formé par 7 équations et 7 inconnus j'ai utilisé la fonction ode45 du matlab mais lorsque j'execute il me rend des erreurs dans odefile et dans la fonction ode45, j'ai pas trouvez une erreur dans mes progrmme, est ce que vous pouvez m'aidez?
Le programme 1 c'est le fichier m.file des 7 equtions différentielle, le programme 2 c'est pour calculer P, V et H et le programme 3 c'est le progrmme principle pour appeler ode45.
Programme1
Programme 2
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
40
41
42
43
44
45 function sd=eq_diff(t,s) global P V H alpha D A=P-V*inv(H)*V'; Sopt1=s(4)+A(1)*s(1)+A(4)*s(2)+A(7)*s(3); Sopt2=s(5)+A(2)*s(1)+A(5)*s(2)+A(8)*s(3); Sopt3=s(6)+A(3)*s(1)+A(6)*s(2)+A(9)*s(3); v1=-alpha*sign(D(1)*Sopt1+D(4)*Sopt2+D(7)*Sopt3); v2=-alpha*sign(D(2)*Sopt1+D(5)*Sopt2+D(8)*Sopt3); v3=-alpha*sign(D(3)*Sopt1+D(6)*Sopt2+D(9)*Sopt3); deltaf1=cos(t)*(1+0.05*sin(4*t)+0.1*cos(t)); deltaf2=sin(t)*cos(t)*(1+0.05*sin(4*t)+0.1*cos(t)); deltaf3=(sin(t)^2)*(1+0.05*sin(4*t)+0.1*cos(t)); deltag1=0.01*sin(t+2.1)*(s(7)-0.5*s(9)); deltag2=0.01*cos(t)*(-0.2*s(8)+0.8*s(9)); deltag3=0.01*cos(t+1.3)*(-0.2*s(7)-s(8)+0.7*s(9)); q1=-(s(10)*s(12)+deltaf2+deltag2+1.5*s(7)+s(8)+1.2*s(9))*s(12); q2=-s(11)*(-(1/3)*s(10)*s(11)+deltaf3+deltag3+1.2*s(7)+1.5*s(8)+s(9)); q3=-sin(t)*(1+0.05*sin(4*t)+0.1*cos(t))+cos(t)*(0.2*cos(4*t)-0.1*sin(t)); q4=0.01*cos(t+2.1)*(s(7)-0.5*s(9))-(0.5^2)*sin(0.5*t); fi1=q1+q2+q3+q4; q5=(-s(11)*s(12)+deltaf1+deltag1+s(7)+1.2*s(8)+1.5*s(9))*s(12); q6=s(10)*(-(1/3)*s(10)*s(11)+deltaf3+deltag3+1.2*s(7)+1.5*s(8)+s(9)); q7=((cos(t))^2)*(1+0.05*sin(4*t)+0.1*cos(t))-((sin(t))^2)*(1+0.05*sin(4*t)+0.1*cos(t)); q8=sin(t)*cos(t)*(0.2*cos(4*t)-0.1*sin(t))-0.01*sin(t)*(-0.2*s(8)+0.8*s(9)); q9=(0.5^2)*cos(0.5*t)*cos(t)-(0.5^2)*sin(0.5*t)*sin(t)-(0.5^2)*sin(0.5*t)*sin(t)+0.5*cos(0.5*t)*cos(t); fi2=q5+q6+q7+q8+q9; q10=-(1/3)*s(11)*(-s(11)*s(12)+deltaf1+deltag1+s(7)+1.2*s(8)+1.5*s(9)); q11=-(1/3)*s(10)*(s(10)*s(12)+deltaf2+deltag2+1.5*s(7)+s(8)+1.2*s(9)); q12=2*sin(t)*cos(t)*(1+0.05*sin(4*t)+0.1*cos(t))+((sin(t))^2)*(0.2*cos(4*t)-0.1*sin(t))-0.01*sin(t+1.3)*(-0.2*s(7)-s(8)+0.7*s(9)); q13=(0.5^2)*cos(0.5*t)*sin(t)+(0.5^2)*sin(0.5*t)*cos(t)+(0.5^2)*sin(0.5*t)*cos(t)+0.5*cos(0.5*t)*sin(t); fi3=q10+q11+q12+q13; gama=[0.01*sin(t+2.1)+1 1.2 -0.005*sin(t+2.1)+1.5;1.5 -0.002*cos(t)+1 0.008*cos(t)+1.2;-0.002*cos(t+1.3)+1.2 -0.01*cos(t+1.3)+1.5 0.007*cos(t+1.3)+1]; dZ11=s(4); dZ12=s(5); dZ13=s(6); dZ21=fi1+gama(1)*v1+gama(4)*v2+gama(7)*v3; dZ22=fi2+gama(2)*v1+gama(5)*v2+gama(8)*v3; dZ23=fi3+gama(3)*v1+gama(6)*v2+gama(9)*v3; du1=v1; du2=v2; du3=v3; dx1==-s(11)*s(12)+deltaf1+deltag1+s(7)+1.2*s(8)+1.5*s(9)+0.5*cos(0.5*t); dx2=s(10)*s(12)+deltaf2+deltag2+1.5*s(7)+s(8)+1.2*s(9)+(0.5^2)*sin(0.5*t)*cos(t)+0.5*cos(0.5*t)*sin(t); dx3=-(1/3)*s(10)*s(11)+deltaf3+deltag3+1.2*s(7)+1.5*s(8)+s(9)+(0.5^2)*sin(0.5*t)*sin(t)-0.5*cos(0.5*t)*cos(t); sd=[dZ11;dZ12;dZ13;dZ21;dZ22;dZ23;du1;du2;du3;dx1;dx2;dx3];
Programme 3
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 function y=exerart() P0=[0 0 0;0 0 0;0 0 0]; y1=0;y2=0;y3=0;y4=0;y5=0;y6=0;y7=0;y8=0;y9=0; V0=[1 0 0;0 1 0;0 0 1]; y10=1;y11=0;y12=0;y13=0;y14=1;y15=0;y16=0;y17=0;y18=1; H0=[0 0 0;0 0 0;0 0 0]; y19=0;y20=0;y21=0;y22=0;y23=0;y24=0;y25=0;y26=0;y27=0; I=[1 0 0;0 1 0;0 0 1]; h=0.001; for i=0:0.001:1.5; % Pour P k1=-P0*P0+I; k2=-(P0+(h/2)*k1)*(P0+(h/2)*k1)+I; k3=-(P0+(h/2)*k2)*(P0+(h/2)*k2)+I; k4=-(P0+h*k3)*(P0+h*k3)+I; P=P0+(h/6)*(k1+2*k2+2*k3+k4); % Pour V r1=-P0'*V0; r2=-P0'*(V0+(h/2)*r1); r3=-P0'*(V0+(h/2)*r2); r4=-P0'*(V0+h*r3); V=V0+(h/6)*(r1+2*r2+2*r3+r4); % Pour H l1=V0'*V0; % l1=l2=l3=l4 H=H0+(h/6)*(l1+2*l1+2*l1+l1); P0=P; V0=V; H0=H; % Pour P P1=P0(1); P2=P0(2); P3=P0(3); P4=P0(4); P5=P0(5); P6=P0(6); P7=P0(7); P8=P0(8); P9=P0(9); y1=[y1 P1]; y2=[y2 P2]; y3=[y3 P3]; y4=[y4 P4]; y5=[y5 P5]; y6=[y6 P6]; y7=[y7 P7]; y8=[y8 P8]; y9=[y9 P9]; %Pour V V1=V0(1); V2=V0(2); V3=V0(3); V4=V0(4); V5=V0(5); V6=V0(6); V7=V0(7); V8=V0(8); V9=V0(9); y10=[y10 V1]; y11=[y11 V2]; y12=[y12 V3]; y13=[y13 V4]; y14=[y14 V5]; y15=[y15 V6]; y16=[y16 V7]; y17=[y17 V8]; y18=[y18 V9]; % Pour H H1=H0(1); H2=H0(2); H3=H0(3); H4=H0(4); H5=H0(5); H6=H0(6); H7=H0(7); H8=H0(8); H9=H0(9); y19=[y19 H1]; y20=[y20 H2]; y21=[y21 H3]; y22=[y22 H4]; y23=[y23 H5]; y24=[y24 H6]; y25=[y25 H7]; y26=[y26 H8]; y27=[y27 H9]; save param4 y1 y2 y3 y4 y5 y6 y7 y8 y9 save param5 y10 y11 y12 y13 y14 y15 y16 y17 y18 save param6 y19 y20 y21 y22 y23 y24 y25 y26 y27 end plot(y1) grid
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122 global P V H alpha D load param4 load param5 load param6 h=0.001;alpha=2000; D=[0.0005 0.0015 0.0015;0.0012 0.0005 0.002;0.002 0.0015 0.0005]; Z1=[]; Z2=[]; Z3=[]; Z4=[]; Z5=[]; Z6=[]; U1=[]; U2=[]; U3=[]; Y1=[]; Y2=[]; Y2=[]; % conditions initiales Z110=-0.8;Z120=0.6;Z130=-0.2;Z210=0;Z220=0;Z230=0;u10=0;u20=0;u30=0;x10=0.2-1;x20=1.1-0.5;x30=-0.2; Tspan=0:0.001:h; T=0:h:1.499; N=(1.499/h)+1; for i=1:N; ct=floor(1500-(i-1)); % Matrice P z1=y1(ct); z2=y2(ct); z3=y3(ct); z4=y4(ct); z5=y5(ct); z6=y6(ct); z7=y7(ct); z8=y8(ct); z9=y9(ct); % Matrice V z11=y10(ct); z12=y11(ct); z13=y12(ct); z14=y13(ct); z15=y14(ct); z16=y15(ct); z17=y16(ct); z18=y17(ct); z19=y18(ct); % Matrice H z21=y19(ct); z22=y20(ct); z23=y21(ct); z24=y22(ct); z25=y23(ct); z26=y24(ct); z27=y25(ct); z28=y26(ct); z29=y27(ct); P=[z1 z4 z7;z2 z5 z8;z3 z6 z9]; V=[z11 z14 z17;z12 z15 z18;z13 z16 z19]; H=[z21 z24 z27;z22 z25 z28;z23 z26 z29]; X0=[Z110;Z120;Z130;Z210;Z220;Z230;u10;u20;u30;x10;x20;x30]; [t,X]=ode45('eq_diff',Tspan,X0); l=length(t); Z11=X(l,1); Z12=X(l,2); Z13=X(l,3); Z21=X(l,4); Z22=X(l,5); Z23=X(l,6); u1=X(l,7); u2=X(l,8); u3=X(l,9); x1=X(l,10); x2=X(l,11); x3=X(l,12); Z1=[Z1;Z11]; Z2=[Z2;Z12]; Z3=[Z3;Z13]; Z4=[Z4;Z21]; Z5=[Z5;Z22]; Z6=[Z6;Z23]; U1=[U1;u1]; U2=[U2;u2]; U3=[U3;u3]; Y1=[Y1;x1]; Y2=[Y2;x2]; Y2=[Y2;x2]; Z110=Z11; Z120=Z12; Z130=Z13; Z210=Z21; Z220=Z22; Z230=Z23; u10=u1; u20=u2; u30=u3; x10=x1; x20=x2; x30=x3; end figure(1) plot(Z1);grid;title('Z11'); figure(2) plot(Z2);grid;title('Z12'); figure(3) plot(Z3);grid;title('Z13'); figure(4) plot(Z4);grid;title('Z21'); figure(5) plot(Z5);grid;title('Z22'); figure(6) plot(Z6);grid;title('Z23'); figure(7) plot(U1);grid;title('u1'); figure(8) plot(U2);grid;title('u2'); figure(9) plot(U3);grid;title('u3'); figure(10) plot(Y1);grid;title('x1'); figure(11) plot(Y2);grid;title('x2'); figure(12) plot(Y3);grid;title('x3');
Partager