Chapitre 1
Suites num´ eriques
Ce chapitre fait ´echo avec le TD1 de l’UE Analyse S3.
1.0.1 D´efinition et construction
Une suite est g´en´eralement not´ee (un)n∈I, o`u I est l’ensemble de d´efinition de la suite D’un point de vue informatique, on peut se fixer un entier N et calculer u1, . . . , uN. Pour cela, on peut d’abord r´eserver la place pour N ´el´ements de la suite, en allouant un tableau de tailleN :
>N:=10:u:=array(1..N):
G´en´eralement, pour calculerun(en Maple, ce sera alorsu[N]), pour unndonn´e appartenant
`
a{1, . . . , N},
– soit on dispose d’une formule en fonction den
– soitun est d´etermin´e par u1, . . . , un−1, qui sont d´ej`a calcul´es normalement.
Exercice 1. Soit (un)n∈N\{0,1} la suite d´efinie par u2= 1− 212 et pour n≥3 un=
1− 1
22
· · ·
1− 1 n2
.
Trouver une formule pour un. PourN donn´e, ´ecrire une proc´edure suite1(N)qui renvoie le N-i`eme terme de la suite avec la formule trouv´ee. La tester pour N=2,. . .,10. Intuiter alors une formule pour N pair, puis pour N impair. Ecrire ensuite une une deuxi`eme proc´edure suite2(N) qui utilise cette formule trouv´ee. V´erifier que les deux proc´edures donnent le mˆeme r´esultat pour N=2,. . .,50. Quelle est la proc´edure la plus rapide ? Si n´ecessaire, modi- fier les proc´edures pour qu’elles n’allouent pas de m´emoire de tableau. Ecrire une proc´edure suite3(N)qui renvoie une approximation num´erique desN premiers ´el´ements de la suite (i.e u2, . . . , uN+1) sous forme d’une liste. Appliquer cette proc´edure pour N = 100. Quel semble ˆ
etre le comportement de la suite (sens de variation, valeur limite) ? 1.0.2 Repr´esentation graphique
On peut vouloir repr´esenter une suite. Pour cela, on peut repr´esenterun en fonction den.
1
2 CHAPITRE 1. SUITES NUM ´ERIQUES
Figure 1.1 – Figure pour l’Exercice 2
Exercice 2. Ecrire une proc´edure affichesuite(yL,xL)qui prend deux listes en param´etre (qui sont suppos´es ˆetre de mˆeme taille) et qui affiche la repr´esentation graphique des points correspondants qui seront reli´es par un segment. Repr´esenter alors la suite de l’Exercice 1.
V´erifier alors graphiquement le comportement de cette suite.
Une classe importante de suites s’´ecrit sous la forme un+1=f(un),
o`uf est une fonction donn´ee. On repr´esente alors les points (un, un),(un, un+1), . . . reli´es par des segments.
Exercice 3. Ecrire une proc´edureaffichesuitef(N,u0,f,a,b)qui donne la representation graphique def sur l’intervalle[a, b](en bleu), superpos´e `a la droite d’´equationy=x (en noir) ainsi que les points(un, un),(un, un+1), . . . reli´es par des segments, pourn= 0, . . . , N−1 (en rouge).
Exercice 4. On consid`ere poura >0 la suite un d´efinie par u0 >0 et un+1 = 1
2
un+ a un
Faire une repr´esentation graphique dans un cas o`uunest d´ecroissante pour toutn∈Net dans un cas o`u un n’est pas d´ecroissante pour tout n ∈ N. Montrer que un est d´ecroissante pour n≥1, puis que un converge vers √
a. Pour a= 10et u0 = 3, afficher un−√
a, n= 0, . . .50.
Que remarque-t-on ? Essayer de retrouver les valeurs : u0−√
10' −0.162 u1−√
10'4.39·10−3 u2−√
10'3.04·10−6 u3−√
10'1.46·10−12 u4−√
10'3.38·10−25 u5−√
10'1.81·10−50 Pourquoi ne peut-on pas donner la valeuru50−√
10? Exercice 5. On consid`ere les 2 suites suivantes
un= 1 + 1/1! + 1/2! +· · ·+ 1/n!, vn=un+ 1/n!
Repr´esenter un et vn en fonction de n. Que remarque-t-on ?
3
Figure 1.2 – Figure pour l’Exercice 4
Figure 1.3 – Figure pour l’Exercice 5 Exercice 6. Repr´esenter graphiquement les suites suivantes
– un=un−1+ 1/un−1,u0= 1 – un= (−1)n−1/n, n≥1
– un= (n+ 1)(n+ 2)(n+ 3)/n3, n≥1 – un= 2n/(2n−1), n≥1
– un= 2n+12n+3+3n+1n , n≥1 – un= 1 + 22+· · ·+n2,n≥1
4 CHAPITRE 1. SUITES NUM ´ERIQUES
Figure 1.4 – Figure pour l’Exercice 6
1.1. CORRECTION 5
1.1 Correction
##########################
#Exercice 1 suite1:=proc(N)
local u,n:
u:=array(1..N):
u[2]:=1-1/2**2:
for n from 3 to N do
u[n]:=(1-1/n**2)*u[n-1]:
od:
u[N];
end proc:
[seq(suite1(k),k=2..10)];
#resultat: [3/4, 2/3, 5/8, 3/5, 7/12, 4/7, 9/16, 5/9,11/20]
#N pair: u[N]=(N+1)/(2*N)
#formule reste vraie pour N impair suite2:=proc(N)
(N+1)/(2*N);
end proc:
[seq(suite1(k)-suite2(k),k=2..50)];
suite1bis:=proc(N) local u,n:
u:=1-1/2**2:
for n from 3 to N do u:=(1-1/n**2)*u:
od:
u;
end proc:
[seq(suite1bis(k)-suite2(k),k=2..50)];
suite3:=proc(N) local u,n:
u:=array(2..N+1):
u[2]:=1-1/2**2:
for n from 3 to N+1 do u[n]:=(1-1/n**2)*u[n-1]:
od:
[seq(evalf(u[n]),n=2..N+1)];
6 CHAPITRE 1. SUITES NUM ´ERIQUES end proc:
suite3(100);
########################
#Exercice 2
affichesuite:=proc(yL,xL)
plot([seq([xL[i],yL[i]],i=1..nops(xL))]);
end proc:
U:=suite3(100):affichesuite(U,[seq(i,i=2..101)]);
########################
#Exercice 3 with(plots):
affichesuitef:=proc(N,u0,f,a,b) u:=array(0..N):
u[0]:=u0:
for i to N do
u[i]:=evalf(f(u[i-1])):
od:
L:=array(0..2*N-1):
for i from 0 to N-1 do L[2*i]:=[u[i],u[i]]:
L[2*i+1]:=[u[i],u[i+1]]:
od:
Lplot:=plot([seq(L[i],i=0..2*N-1)],color=red):
fplot:=plot(f,a..b,color=blue):
Dplot:=plot(x,x=a..b,color=black):
display(Lplot,fplot,Dplot);
end proc:
a:=2:
affichesuitef(10,0.1,x->(x+a/x)/2,0.05,10);
affichesuitef(10,100,x->(x+a/x)/2,1.2,100);
########################
#Exercice 4
computef:=proc(N,u0,f) u:=array(0..N):
u[0]:=u0:
for i to N do
u[i]:=evalf(f(u[i-1])):
od:
[seq(u[i],i=0..N)];
end proc:
computef2:=proc(N,u0,f) u:=array(0..N):
u[0]:=u0:
for i to N do u[i]:=f(u[i-1]):
od:
[seq(u[i],i=0..N)];
1.1. CORRECTION 7 end proc:
a:=10:N:=50:U:=computef(N,3,x->(x+a/x)/2);
[seq(evalf(U[i]-sqrt(a)),i=1..N+1)];
N:=5:U:=computef2(N,3,x->(x+a/x)/2);
[seq(evalf(U[i]-sqrt(a),100),i=1..N+1)];
#On remarque que la valeur 0 est donnee des N=3, car la precision est limitee
#a 10 chiffres significatifs
#par defaut. On peut alors chercher a faire les calculs exacts (fractions) puis
#faire une evaluation avec un
#Digits plus grand. On remarque alors bien qu’a chaque etape, on multiplie par 2
# le nombre de chiffres significatifs.
#Neanmoins, on ne peut pas calculer jusqu’a N=50, les calculs seraient trop longs.
###########################
#Exercice 5 suite4:=proc(N)
u:=array(0..N):
u[0]:=1:
for i to N do
u[i]:=u[i-1]+1/i!;
end:
[[seq(u[i],i=0..N)],[seq(u[i]+1/i!,i=0..N)]];
end proc:
U:=suite4(100):
affichesuite2:=proc(yL,a,b,col)
plot([seq([i,yL[i+1]],i=a..b)],color=col);
end proc:
a:=0:
b:=12:
G1:=affichesuite2(U[1],a,b,red):
G2:=affichesuite2(U[2],a,b,blue):
display(G1,G2);
########################
#Exercice 6 suite5:=proc(N)
u:=array(0..N):
u[0]:=1:
for i to N do
u[i]:=evalf(u[i-1]+1/u[i-1]);
end:
[seq(u[i],i=0..N)];
end proc:
U:=suite5(100);
affichesuite2(U,0,100,red);
U:=[0,seq((-1)**(n-1)/n,n=1..100)]:
affichesuite2(U,1,100,red);
8 CHAPITRE 1. SUITES NUM ´ERIQUES U:=[0,seq((n+1)*(n+2)*(n+3)/n**3,n=1..100)]:
affichesuite2(U,1,100,red);
U:=[0,seq((n+1)*(n+2)*(n+3)/n**3,n=1..100)]:
affichesuite2(U,1,100,red);
U:=[0,seq((2**(n+1)+3**(n+1))/(2**n+3**n),n=1..100)]:
affichesuite2(U,1,100,red);
U:=[0,seq(add(k**2,k=1..n),n=1..10)]:
Chapitre 2
Compl´ ements sur les suites
Exercice 7. Repr´esenter graphiquement la suite un= 1n+ (−1)n. Que remarque-t-on ? Exercice 8. (Suite de C´esaro) Ecrire une proc´edure qui renvoie la repr´esentation graphique d’une suite un et de
Pn 1uk
n sur le mˆeme graphique. Tester cette proc´edure pour un = √n n et un= (−1)n. Que remarque-t-on ?
Exercice 9. Ecrire une proc´edure qui prend pour argument une fonction f, 2 r´eels a < b et un entier N, qui renvoie 1 si on a
– f([a, b])⊂[a, b]
– max[a,b]|f0|<1.
et0sinon. La v´erification se fera non pas pour toutx∈[a, b](ce qui est a priori impossible !), mais sur une discr´etisation uniforme de l’intervalle [a, b]donn´ee par x=a+k(b−a)/N, k= 0, . . . , N. Ainsi, on devrait avoir le bon r´esultat lorsque N est assez grand.
Donner alors des repr´esentations graphiques de suites convergente et monotone, convergente et non monotone et non convergentes de la forme un+1 = f(un) et comparer avec ce que donne la proc´edure pr´ec´edente.
Exercice 10. Regarder les suites suivantes – un=n1/n
– un= (1 +n1)n
– a, b∈R, un=an vn=nb
9
10 CHAPITRE 2. COMPL ´EMENTS SUR LES SUITES
Figure 2.1 – Figure pour l’Exercice 7
Figure2.2 – Figures pour l’Exercice 8
11
Figure2.3 – Figures pour l’Exercice 9
12 CHAPITRE 2. COMPL ´EMENTS SUR LES SUITES
Figure2.4 – Figures pour l’Exercice 10
13
########################
#Exercice 1
affichesuite:=proc(f,a,b)
X:=[seq(k,k=a..b)]:fX:=map(f,X):
plot([seq([X[i],fX[i]],i=1..b-a+1)]);
end proc:
affichesuite(x->1/x+(-1)**x,1,100);
#On remarque que la suite ne converge pas.
########################
#Exercice 2 cesaro:=proc(U)
N:=nops(U):
V:=array(1..N):
tmp:=0.:
for i to N do
tmp:=evalf(tmp+U[i]):
V[i]:=evalf(tmp/i):
od:
G1:=plot([seq([k,U[k]],k=1..N)],color=blue):
G2:=plot([seq([k,V[k]],k=1..N)],color=red):
display(G1,G2);
end proc:
cesaro([seq(k**(1/k),k=1..1000)]);
cesaro([seq((-1)**k,k=1..10)]);
########################
#Exercice 3
testsuite:=proc(f,a,b,N)
X:=[seq(a+k*(b-a)/N,k=0..N)]:
fX:=map(f,X):
for i from 1 to N+1 do
if (evalf(fX[i]-b)>0. or evalf(fX[i]-a)<0.) then return 0;end;
od:
df:=f(x):df:=diff(df,x):df:=unapply(df,’x’):
dfX:=map(df,X):
for i from 1 to N+1 do
if (evalf(abs(dfX[i])-1.)>=0.) then return 0;end;
od:
return 1:
end proc:
testsuite(x->cos(x),0,1,10);
testsuite(x->(x+2/x)/2,1,2,10);
#debut rappel
affichesuitef:=proc(N,u0,f,a,b) u:=array(0..N):
14 CHAPITRE 2. COMPL ´EMENTS SUR LES SUITES u[0]:=u0:
for i to N do
u[i]:=evalf(f(u[i-1])):
od:
L:=array(0..2*N-1):
for i from 0 to N-1 do L[2*i]:=[u[i],u[i]]:
L[2*i+1]:=[u[i],u[i+1]]:
od:
Lplot:=plot([seq(L[i],i=0..2*N-1)],color=red):
fplot:=plot(f,a..b,color=blue):
Dplot:=plot(x,x=a..b,color=black):
display(Lplot,fplot,Dplot);
end proc:
#fin rappel
affichesuitef(10,0.1,x->(x+2/x)/2,0.05,10);
affichesuitef(10,0.1,x->cos(x),0.05,1);
affichesuitef(100,0.5,x->x*(1-x),0,1);
affichesuitef(4,0.1,x->5*x*(1-x),-1.6,1.5);
########################
#Exercice 4
affichesuite(x->x**(1/x),1,100);
affichesuite(x->(1+1/x)**x,1,100);
a:=0.1:affichesuite(x->a**x,1,100);
b:=0.1:affichesuite(x->x**b,1,100);
Chapitre 3
S´ eries num´ eriques
Soit (un)n∈N. La s´erie de terme g´en´eral un not´eeP
n∈Nunest donn´ee par la suite (Sk)k∈N
d´efinie par
Sk=u0+· · ·+uk, k ∈N, On note aussiP+∞
n∈Nun, la limite de la suite (Sk)k∈N, si cette limite existe.
On peut remplacern∈Nparn≥n0, pour dire que la s´erie ne commence qu’`a l’indicen0. Souvent le terme g´en´eral est donn´e par une formule.
Exercice 11. Ecrire une proc´edure serie(f,a,b,n0) qui renvoie la s´erie P
n≥n0f(n) sous forme d’une liste[Sa, Sa+1. . . , Sb]. La tester pour v´erifier que
n
X
k=1
1
k −ln(n)→γ, o`uγ est la constante d’Euler d´efinie en Maple pargamma.
Exercice 12. (S´eries de Riemann) La s´erie de Riemann est donn´ee parP
n≥1 1
nα. Repr´esenter graphiquement la s´erie pour diff´erentes valeurs de α. V´erifier visuellement les cas de conver- gence/divergence. Repr´esenter dans la mesure du possible la fonction α → P∞
n≥1 1 nα. On pourra aussi tracer sur le mˆeme graphique la s´erie en fonction de n pour diff´erentes valeurs deα ou faire une animation en fonction deα.
Exercice 13. (une suite de s´eries) Repr´esenter graphiquement les s´eries suivantes et ´etudier la nature. V´erifier l’ad´equation avec les r´esultats graphiques.
– un= nn2+12 , vn=√
n2+n−n, wn=arcsin(nn33+1+2).
– tn=e−
√n, un= ln(n+1)1 , vn= ln(n)n2 , wn= 1
2n2, xn= (√n 2 + √n
3)−n2, yn= 1
n1+ 1n. – un= n+
√n
2n3−1, vn= sin3(n1)
15
16 CHAPITRE 3. S ´ERIES NUM ´ERIQUES
Figure3.1 – Figures pour les Exercices 13 et 12
3.1. CORRECTION 17
3.1 Correction
########################
#Exercice 1
serie:=proc(f,a,b,n0) S:=array(n0..b):
tmp:=0.:
for n from n0 to b do tmp:=evalf(tmp+f(n)):
S[n]:=tmp:
od:
[seq(S[n],n=a..b)];
end proc:
N:=100:L:=serie(x->1/x,1,N,1):
seq(evalf(L[n]-ln(n)-gamma),n=N-5..N);
########################
#Exercice 2
#N:=100:alpha:=2:L:=serie(x->1/x**alpha,1,N,1);
g:=sum(1/k**alpha,k=1..infinity):
a:=1.1:b:=10.:
G1:=plot(g,alpha=a..b,color=red):
N:=10:xalpha:=[seq(a+k*(b-a)/N,k=0..N)]:
#N:=100:xalpha:=[seq(a+k*(b-a)/N,k=0..N)]:
for k from 1 to N+1 do
L:=serie(x->1/x**xalpha[k],100,100,1):falpha[k]:=L[1]:
#L:=serie(x->1/x**xalpha[k],1000,1000,1):falpha[k]:=L[1]:
od:
G2:=plot([seq([xalpha[k],falpha[k]],k=1..N+1)],color=blue):
display([G1,G2]);falpha[N+1];
########################
#Exercice 3
L:=serie(x->x**2/(x**2+1),1,100,1):
plot([seq([k,L[k]],k=1..100)],color=blue);
L:=serie(x->sqrt(x**2+x)-x,1,100,1):
plot([seq([k,L[k]],k=1..100)],color=blue);
L:=serie(x->arcsin((x**3+1)/(x**3+2)),1,100,1):
plot([seq([k,L[k]],k=1..100)],color=blue);
L:=serie(x->exp(-sqrt(x)),1,100,1):
plot([seq([k,L[k]],k=1..100)],color=blue);
L:=serie(x->1/ln(x+1),1,100,1):
plot([seq([k,L[k]],k=1..100)],color=blue);
L:=serie(x->ln(x)/x**2,1,100,1):
plot([seq([k,L[k]],k=1..100)],color=blue);
L:=serie(x->1/2**(x**2),1,100,1):
plot([seq([k,L[k]],k=1..100)],color=blue);
L:=serie(x->(2**(1/x)+3**(1/x))**(-x**2),1,100,1):
plot([seq([k,L[k]],k=1..100)],color=blue);
18 CHAPITRE 3. S ´ERIES NUM ´ERIQUES L:=serie(x->1/(x**(1+1/x)),1,100,1):
plot([seq([k,L[k]],k=1..100)],color=blue);
L:=serie(x->(x+sqrt(x))/(2*x**3-1),1,100,1):
plot([seq([k,L[k]],k=1..100)],color=blue);
L:=serie(x->sin(1/x)**3,1,100,1):
plot([seq([k,L[k]],k=1..100)],color=blue);
Chapitre 4
Compl´ ement sur les s´ eries
Exercice 14. On consid`ere les s´eries de terme g´en´eralun= (−1)√nn etvn= ln(1+un). Essayer de mettre en ´evidence num´eriquement la divergence ou convergence des deux s´eries.
Exercice 15. D´eterminer la nature des s´eries suivantes et v´erifier la coh´erence du r´esultat avec Maple.
– un= (−1)n n2n2, vn= sin 1n+n π
, wn= sin(π√ n+ 1), – un= cos(n)n2 , vn= cos(n)n , wn= cosn2(n), tn= cos(na) ln(n)√
n , a∈R, – un= n3/4(−1)+cos(n)n ,
– un= αnβ(−1)
n
n , α∈R, β >0.
Suppl´ement : lorsqu’il y a convergence essayer d’estimer la vitesse de convergence, graphique- ment.
Exercice 16. (Suppl´ement) On consid`ere la s´erie de terme g´en´eral un = (−1)nn et vn =
cos(n√ 2π)
n . Ces s´eries ne sont pas commutativement convergentes. Illustrer-le avec Maple.
19
20 CHAPITRE 4. COMPL ´EMENT SUR LES S ´ERIES
Figure 4.1 – Figure pour l’Exercice 14
Figure 4.2 – Figure pour l’Exercice 15
4.1. CORRECTION 21
4.1 Correction
#Exercice 1
serie:=proc(f,a,b) S:=array(a..b):
tmp:=0.:
for n from a to b do tmp:=evalf(tmp+f(n)):
S[n]:=tmp:
od:
S;
end proc:
N:=100:U:=serie(x->(-1)**x/sqrt(x),2,N):
V:=serie(x->ln(1+(-1)**x/sqrt(x)),2,N):
plot([seq([n,evalf(exp(2*abs(U[n])))],n=2..N)],color=blue);
plot([seq([n,evalf(exp(2*abs(V[n])))],n=2..N)],color=red);
########################
#Exercice 2 N:=100:
U:=serie(x->(-1)**x*x**2/2**x,1,N):
plot([seq([n,U[n]],n=1..N)],color=blue);
U:=serie(x->sin((1/x+x)*Pi),1,N):
plot([seq([n,U[n]],n=1..N)],color=blue);
U:=serie(x->sin(Pi*sqrt(x**2+1)),1,N):
plot([seq([n,U[n]],n=2..N)],color=blue);
U:=serie(x->cos(x)/x**2,1,N):
plot([seq([n,U[n]],n=1..N)],color=blue);
U:=serie(x->cos(x)/x,1,N):
plot([seq([n,U[n]],n=1..N)],color=blue);
U:=serie(x->cos(x)**2/x,1,N):
plot([seq([n,exp(abs(2*U[n]))],n=1..N)],color=blue);
N:=1000:
a:=Pi:U:=serie(x->cos(x*a)*ln(x)/sqrt(x),1,N):
plot([seq([n,U[n]],n=N-30..N)],color=blue);
N:=100:
U:=serie(x->(-1)**x/(x**(3/4)+cos(x)),1,N):
plot([seq([n,U[n]],n=1..N)],color=blue);
N:=200:
22 CHAPITRE 4. COMPL ´EMENT SUR LES S ´ERIES alpha:=-1.:beta:=1:U:=serie(x->alpha**x*beta**((-1)**x)/x,1,N):
G1:=plot([seq([n,exp(abs(U[n]))],n=1..N)],color=blue):
alpha:=-1.:beta:=1.3:U:=serie(x->alpha**x*beta**((-1)**x)/x,1,N):
G2:=plot([seq([n,exp(abs(U[n]))],n=1..N)],color=red):
4.2 Correction de l’exercice 16
serie:=proc(f,a,b) S:=array(a..b):
tmp:=0.:
for n from a to b do tmp:=evalf(tmp+f(n)):
S[n]:=tmp:
od:
S;
end proc:
serie2:=proc(f,a,b,phi) S:=array(a..b):
T:=phi(a,b):
tmp:=0.:
for n from a to b do tmp:=evalf(tmp+f(T[n])):
S[n]:=tmp:
od:
S;
end proc:
serie2f:=proc(f,a,b,phif) S:=array(a..b):
T:=phif(a,b,f):
tmp:=0.:
for n from a to b do tmp:=evalf(tmp+f(T[n])):
S[n]:=tmp:
od:
S;
end proc:
phi:=proc(a,b) T:=array(a..b):
s:=a:t:=a+1:
for i from a to b do
if(i mod 10<>0)then T[i]:=s:s:=s+2:
else T[i]:=t:t:=t+2:end:
od:
T
end proc:
4.2. CORRECTION DE L’EXERCICE?? 23 phif:=proc(a,b,f)
T:=array(a..b):
U:=array(a..b):
S:=array(a..b):
s:=a:t:=a:i:=a:
while (s<=b and t<=b and i<=10*(b-a)) do if(f(i)>=0 and s<=b)then T[s]:=i:s:=s+1:
elif(f(i)<0 and t<=b)then U[t]:=i:t:=t+1:
end:
i:=i+1:
od:
if(s<=b and t<=b)then error "non semi-convergent\n";end:
s:=a:t:=a:
for i from a to b do
if(i mod 100 =0)then S[i]:=U[t]:t:=t+1:
else S[i]:=T[s]:s:=s+1:
end:
od:
S;
end proc:
N:=1000:
a:=evalf(Pi):U:=serie(x->cos(x*a)/x,1,N):
#a:=evalf(sqrt(2)*Pi):U:=serie(x->cos(x*a)/x,1,N):
V:=serie2(x->cos(x*a)/x,1,N,phi):
W:=serie2f(x->cos(x*a)/x,1,N,phif):
G1:=plot([seq([n,U[n]],n=1..N)],color=blue):
G2:=plot([seq([n,V[n]],n=1..N)],color=red):
G3:=plot([seq([n,W[n]],n=1..N)],color=black):
display([G1,G2,G3]);
24 CHAPITRE 4. COMPL ´EMENT SUR LES S ´ERIES
Figure 4.3 – Figure pour l’Exercice 16
Chapitre 5
Evaluation Suites/S´ eries
Exercice 17. (4 points) Donner l’exemple d’une suite (un) qui tend vers z´ero et dont la s´erie ne converge pas. Illustrer avec Maple, en faisant un graphique de la suite et un graphique de la s´erie en fonction de n.
Exercice 18. (6 points) On consid`ere la suite un = an!n. Pour une valeur de a donn´ee, tracer un+1u
n en fonction den. Tracer aussi la s´erie de terme g´en´eralunen fonction de n. Que remarque-t-on ou devrait-on remarquer ? Bonus : faire une animation sur plusieurs valeurs dea des2 graphiques pr´ec´edents.
Exercice 19. (10 points)On d´efinit pour n∈N Wn =Rπ/2
0 cosn(x)dx. Que valent W0 et W1? V´erifier avec Maple que pour 2≤n≤N, on a
nWn= (n−1)Wn−2.
On prendra dans la pratique N = 10, mais on doit pouvoir facilement modifier cette valeur.
Comment pourrait-on montrer ce r´esultat math´ematiquement ?
V´erifier ensuite (`a nouveau pour toutes les valeurs plus petites qu’un nombre que l’on se fixe) W2p = π
2 (2p)!
22p(p!)2, W2p+1= 22p(p!)2 (2p+ 1)!
Comment pourrait-on montrer ce r´esultat math´ematiquement ? Repr´esenter graphiquement la suite(n+1)WnWn+1en fonction den. Que remarque-t-on ? comment pourrait-on le montrer ? On admettra queWn+1 ∼Wn. Repr´esenter graphiquement la suite WWn+1
n en fonction den. Que doit-on alors remarquer ? Est-ce bien le cas ? Montrer en uitlisant des r´esultats pr´ec´edents que
Wn∼ r π
2n (5.1)
et v´erifier ceci graphiquement. On admet que l’on a n!∼C√
nn e
n
,
o`u la constante C est `a d´eterminer. Essayer de d´eterminer la constante C en faisant une repr´esentation graphique. Retrouver la constante en utilisant l’´equivalent (5.1).
25
26 CHAPITRE 5. EVALUATION SUITES/S ´ERIES
5.1 Correction
#Exercice 1
suite:=proc(f,a,b) U:=array(a..b):
for i from a to b do U[i]:=evalf(f(i)):
od:
U:
end proc:
serie:=proc(f,a,b) S:=array(a..b):
S[a]:=evalf(f(a)):
for i from a+1 to b do S[i]:=evalf(f(i))+S[i-1]:
od:
S:
end proc:
plotarray:=proc(Y,a,b,col) plot([seq([i,Y[i]],i=a..b)]):
end proc:
with(plots):
N:=100:
U:=suite(x->1/x,1,N):
S:=serie(x->1/x,1,N):
plotarray(U,1,N);
plotarray(S,1,N);
plotarray(map(x->exp(abs(x)),S),1,N);
plotarray(map(x->exp(abs(x)),U),1,N);
########################
#Exercice 2
plotarray2:=proc(Y,a,b,col)
plot([seq([i,Y[i]],i=a..b)],color=col):
end proc:
dalembert:=proc(f,a,b) U:=array(a..b):
for i from a to b do
U[i]:=evalf(f(i+1)/f(i)):
od:
U:
end proc:
N:=20:
a:=0.5:#a:=1.:a:=1.5:a:=4.:
U:=dalembert(x->a**x/x!,1,N):
S:=serie(x->a**x/x!,1,N):
G1:=plotarray2(U,1,N,blue):G2:=plotarray2(S,1,N,red):
display([G1,G2]);
5.1. CORRECTION 27
#pour l’animation
A:=[seq(0.1+(4-0.1)/10*i,i=0..10]:
G:=array(0..10):
for i from 0 to 10 do a:=A[i+1]:
U:=dalembert(x->a**x/x!,1,N):
S:=serie(x->a**x/x!,1,N):
G1:=plotarray2(U,1,N,blue):G2:=plotarray2(S,1,N,red):
G[i]:=display([G1,G2]);
od:
plot([seq(G[i],i=0..10)],insequence=true);
########################
#Exercice 3
W:=n->int(cos(x)**n,x=0..Pi/2):
N:=10:
0,W(0)-Pi/2;1,W(1)-1;
for n from 2 to N do n,n*W(n)-(n-1)*W(n-2);
od;
for p to N/2 do
2*p,(Pi/2)*(2*p)!/(2**(2*p)*(p!)**2)-W(2*p);
od;
for p from 0 to N/2 do
2*p+1,2**(2*p)*(p!)**2/(2*p+1)!-W(2*p+1);
od;
plot([seq([n,(n+1)*W(n)*W(n+1)],n=0..10)]);
plot([seq([n,W(n+1)/W(n)],n=0..20)]);
G1:=plot([seq([ln(n),ln(abs(W(n)))],n=1..200)],color=red):
G2:=plot([seq([ln(n),ln(sqrt(Pi/(2*n)))],n=1..200)],color=blue):
display(G1,G2);
plot([seq([n,evalf(n!/(sqrt(n)*(n/exp(1))**n))],n=1..20)]);
evalf(sqrt(2*Pi));
plot([seq([n,evalf(n!/(sqrt(n)*(n/exp(1))**n)/(sqrt(2*Pi)))],n=1..200)]);
28 CHAPITRE 5. EVALUATION SUITES/S ´ERIES
Figure 5.1 – Figure pour l’Exercice 17
5.1. CORRECTION 29
Figure 5.2 – Figure pour l’Exercice 18
30 CHAPITRE 5. EVALUATION SUITES/S ´ERIES
Figure 5.3 – Figure pour l’Exercice 19
Chapitre 6
Les matrices
Dans ce chapitre, on apprend comment manipuler les matrices `a l’aide de Maple.
6.1 D´ efinition
On utilise d’abord lepackageLinearAlgebra, grˆace `a la commandewith(LinearAlgebra) : Nous avons alors acc`es `a diff´erentes fonctions relatives `a l’alg`ebre matricielle.
6.1.1 Une matrice
Une matriceM est d´efinie `a l’aide de son nombre de lignes n, son nombre de colonnes m et den·m coefficients qui peuvent ˆe tre des entiers, des r´eels, des complexes, des polynˆomes, voire autre chose...
On peut ´ecrire A :=Matrix([[1,2,4],[6,8,9]]) ;pour d´efinir la matrice
"
1 2 4 6 8 9
# . Il peut ˆetre int´eressant de savoir g´en´erer rapidement des matrices d’une taille donn´ee.
Les commandes suivantes g´en`erent respectivement une matrice de taille 5×3 dont les coeffi- cients sont entiers, resp. r´eels dans l’intervalle [0,1].
RandomMatrix(5,3,generator=0..1);
RandomMatrix(5,3,generator=0..1.);
On acc`ede `a l’´el´ement a2,3 d’une matrice A(s’il existe), par la commande A[2,3] ; Il peut ˆetre commode de d´efinir certaines matrices bien connues.
Ainsi pour la matrice
1 0 0 0 1 0 0 0 1
, on peut ´ecrire IdentityMatrix(3,3) ; tandis que l’on
peut ´ecrire DiagonalMatrix([1,2,3]) ;pour la matrice
1 0 0 0 2 0 0 0 3
.
Une fois une matriceAd´efinie, on acc`ede au nombre de lignes par RowDimension(A) ;et au nombre de colonnes parColumnDimension(A) ;
Remarquons que l’on peut aussi d´efinir/manipuler une matrice par blocs : 31
32 CHAPITRE 6. LES MATRICES A:=RandomMatrix(7,9):
AA:=Matrix([[A[1..4,1..4],A[1..4,5..9]],[A[5..7,1..4],A[5..7,5..9]]]):AA-A;
A[1..3,1..3]:=IdentityMatrix(3):A;
Avant d’´ecrire les lignes de programme pr´ec´edentes, qu’est-ce qui devrait s’afficher ? Pour- quoi ? V´erifier le.
Enfin, on peut initialiser une matrice de taille 5×6 par 0, en ´ecrivant Matrix(5,6) ; Pour faire une recopie d’une matrice A dans la matrice B, on ´ecritB :=Matrix(A) : La matrice de van Der Monde de taille 5 est donn´ee parMatrix(5,(i,j)->x[j]**(i-1)) ; Exercice 20. D´efinir les matrices suivantes :
1 b 0 0 0 a 1 b 0 0 0 a 1 b 0 0 0 a 1 b 0 0 0 a 1
,
a1 a2 a3 a4 a5 a2 a3 a4 a5 a1
a3 a4 a5 a1 a2
a4 a5 a1 a2 a3 a5 a1 a2 a3 a4
,
1 1/2 1/3 1/4 1/5 1/2 1/3 1/4 1/5 1/6 1/3 1/4 1/5 1/6 1/7 1/4 1/5 1/6 1/7 1/8 1/5 1/6 1/7 1/8 1/9
.
On s’arrangera pour que l’on puisse facilement ce type de matrices pour une autre valeur n que5.
6.1.2 Vecteurs, matrices et op´erations
On peut ´egalement d´efinir des vecteurs colonnes<1,2,3> :et des vecteurs lignes<1|2|3> : SiAest une matrice de taille 5×3,A[1,1..3]est un vecteur ligne qui correspond `a la premi`ere ligne de la matriceA.
Le produit entre matrices/vecteurs est donn´e par A.B La multiplication par un scalaire se fait par*.
On notera ausi les op´erations suivantes : Determinant(A) ;Transpose(A) ; Pour une matriceA= (ai,j), on d´efinit aussiNorm(A), le nombre maxi,j|ai,j|.
6.2 Calculs de d´ eterminants
Exercice 21. Soienta etb des r´eels. Pourn≥2, on note Bn le d´eterminant suivant :
Bn=
a+b a 0
b . .. ...
. .. ... a
0 b a+b
.
V´erifier avec Maple que l’on a Bn = (a+b)Bn−1−abBn−2, pour n ≥ 4. (On le fera pour tout n ≤N, o`u N est un entier que l’on se fixe). V´erifier ensuite (toujours avec Maple) la formule
Bn= an+1−bn+1 a−b , poura6=b. Etudier le cas a=b.
6.3. CORRECTION 33
6.3 Correction
########################
#Exercice 1
with(LinearAlgebra):
N:=5:
A1:=Matrix(N,N,0):
for i to N do A1[i,i]:=1:
od:
for i from 2 to N do A1[i,i-1]:=a:
A1[i-1,i]:=b:
od:
A1;
A2:=Matrix(N,(i,j)->a[(i+j-2) mod N +1]);
A3:=Matrix(N,(i,j)->1/(i+j-1));
########################
#Exercice 2
DetB:=proc(N,a,b) B:=Matrix(N,N,0):
for i to N do B[i,i]:=a+b:
od:
for i from 2 to N do B[i,i-1]:=b:
B[i-1,i]:=a:
od:
Determinant(B):
end proc:
N:=10:L:=array(4..N):
for n from 4 to N do
L[n]:=simplify(DetB(n,a,b)-(a+b)*DetB(n-1,a,b)+a*b*DetB(n-2,a,b));
od:
seq(L[i],i=4..N);
L:=array(1..N):
for n from 1 to N do
L[n]:=simplify(DetB(n,a,b)-(a**(n+1)-b**(n+1))/(a-b)):
od:
seq(L[i],i=1..N);
#Cas ou a=b
n:=10:A:=simplify((a**(n+1)-b**(n+1))/(a-b)):A:=subs(b=a,A);#(n+1)a**n L:=array(1..N):
for n from 1 to N do
L[n]:=simplify(DetB(n,a,a)-(n+1)*a**n):
od:
seq(L[i],i=1..N);
34 CHAPITRE 6. LES MATRICES
Chapitre 7
Autres exemples de matrices
7.1 Matrice et inverse ` a coefficients entiers
On cherche `a construire des matrices `a coefficients entiers inversibles dont l’inverse est `a coefficients entiers.
Exercice 22. Ecrire une proc´edureE(i,j,N)qui renvoie la matrice ”´el´ementaire”Ei,j. C’est une matrice de taille N qui vaut 1 `a la position (i, j) et 0 ailleurs. V´erifier avec maple que toute matrice de taille ≤N (o`u N est une valeur fix´ee que l’on pourra facilement modifier) s’´ecrit comme combinaison lin´eaire des matrices ´el´ementaires.
Exercice 23. Pour une valeur de N donn´ee, d´efinir une matrice triangulaire sup´erieure de mani`ere g´en´erale. Calculer son inverse. Que remarque-t-on ? Quelles sont les possibilit´es de valeurs pour les termes diagonaux, si l’on souhaite que la matrice et son inverse soient `a coefficients entiers ?
Exercice 24. On consid`ere une matrice de transvection Id±Ei,j, aveci6=j. Cette matrice est-elle inversible ? Est-elle `a coefficients entiers ? Et que peut-on dire de son inverse (s’il existe) ? PourN donn´e combien y-a-t-il de matrices de transvections ? Ecrire une proc´edure transvect(N)qui pour N donn´e renvoie la liste de toutes les matrices de transvections.
Apr`es ces exercices pr´eliminaires, on peut maintenant construire des matrices `a coefficients entiers dont l’inverse est aussi `a coefficients entiers.
Exercice 25. Que peut-on dire du produit de 2 matrices de transvection ? En utilisant la commande rand, ´ecrire une proc´edure genmat(N,s) qui renvoie un produit de s matrices de transvection de taille N de mani`ere al´eatoire. La tester pour N = 5 et s = 20 : afficher la matrice obtenue et son inverse. Que doit-on remarquer et que remarque-t-on ?
Exercice 26. A l’aide de l’exercice pr´ec´edent, donner des exemples ”non triviaux” de ma- trices diagonalisables `a coefficients entiers, dont les valeurs propres sont des entiers. Faire de mˆeme pour des matrices non diagonalisables.
7.2 D´ ecomposition LU
SoitAune matrice carr´ee de tailleN. Il existe une matrice de permutationP, une matrice triangulaire inf´erieure L avec des 1 sur la diagonale et une matrice triangulaire sup´erieure U
35
36 CHAPITRE 7. AUTRES EXEMPLES DE MATRICES tels que
A=P LU.
On peut obtenir cette d´ecomposition avec Maple en utilisant LUDecomposition. On parlera de d´ecomposition LU.
Exercice 27. Trouver la d´ecompositionLU dans les cas suivants : 1) Matrice inversible
2) Matrice tridiagonale 3) Matrice non inversible
4) Matrice inversible avec le terme d’indice (1,1) nul.
On v´erifiera que la matrice s’´ecrit bienP LU. Dans le cas 4), peut-on avoirP =Id? Justifier.
Dans le cas 3), les termes diagonaux de U peuvent-ils ˆetre tous non nuls ? Donner un cas o`u la d´ecomposition n’est pas unique.
Exercice 28. SoitA une matrice triangulaire sup´erieure de taille N.
1) On suppose que tous les termes diagonaux sont non nuls. Que peut-on dire du noyau de A?
2) On suppose qu’il existe un seul terme diagonal nul. Mˆeme question.
3) On suppose que aN,N et aN−1,N−1 sont nuls. Mˆeme question.
Ecrire alors une proc´edure Noyau1(A) qui renvoie une base du noyau de A en utilisant la d´ecomposition LU de A et qui fonctionne dans les cas o`u U v´erifie 1), 2) ou 3). V´erifier le r´esultat en utilisant la commande NullSpace, dans un cas diagonalisable et dans un cas non diagonalisable.
7.3. CORRECTION 37
7.3 Correction
#Exercice 1
with(LinearAlgebra):
E:=proc(i,j,n) A:=Matrix(n,n,0):
A[i,j]:=1:
A:
end proc:
#a:=array(1..N,1..N):
N:=5:A:=Matrix(N,(i,j)->a[i,j]):
simplify(A-add(add(a[i,j]*E(i,j,N),i=1..N),j=1..N)):Norm(%);
########################
#Exercice 2 N:=5:
A:=Matrix(N,N,0):
for i to N do
for j from i to N do A[i,j]:=a[i,j]:
od:od:
#A;A**(-1);
#il faut que a[i,i] et 1/a[i,i] soient entiers donc a[i,i]=1 ou a[i,i]=-1
########################
#Exercice 3
transvect:=proc(n) s:=0:
for i to n do for j to n do
if(i<>j) then s:=s+1:L[s]:=IdentityMatrix(n)+E(i,j,n):fi:
od:od:
for i to n do for j to n do
if(i<>j) then s:=s+1:L[s]:=IdentityMatrix(n)-E(i,j,n):fi:
od:od:
[seq(L[i],i=1..s)]:
end proc:
N:=5:L:=transvect(N):
########################
#Exercice 4
genmat:=proc(n,s) L:=transvect(n):
m:=nops(L):r:=rand(1..m):
A:=Matrix(IdentityMatrix(n)):
for i to s do A:=A.L[r()]:
od:
38 CHAPITRE 7. AUTRES EXEMPLES DE MATRICES A:
end proc:
A:=genmat(5,50);A**(-1);
########################
#Exercice 5
#matrice diagonalisable a coefficients entiers B:=DiagonalMatrix([1,2,3,4,5]):
A.B.A**(-1);
#matrice non diagonalisable a coefficients entiers B:=Matrix(5,5,0):B[1,2]:=1:A.B.A**(-1);
#system("mv plot.jpg td6exo1.jpg");
###########################
#Exercice 6
#Cas 1+2 inversible
M:=Matrix([[4,1,0,0],[1,4,1,0],[0,1,4,1],[0,0,1,4]]);Determinant(M);LUDecomposition(M);
#Cas 3: si tous non nuls, le determinant n’est pas nul, ce qui est contradictoire M:=DiagonalMatrix([0,1,2,3,4]):P:=genmat(5,50);M:=P.M.P**(-1);LUDecomposition(M);
#Cas 4
M:=Matrix([[0,1,4,0],[1,4,1,0],[4,1,0,1],[1,0,0,4]]);Determinant(M);LUDecomposition(M);
# non unicite: matrice nulle
###########################
#Exercice 7
#1 Ker(A)={0}
#2 Dim(Ker(A))=1 Noyau1:=proc(A) n:=RowDimension(A):
L:=LUDecomposition(A):
U:=L[3]:
#recherche des termes nuls s:=0:
for i to n do
if U[i,i]=0 then s:=s+1: end:
od:
if(s>=3) then return 2; end;
if(s>=2 and (U[n-1,n-1]<>0 or U[n,n]<>0)) then return 2; end:
if(s=0) then return 0;end;
X:=Vector(n):
if(s=2) then
if(U[n-1,n]<>0) then X[n-1]:=1:
for i from n-2 to 1 by -1 do
X[i]:=-add(X[j]*U[i,j],j=i+1..n)/U[i,i]:
od:
7.3. CORRECTION 39 return [X];
end:
Y:=Vector(n):
X[n]:=1:
for i from n-2 to 1 by -1 do
X[i]:=-add(X[j]*U[i,j],j=i+1..n)/U[i,i]:
od:
Y[n-1]:=1:
for i from n-2 to 1 by -1 do
Y[i]:=-add(Y[j]*U[i,j],j=i+1..n)/U[i,i]:
od:
return [X,Y]:
end:
s:=n:while(U[s,s]!=0) do s:=s-1:
end:
X[s]:=1:
for i from s-1 to 1 by -1 do
X[i]:=-add(X[j]*U[i,j],j=i+1..n)/U[i,i]:
od:
[X];
end proc:
N:=5:M:=Matrix(N,N,0):for i to N-1 do M[i,i+1]:=1:od:M;
P:=genmat(5,50):M:=P.M.P**(-1);
LUDecomposition(M);Noyau1(M);NullSpace(M);
M:=DiagonalMatrix([0,1,2,3,4]):P:=genmat(5,50);M:=P.M.P**(-1);
LUDecomposition(M);
Noyau1(M);NullSpace(M);
40 CHAPITRE 7. AUTRES EXEMPLES DE MATRICES
Chapitre 8
R´ eduction de matrices
8.1 R´ eduction de matrices 3 × 3
On se donne une matrice M de taille 3×3 et on cherche `a la r´eduire. D’apr`es la th´eorie de Jordan, on sait queM va ˆetre semblable `a l’une des 6 matrices suivantes :
λ 0 0 0 µ 0 0 0 ν
,
λ 0 0 0 λ 0 0 0 µ
,
λ 1 0 0 λ 0
0 0 µ
,
λ 0 0 0 λ 0 0 0 λ
,
λ 0 0 0 λ 1
0 0 λ
,
λ 1 0 0 λ 1 0 0 λ
,
o`u lesλ, µetν sont des nombres distincts.
Exercice 29. Ecrire une proc´edure qui prend une matrice 3X3 en argument et qui d´etermine auquel des six types pr´ec´edents appartient cette matrice. La tester pour les matrices
1 0 0
−1 0 −3
0 2 5
,
1 4 6
0 −1 −3
0 2 4
,
6 10 6
−4 −7 −5
3 6 5
,
1 0 0 0 1 0 0 0 1
,
0 −1 0
1 2 0
0 0 1
,
2 −1 0
1 0 0
2 −3 1
.
Il peut ˆetre aussi int´eressant de connaˆıtre la matrice de passage entre la forme initiale et la forme r´eduite. Pour cela on pourra utiliser la commande NullSpace
Exercice 30. Reprendre les exemples pr´ec´edents et trouver la matrice de passage. V´erifier alors le r´esultat.
8.2 R´ esolution de suites r´ ecurrentes
Grˆace `a la d´ecomposition spectrale pr´ec´edemment faite, on peut trouver des formules g´en´erales pour des suites r´ecurrentes.
Exercice 31. On se fixeu0=v0=w0 = 1. R´esoudre les syst`emes suivants n≥0 (1) un+1=un, vn+1=−un−3wn, wn+1 = 2vn+ 5wn (2) un+1=un+ 4vn+ 6wn, vn+1=−vn−3wn, wn+1 = 2vn+ 4wn
(3) un+1= 6un+ 10vn+ 6wn, vn+1=−4un−7vn−5wn, wn+1 = 3un+ 6vn+ 5wn (4) un+1=−vn, vn+1=un+ 2vn, wn+1 =wn
(5) un+1= 2un−vn, vn+1=vn, wn+1 = 2un−3vn+wn. 41
42 CHAPITRE 8. R ´EDUCTION DE MATRICES Pour v´erifier le r´esultat, comparer avec la solution calcul´ee de mani`ere it´erative, pour une valeur de n donn´ee.
8.3 R´ esolution de syst` emes diff´ erentiels
On peut ´egalement r´esoudre des syst`emes diff´erentiels lin´eaires.
En effet, soient x(t), y(t) et z(t) 3 fonctions d’une seule variable. On note X(t) =
x(t) y(t) z(t)
.
Si on a X0(t) =AX(t),alors on obtient X(t) = exp(At)X(0), avec exp(A) =
∞
X
k=0
Ak k!. Exercice 32. On se fixex(0) =y(0) =z(0) = 1. R´esoudre les syst`emes suivants
(1) x0(t) =x(t), y0(t) =−x(t)−3z(t), z0(t) = 2y(t) + 5z(t) (2) x0(t) =x(t) + 4y(t) + 6z(t), y0(t) =−y(t)−3z(t), z0(t) = 2y(t) + 4z(t)
(3) x0(t) = 6x(t) + 10y(t) + 6z(t), y0(t) =−4x(t)−7y(t)−5z(t), z0(t) = 3x(t) + 6y(t) + 5z(t) (4) x0(t) =−y(t), y0(t) =x(t) + 2y(t), z0(t) =z(t)
(5) x0(t) = 2x(t)−y(t), y0(t) =y(t), z0(t) = 2x(t)−3y(t) +z(t).
V´erifier le r´esultat obtenu.
8.4 R´ eduction de matrices circulantes
On d´efinit les matrices
A(a1, a2, a3, a4, a5) =
a1 a2 a3 a4 a5
a5 a1 a2 a3 a4
a4 a5 a1 a2 a3 a3 a4 a5 a1 a2 a2 a3 a4 a5 a1
, J =A(0,1,0,0,0).
Exercice 33.
1. V´erifier que l’on a A=a1Id+a2J+a3J2+a4J3+a4J4
2. On pose ω=ei2π/5. V´erifier que Xk =
1 ωk ω2k ω3k ω4k
est un vecteur propre pour J associ´e `a la
valeur propre ωk.
3. En d´eduire la r´eduction de la matriceJ, puis de la matrice A. V´erifier le r´esultat.
8.5. CORRECTION 43
8.5 Correction
########################
#Exercice 1
with(LinearAlgebra):
JordanCase:=proc(A)
P:=Determinant(A-x):L:={solve(P)}:
if(nops(L)=3)then return 1 end:
lambda:=L[1]:
if(nops(L)=2)then dP:=diff(P,x):
if(subs(x=L[2],dP)=0)then lambda:=L[2]:end:
K:=NullSpace(A-lambda):
if(nops(K)=2)then return 2:end:
return 3:
end:
if(Norm(A-lambda)=0)then return 4:end:
K:=NullSpace(A-lambda):
if(nops(K)=2)then return 5:end:
return 6:
end proc:
A[1]:=Matrix([[1,0,0],[-1,0,-3],[0,2,5]]):
A[2]:=Matrix([[1,4,6],[0,-1,-3],[0,2,4]]):
A[3]:=Matrix([[6,10,6],[-4,-7,-5],[3,6,5]]):
A[4]:=Matrix([[1,0,0],[0,1,0],[0,0,1]]):
A[5]:=Matrix([[0,-1,0],[1,2,0],[0,0,1]]):
A[6]:=Matrix([[2,-1,0],[1,0,0],[2,-3,1]]):
seq(JordanCase(A[i]),i=1..6);
########################
#Exercice 2 Passage:=proc(A) cas:=JordanCase(A):
C:=Determinant(A-x):
L:={solve(C)}:
if(cas=1)then
for j to 3 do K[j]:=op(NullSpace(A-L[j])):od:
end:
lambda:=L[1]:
if(cas=2)then
mu:=L[2]:dC:=diff(C,x):
if(subs(x=L[2],dC)=0)then lambda:=L[2]:mu:=L[1]:end:
Kl:=NullSpace(A-lambda):
K[1]:=Kl[1]:K[2]:=Kl[2]:
K[3]:=op(NullSpace(A-mu)):
end:
if(cas=3)then
mu:=L[2]:dC:=diff(C,x):
44 CHAPITRE 8. R ´EDUCTION DE MATRICES if(subs(x=L[2],dC)=0)then lambda:=L[2]:mu:=L[1]:end:
V:=NullSpace((A-lambda).(A-lambda)):
K[2]:=V[1]:if(Norm(A.K[2]-lambda*K[2])=0)then K[2]:=V[2]:end:
K[1]:=(A-lambda).K[2]:
K[3]:=op(NullSpace(A-mu)):
end:
if(cas=4)then
return [IdentityMatrix(3),A];
end:
if(cas=5)then
K[3]:=Vector(3):s:=0:while(Norm((A-lambda).K[3])=0) do s:=s+1:K[3][s]:=1:end:
K[2]:=(A-lambda).K[3]:
V:=NullSpace(A-lambda):K[1]:=V[1]:
P:=Matrix([seq(K[j],j=1..3)]):
if(Determinant(P)=0)then K[1]:=V[2]:end:
end:
if(cas=6)then
K[3]:=Vector(3):s:=0:while(Norm(((A-lambda)**2).K[3])=0) do s:=s+1:K[3][s]:=1:end:
K[2]:=(A-lambda).K[3]:
K[1]:=(A-lambda).K[2]:
end:
P:=Matrix([seq(K[j],j=1..3)]):
return [P,P**(-1).A.P];
end proc:
seq(Passage(A[i]),i=1..6);
On trouve les r´esultats suivants
−1 0 0
−2 −3/2 −1
1 1 1
,
1 0 0 0 2 0 0 0 3
,
1 0 2
0 −3/2 −1
0 1 1
,
1 0 0 0 1 0 0 0 2
−2 −4 1
1 0 −1
0 3 1
,
1 1 0 0 1 0 0 0 2
,
1 0 0 0 1 0 0 0 1
,
1 0 0 0 1 0 0 0 1
,
0 −1 1
0 1 0
1 0 0
,
1 0 0 0 1 1 0 0 1
,
0 −1 −3 0 −1 −2
1 0 0
,
1 1 0 0 1 1 0 0 1
.
On noteUn= (un, vn, wn). On a alorsUn+1=AUn. PuisUn=AnU0. OrA=P∆P−1. Donc, on calcule dans un premier temps ∆n qui se calcule suivant les cas 1 `a 6 de l’exercice 2. On a ainsi
λ 0 0 0 µ 0 0 0 ν
n
=
λn 0 0 0 µn 0 0 0 νn
Pour les autres cas, on est amen´e `a calculer
"
λ 1 0 λ
#n
=
"
λn 0 0 λn
# +n
"
λn−1 0 0 λn−1
#
·
"
0 1 0 0
#
=
"
λn nλn−1
0 λn
# .
8.5. CORRECTION 45 et
λ 1 0 0 λ 1 0 0 λ
n
=
λn nλn−1 n(n−1)2 λn−2
0 λn nλn−1
0 0 λn
En se servant de l’exercice pr´ec´edent, on obtient alors
#Exercice 3
Suite:=proc(A,U0)
cas:=JordanCase(A);L:=Passage(A);P:=L[1]:
a:=L[2][1,1]:b:=L[2][2,2]:c:=L[2][3,3]:
Delta:= DiagonalMatrix([a^n,b^n,c^n]):
if(cas=3)then Delta[1,2]:=n*a^(n-1):end;
if(cas=5)then Delta[2,3]:=n*a^(n-1):end;
if(cas=6)then
Delta[1,2]:=n*a^(n-1):Delta[2,3]:=n*a^(n-1):Delta[1,3]:=(n*(n-1)/2)*a^(n-2):
end;
return P.Delta.P**(-1).U0;
end proc:
L:=[1,2,3,5,6]:
for jj to nops(L) do j:=L[jj]:
N:=10:Un:=Suite(A[j],<1,1,1>):
U:=subs(n=N,%):u:=1:v:=1:w:=1:
for i to N do
uo:=u;vo:=v:wo:=w:
if(j=1)then u:=uo:v:=-uo-3*wo:w:=2*vo+5*wo:fi:
if(j=2)then u:=uo+4*vo+6*wo:v:=-vo-3*wo:w:=2*vo+4*wo:fi:
if(j=3)then u:=6*uo+10*vo+6*wo:v:=-4*uo-7*vo-5*wo:w:=3*uo+6*vo+5*wo:fi:
if(j=5)then u:=-vo:v:=uo+2*vo:w:=wo:fi:
if(j=6)then u:=2*uo-vo:v:=vo:w:=2*uo-3*vo+wo:fi:
end:
UU:=<u,v,w>:print(Un,U,Norm(UU-U));
end:
On noteX(t) = (x(t), y(t), z(t)). On a alorsX0(t) =AX(t), ce qui donneX(t) = exp(tA)X(0) et exp(tA) =Pexp(t∆)P−1 et on calcule :
exp t
λ 0 0 0 µ 0 0 0 ν
=
exp(λt) 0 0
0 exp(µt) 0
0 0 exp(νt)
,exp
t
"
λ 1 0 λ
#
=
"
exp(λt) texp(λt) 0 exp(λt)
# ,
exp t
λ 1 0 0 λ 1 0 0 λ
=
exp(λt) texp(λt) t22 exp(λt) 0 exp(λt) texp(λt)
0 0 exp(λt)
.
46 CHAPITRE 8. R ´EDUCTION DE MATRICES
#Exercice 4
EquaDiff:=proc(A,X0)
cas:=JordanCase(A);L:=Passage(A);P:=L[1]:
a:=L[2][1,1]:b:=L[2][2,2]:c:=L[2][3,3]:
Delta:= DiagonalMatrix([exp(t*a),exp(t*b),exp(t*c)]);
if(cas=3)then Delta[1,2]:=t*exp(t*a):end;
if(cas=5)then Delta[2,3]:=t*exp(t*a):end;
if(cas=6)then
Delta[1,2]:=t*exp(t*a):Delta[2,3]:=t*exp(t*a):Delta[1,3]:=(t^2/2)*exp(t*a):
end;
return P.Delta.P**(-1).X0;
end proc:
for j to 6 do
X:=EquaDiff(A[j],<1,1,1>):
x1:=X[1]:y1:=X[2]:z1:=X[3]:
xp:=diff(x1,t):yp:=diff(y1,t):zp:=diff(z1,t):
if(j=1)then L:=[xp-x1,yp+x1+3*z1,zp-2*y1-5*z1,subs(t=0,X)];fi:
if(j=2)then L:=[xp-x1-4*y1-6*z1,yp+y1+3*z1,zp-2*y1-4*z1,subs(t=0,X)];fi:
if(j=3)then L:=[xp-6*x1-10*y1-6*z1,yp+4*x1+7*y1+5*z1,zp-3*x1-6*y1-5*z1,subs(t=0,X)];fi:
if(j=5)then L:=[xp+y1,yp-x1-2*y1,zp-z1,subs(t=0,X)];fi:
if(j=6)then L:=[xp-2*x1+y1,yp-y1,zp-2*x1+3*y1-z1,subs(t=0,X)];fi:
print(X,simplify(L));
od:
#Exercice 5
N:=5:Ac:=Matrix(N,(i,j)->a[((-i+j) mod N)+1]):b:=Vector(N):b[2]:=1:
J:=subs(a=b,Ac):Ac,Norm(Ac-add(a[i]*J^(i-1),i=1..N));
omega:=exp(I*2*Pi/N):
X:=<seq(exp(I*2*Pi*j*k/N),j=0..N-1)>:assume(k,integer):Norm(simplify(J.X-omega^k*X));
P:=Matrix(N,N,(i,j)->exp(I*2*Pi*(i-1)*(j-1)/N)):
JJ:=DiagonalMatrix([seq(exp(I*2*Pi*(i-1)/N),i=1..N)]):
simplify(P**(-1).J.P-JJ):P,JJ,Norm(%);
AA:=add(a[i]*JJ^(i-1),i=1..5):simplify(P**(-1).Ac.P-AA):P,AA,Norm(%);
Chapitre 9
R´ eduction de matrices de taille N
Soit Aune matrice de taille N. On peut alors ´ecrire CN =⊕ni=1Ker(A−λi)mi,
ou lesmi >0 sont le plus petit possible et les λi sont les valeurs propres deA.
Exercice 34. Ecrire une proc´edure decomp(A) renvoie la liste [λ1, m1, . . . , λn, mn]. Pour N = 10, trouver des exemples o`un= 2 etm1= 5,m2 ∈ {1,2,3,4,5}. Peut-on avoirm2= 6? SoitP(x) =Qn
i=1(x−λi)mi. Que peut-on dire de P(A)? V´erifier-le sur les exemples.
Exercice 35. Ecrire une proc´edureinside(v,L)qui renvoie1 siv∈Vect(L1, . . . , Ln), avec n = nops(L) et qui renvoie 0 sinon. On rappelle le th´eor`eme du rang. Soit A une matrice m×n on a alors
dim(Ker(A)) + rg(A) =n.
Exercice 36. Retrouver alors la d´ecomposition de Jordan pour une matrice taille N. Appli- cation aux suites r´ecurrentes et aux ´equations diff´erentielles.
47
48 CHAPITRE 9. R ´EDUCTION DE MATRICES DE TAILLEN
#Exercice 1
with(LinearAlgebra):
decomp:=proc(A)
L:={solve(Determinant(A-x))}:
N:=nops(L):
for i to N do lambda:=L[i]:
B:=(A-lambda):
sold:=0:
snew:=nops(NullSpace(B)):
k:=0:
while(snew>sold) do k:=k+1:
sold:=snew:
B:=B.(A-lambda):
snew:=nops(NullSpace(B)):
od:
M[i]:=k:
od:
for i to N do
LL[2*i-1]:=L[i]:LL[2*i]:=M[i]:
od:
[seq(LL[i],i=1..2*N)];
end proc:
N:=10:
A:=Matrix(N,N,0):
for i to N/2-1 do A[i,i+1]:=1:
od:
for i from N/2+1 to N do A[i,i]:=1:
od:
A1:=Matrix(A):
A2:=Matrix(A):A2[N-1,N]:=1:A2:
A3:=Matrix(A2):A3[N-2,N-1]:=1:A3:
A4:=Matrix(A3):A4[N-3,N-2]:=1:A4:
A5:=Matrix(A4):A5[N-4,N-3]:=1:A5:
decomp(A1),decomp(A2),decomp(A3),decomp(A4),decomp(A5);
verif:=proc(A) L:=decomp(A):
n:=nops(L)/2:
N:=RowDimension(A):
B:=Matrix(IdentityMatrix(N)):
for i to n do
B:=B.(A-L[2*i-1])**(L[2*i]):
od:
Norm(B);
49 end proc:
verif(A1),verif(A2),verif(A3),verif(A4),verif(A5);
########################
#Exercice 2
inside:=proc(v,L) N1:=nops(L):
N2:=Dimension(L[1]):
M:=Matrix([seq(L[i],i=1..N1)]);
rg1:=N1-nops(NullSpace(M));
M:=Matrix([v,seq(L[i],i=1..N1)]);
rg2:=N1+1-nops(NullSpace(M));
if(rg2=rg1)then return 1;else return 0;end;
end proc:
inside(<1,2,3>,[<2,4,6>,<1,5,2>]);