• Aucun résultat trouvé

Suites num´ eriques

N/A
N/A
Protected

Academic year: 2022

Partager "Suites num´ eriques"

Copied!
49
0
0

Texte intégral

(1)

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)

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)

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)

4 CHAPITRE 1. SUITES NUM ´ERIQUES

Figure 1.4 – Figure pour l’Exercice 6

(5)

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)

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)];

(7)

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)

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)]:

(9)

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)

10 CHAPITRE 2. COMPL ´EMENTS SUR LES SUITES

Figure 2.1 – Figure pour l’Exercice 7

Figure2.2 – Figures pour l’Exercice 8

(11)

11

Figure2.3 – Figures pour l’Exercice 9

(12)

12 CHAPITRE 2. COMPL ´EMENTS SUR LES SUITES

Figure2.4 – Figures pour l’Exercice 10

(13)

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)

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);

(15)

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)

16 CHAPITRE 3. S ´ERIES NUM ´ERIQUES

Figure3.1 – Figures pour les Exercices 13 et 12

(17)

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)

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);

(19)

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)

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

(21)

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)

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:

(23)

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)

24 CHAPITRE 4. COMPL ´EMENT SUR LES S ´ERIES

Figure 4.3 – Figure pour l’Exercice 16

(25)

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)

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]);

(27)

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)

28 CHAPITRE 5. EVALUATION SUITES/S ´ERIES

Figure 5.1 – Figure pour l’Exercice 17

(29)

5.1. CORRECTION 29

Figure 5.2 – Figure pour l’Exercice 18

(30)

30 CHAPITRE 5. EVALUATION SUITES/S ´ERIES

Figure 5.3 – Figure pour l’Exercice 19

(31)

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)

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.

(33)

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)

34 CHAPITRE 6. LES MATRICES

(35)

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)

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.

(37)

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)

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:

(39)

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)

40 CHAPITRE 7. AUTRES EXEMPLES DE MATRICES

(41)

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)

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.

(43)

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)

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

#

=

"

λnn−1

0 λn

# .

(45)

8.5. CORRECTION 45 et

λ 1 0 0 λ 1 0 0 λ

n

=

λnn−1 n(n−1)2 λn−2

0 λnn−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)

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(%);

(47)

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)

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)

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>]);

Références

Documents relatifs

Applications de ce th´ eor` eme : le th´ eor` eme de Ces` aro et les ´ equivalents (du reste ou de la somme partielle) pour les s´ eries de

Une suite de nombres est g´eom´etrique si chaque terme s’obtient en multi- pliant le pr´ec´edent par un mˆeme nombre :.. u n+1 = b × u n b est la raison de

(informations : 1000 grains de bl´e p`esent en moyenne 43 grammes 1. La production mondiale annuelle de bl´e est environ 740 millions de tonnes 2 .)..

Hors du cadre de la classe, aucune reproduction, même partielle, autres que celles prévues à l'article L 122-5 du code de la propriété intellectuelle, ne peut être faite de ce

Pour s’entraîner à appliquer la formule de Pythagore dans

[r]

Pour s’entraîner à appliquer la formule de Thalès dans

Il faut bien se rendre compte `a quel point ce r´esultat est logique : si on est plus grand qu’une suite qui explose vers + ∞ , alors on ne peut qu’exploser vers +