Université de Monastir

Institut Préparatoire aux Etudes d’Ingénieurs de Monastir




Correction Devoir surveillé N°3

Matière : Informatique Classes : AP2
Durée : 0h45



Exercice n°1 : (8pts)

On se propose d’étudier avec Maple le comportement d’un circuit RLC série en régime
libre. Les équations nécessaires pour cette étude sont données. Il suffit donc de les utiliser
pour répondre aux questions.
Le circuit RLC série est alimenté par un générateur de tension continue. A l’instant t=0,
on bascule l’interrupteur k de la position(1) à la position (2).

L’équation différentielle ED du circuit est donnée par :
ð
2
q
ðt
2
+
R
L

ðq
ðt
+
1
LC
q = u (q JépcnJ Jc t)
Ce qui donne l’équation caractéristique EC suivante :
r
2
+
R
I
r +
1
IC
= u (EC cst Jc lo ¡ormc or
2
+ br + c = u).

L’étude du circuit peut s’effectuer soit à partir du calcul du discriminant de EC, soit par la
résolution de EC, soit encore par résolution formelle de ED.
Donner les commandes Maple permettant de :
1) Définir les équations ED et EC.

>ED :=diff(q(t),t$2)+(R/L)*diff(q(t),t)+1/(L*C)*q(t)=0 ; 0.5
>EC :=r^2+(R/L)*r+1/(L*C) ; 0.5

2) Calculer le discriminant Delta de EC.
>Delta :=(R/L)^2-4*1/(L*C) ; 1

3) Résoudre l’équation caractéristique EC.
>solve(EC,r) ; 1

4) Résoudre l’équation différentielle ED du circuit.
>dsolve(ED,q(t)) ; 1

Université de Monastir
Institut Préparatoire aux Etudes d’Ingénieurs de Monastir


5) Résoudre numériquement l’équation différentielle ED pour : R=3, C=1, L=1 avec
les conditions initiales : q(u) = 1,
ðq
dt(0)
= u.

>R :=3 ;C :=1 ;L :=1 ; 0.25+0.25+0.25
>dsolve({ED,q(0)=1,D(q)(0)=0},q(t),numeric) ; 0.25(dsolve)+0.5(CI)+0.5(numeric)

6) Affecter à une variable S le résultat obtenu en (5).
>s :=% ; 1
7) Charger la commande odeplot et représenter S pour t allant de 0 à 20. (1pt)
>with(plots) ; 0.5
>odeplot(s,[t,q(t)],0..20) ; 0.5
Exercice n°2 (6pts)

La fonction d’Ackermann ¡ est définie pour, x ct y entiers naturels, par :
si x = u olors ¡(x, y) = y + 1 sinon
Si y = u olors ¡(x, y) = ¡(x − 1,1)
Sinon ¡(x, y) = ¡(x −1, ¡(x, y − 1))

1. Ecrire une procédure algorithmique permettant de calculer f(x,y).
2. Calculer f(3,4).
1.
procédure Ackermann(E x:entier , E y :entier)
variable globale
f : entier
Début
si (x=0) alors f=y+1;
sinon
si (y=0) alors f= Ackermann(x-1,1) ;
sinon
f= Ackermann(x-1, Ackermann (x,y-1)) ;
fin si ;
fin si ;

fin Ackermann.

syntaxe de la procédure 1pt
Appel récursif 1pt
Etude de 3 cas 1.5 pts
syntaxe de la structure conditionnelle alternative « si » 1 pt



2. Ackermann(3,4) ;
écrire(f) ; 1.5pts


Exercice n°3 (6pts)

Tri spiralé

Université de Monastir
Institut Préparatoire aux Etudes d’Ingénieurs de Monastir


Ecrire une procédure Maple, recevant comme paramètre entrant un vecteur V de n
entiers, qui place, en s’inspirant du tri par énumération, les éléments du V par ordre
croissant dans une matrice M (L lignes * C colonnes) de manière spiralée. L’ordre spiralé
revient à parcourir la matrice depuis l’élément (1,1) de façon concentrique dans le sens
des horloges d’une montre. Il découle des définitions que n =L*C.

Exemples si n=9, V contient les entiers suivants : 3, 11, 23, 5, 18, 1, 21,7 et 15
L=3 et C=3 alors, après traitement, la matrice M contiendra
1→ 3→ 5↓
21→ 23 7↓
↑18 ←15 ←11

si n=12, V contient les entiers suivants :3, 11, 23, 5, 18, 1, 21, 7, 17, 94, 71 et 8
L=3 et C=4 alors, après traitement, la matrice M contiendra
1→ 3→ 5→ 7↓
23→ 71→ 94 8↓
↑21 ←18 ←17 ←11




> tri_spirale:=proc(M,v,n,l,c)
local i,j,k,nb,h,c1,l1,p;
for k from 1 to n do
nb:=0:
for h from 1 to n do
if v[h]<=v[k] then
nb:=nb+1:
fi;
od:
c1:=c:
l1:=l:
i:=1:
j:=1:
p:=1:
while p<>nb do
while p<>nb and i<c1 do
i:=i+1:
p:=p+1:
od:
while p<>nb and j<l1 do
j:=j+1:
p:=p+1:
od:
while p<>nb and i>c-c1+1 do
Université de Monastir
Institut Préparatoire aux Etudes d’Ingénieurs de Monastir


i:=i-1:
p:=p+1:
od:
while p<>nb and j>l-l1+2 do
j:=j-1:
p:=p+1:
od:
l1:=l1-1:
c1:=c1-1:
od:
M[j,i]:=v[k]:
od:
return(evalm(M));
end proc;