164
10
•
Différences finies en dimension 1
10.2 Oscillations d’un pendule
1. Pour i = 2 ,...,N +1,enchaque x i ,nous avons
u ( t i − 1 ) − 2 u ( t i )+u ( t i +1 )
h 2
−
h
2
12
u
(4)
( t i + u i h )+
sin ( u ( t i )) = f ( t i ). Si nous négligeons le terme
h
2
12
u
(4)
( t i + u i h ), en notant v j l’approximation
correspondante de u ( x j ), il vient :
v i − 1 − 2 v i + v i +1
h 2
+ sin ( v i ) = f ( t i ) , i = 1 ,...,N .
La première et la dernière équation sont un peu particulières. En i = 2, v i − 1 = v 1 = a et de
même en i = N +1, v N +2 = b .Enfin, si on multiplie les équations par h
2
,onpeut alors les écrire
sous la formedusystème AV = h
2
( F − sin ( V )+B où A , F et B sont définies précédemment.
3.
✞
☎
function v=f(t);
v=sin( sin( pi*(t+0.5)))- pi^2*sin( pi*(t+0.5));
✝
✆
✞
☎
function v=u(t);
v=sin( pi*(t+0.5));
✝
✆
2.
4.
5.
6.
7.
pendul5.m
✞
☎
alpha=1;beta=-1;
a=0;b=1;
N=5;
n0=6;
h=(b-a)/(N+1);h2=h*h;
t=(a:h:b)’
t1=t(2:N+1);
F=f(t1)
U=u(t)
A=-2*diag(ones(1,N))+diag(ones(1,N-1),1)+ diag(ones(1,N-1),-1)
Y0= zeros(N,1);
B=zeros(N,1);
B(1)=alpha;B(N)=beta;
for j=1:n0
Z=h2*(F-sin(Y0))-B;
Y1=A\Z;
erriter(j)= norm(Y1-Y0,inf);
Y0=Y1;
end;
erriter
Vh=[alpha;Y1;beta];
erreur= norm(U-Vh,inf)
tt=a:(b-a)/500:b;
plot(t,Vh,’rx’,tt,u(tt))
title(’Positionduupendule’)
✝
✆
Précédent

- 143/188

Suivant