Bonjour à tous .
Ma problématique est la suivante : J'ai une équation différentielle qui a comme expression dw1 . L'expression de dw1 dépend de 4 cas : (p,q) ={(0,0),(1,1),(4,0),(0,4)}. Je veux introduire au clavier les valeurs de (p,q) (avec la commande input je pense) , puis suivant ces valeurs dw1 va s'écrire :

dw1 = -1/tau2*(A00t*w1+B00t*u) pour le 1er cas (p,q) =(0,0) ,
dw1 = -1/tau2*(A11t*w1+B11t*u) pour le 2ème cas (p,q) =(1,1) ,
dw1 = -1/tau2*(A40t*w1+B40t*u) pour le 3ème cas (p,q) =(4,0) ,
dw1 = -1/tau2*(A04t*w1+B04t*u) pour le 4ème cas (p,q) =(0,4) .

Ensuite , on va utiliser la fonction ode45 pour afficher la courbe correspondante aux p et q introduits au clavier.
Je ne sais pas si ça se fait dans un seul fichier , ou bien utiliser d'autres méthodes pour le faire.
Merci pour votre aide.

Voici le code de la procédure que j'ai commencé:

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
function  dw1 = feed11(t,w1)
 
%Conditions initiales des variables d'état 
 
%u = [u(1) u(2)]';
dw1 = zeros(5,1);
u=1 ;
tau2=2;
 
% dw1=zeros(3,1);
% u=1 ;
% tau2=2;
 
% p = input('Entrer alpha: ');
% q = input('Entrer beta : ');
 
%  p= disp([num2str(p)==1])
%  q= disp([num2str(p)==1])
 
 
% Données de la méthode de collocation orthogonale At,Bt,Ct pour les
% valeurs suivantes : alpha=0,beta=0 , n=4
 
A00t = [6.6640    2.8405   -1.2325    1.1613   -0.6550
   -5.1848    0.7688    2.9413   -2.2497    1.2291
    2.2497   -2.9413   -0.7688    5.1848   -2.4952
   -1.1613    1.2325   -2.8405   -6.6640    8.7783
    1.7631   -1.8126    3.6799  -23.6304   21.0000];
B00t = [-8.7783
    2.4952
   -1.2291
    0.6550
   -1.0000];
C00t=[0 0 0 0 1]';
 
 
 
% % Données de la méthode de collocation orthogonale At,Bt,Ct pour les
% % valeurs suivantes : alpha=1,beta=1 , n=4
% 
A11t = [-0.0000    5.0469   -2.3057    1.3071   -0.4756
   -3.4425    0.0000    3.5059   -1.5727    0.5394
    1.5727   -3.5059   -0.0000    3.4425   -0.9699
   -1.3071    2.3057   -5.0469    0.0000    3.5727
    2.6998   -4.4894    8.0724  -20.2828   15.0000];
B11t = [-3.5727
    0.9699
   -0.5394
    0.4756
   -1.0000];
C11t=[0     0     0     0     1]';
 
% 
% % Données de la méthode de collocation orthogonale At,Bt,Ct pour les
% % valeurs suivantes : alpha=4,beta=0 , n=4
%
 
A40t = [14.9715    3.3560   -0.5990    0.1106   -0.0099
  -13.2729    4.5175    1.9540   -0.2857    0.0232
   11.3332   -9.3481    3.7785    1.1731   -0.0713
  -21.3633   13.9565  -11.9772    5.5325    0.4228
  109.4040  -65.1525   41.8268  -24.2783    8.2000];
B40t = [-17.8293
    7.0638
   -6.8653
   13.4287
  -70.0000];
C40t=[0 0 0 0 1]';
 
% 
% % Données de la méthode de collocation orthogonale At,Bt,Ct pour les
% % valeurs suivantes : alpha=0,beta=4 , n=4
%
A04t = [ -5.5325   11.9772  -13.9565   21.3633  -13.4287
   -1.1731   -3.7785    9.3481  -11.3332    6.8653
    0.2857   -1.9540   -4.5175   13.2729   -7.0638
   -0.1106    0.5990   -3.3560  -14.9715   17.8293
    0.1574   -0.8215    4.0436  -40.3652   37.0000];
B04t = [-0.4228
    0.0713
   -0.0232
    0.0099
   -0.0143];
C04t=[0 0 0 0 1]';
 
 
disp(num2str(p))
disp(num2str(q))
 
 
if ((p==0)&&(q==0 ))
    A00t
    B00t
    C00t
    dw1 = -1/tau2*(A00t*w1+B00t*u);
    % options = odeset('RelTol',1e-5,'AbsTol',[1e-7 1e-7 1e-7 1e-7 1e-7]);
    % [t,w1] = ode45(@feed11,[0 10],[0 0 0 0 0],options);
    % plot(t,w1)
elseif ((p==1)&&(q==1 ))
    dw1 = -1/tau2*(A11t*w1+B11t*u);
elseif ((p==4)&&(q==0 ))
    dw1 = -1/tau2*(A40t*w1+B40t*u);    
elseif ((p==0)&&(q==4))
    dw1 = -1/tau2*(A04t*w1+B04t*u);
else
    disp('other arguments')
end
 
 
%Ct=[0     0     0     0     1];
% options = odeset('RelTol',1e-5,'AbsTol',[1e-7 1e-7 1e-7 1e-7 1e-7]);
% [t,w1] = ode45(@feed11,[0 10],[0 0 0 0 0],options);
% figure(1)
% plot(t,w1)
% figure(2)
% plot(t,Ct*w1)