Bonjour,

Je suis ingénieur en mécanique des fluides et afin de vérifier des mesures expérimentales, je dois résoudre une équation différentielle du genre : m*(d2z/dt2)+c*(dz/dt)+k*z=F.
J'ai donc décidé de résoudre cette équation sous Maple et la meilleure méthode numérique pour les problèmes de structures est l'algorithme de Newmark.
(disponible page 10 de ce lien : http://www.google.fr/url?sa=t&rct=j&...69620078,d.d2k)

J'ai donc écrit cet algorithme sous Maple mais le logiciel ne me retourne rien et je ne vois pas où est mon erreur. Pourriez-vous m'aider à identifier le problème ?
Ci joint mon code :

Code Maple : 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
with(plots);  with(linalg);  
Newmark=proc(z0,u0,F0); 
local gam,beta,  dt, c, kg,a,b, N, i, dF, dz, du, dw, T, m, k;    
dt:=0.01;  
T:=4;  
N:=T/(dt);  
gam:=0.5;  
beta:=0.25;    
m:=0.320;  
k:=435;  
c:=2; 
z(0):=z0; 
u(0):=u0; 
F(0):=F0; 
w(0):=(1/(m))*(F0-k*z0-c*u0);    
 
t=vector(i,1);  
t[1,1]=0;  
for i from 2 to N do t(i,1)=t(i-1,1)+dt; od;       
 
kg:=k+(gam*c)/(beta*dt)+m/(beta*dt*dt);  
a:=m/(beta*dt)+(gam*c)/(beta);  
b:=  (0.5*m)/(beta)+dt*((0.5*gam)/(beta)-1)*c;   
for i from 2 to N do
dF(i):=diff(F,t)+a*u(i)+b*w(i);  
dz(i):=(dF(i))/(kg);  
du(i):=((gam*dz(i))/(beta*dt))-((gam*u(i-1))/(beta))+dt*(1-gam/(2*beta))*w(i-1);  
dw(i):=((du(i))/(beta*dt*dt))-((u(i-1))/(beta*dt))-((w(i-1))/(2*beta));   
z(i+1)=dz(i)+z(i);  
u(i+1):=du(i)+u(i);  
w(i+1):=dw(i)+w(i);   od;     
plot([z(i), u(i), w(i)],x=0..50,y=-50..50);     
end;

En tapant donc Newmark (2,1,0), Maple me retourne "Newmark(2,1,0)".

Un grand merci à celui ou celle qui peut m'aider.

(PS: au cas où, un lien matlab est disponible sur ce site :http://www.mathworks.com/matlabcentr.../newmark_int.m )