Stanislas
Correction Devoir Surveillé n°2
SUP
Solution de l’exercice 1.
1 . a)1. Renvoie la valeur de l'intégrale par la méthode des rectangles à gauche b) 5. Renvoie None ! Pas de return dans la fonction
c) 2. Renvoie la valeur de l'intégrale par la méthode des rectangles à droite d) 6. Renvoie un message d'erreur car le range provoque un dépassement d'indice.
e) 4. Renvoie la valeur d'un zéro de la fonction par dichotomie.
f) 6. Erreur : y est une liste donc y(i) n'a pas de sens ! Cela n'a de sens que pour une fonction.
g) 6. Erreur : dépassement d'index car on a oublié d'écrire RANGE... Donc i vaut soit 0 soit len(t)-1 et pour len(t)-1 l'appel à t[i+1] conduit à appeler t[len(t)] qui n'existe pas !
h) 6. Erreur : il manque une parenthèse à la n de l'expression !
i) 3. Renvoie la valeur de l'intégrale par la méthode des trapèzes, les calculs sur c ne servent à rien.
j) 7. Il s'agit de l'algorithme de dichomotomie, mais après avoir fait ce qu'il faut, on réinitialise les valeurs x et y conduisant le programme à tourner indéniment.
2 . a) −8−6−4−2 0 2 4 6 8 10 12 14 16
−1 000
−800
−600
−400
−200 0 200 400 600 800
b) Renvoie la valeur 6.
c) Renvoie la valeur−3. d) Renvoie la valeur 10.
e) Ne renvoie rien et boucle inniment car la recherche se fait sur un intervalle ne contenant pas de 0...
f) Peut renvoyer n'importe quoi car plusieurs 0 sur l'intervalle de recherche... Pour ce cas particulier, cela renverra la valeur −3. On le voit après la première itération qui réduit l'intervalle à [−100,0]qui ne contient plus que la solution−3.
Solution de l’exercice 2.
1.L'ensemble des entiers représentables estJ−27,27−1K, i.e.J−128,127K.
2 . a)63 est représenté par 0011 1110.
b) −63 est représenté par 1100 0010.
c) On eectue l'addition en base 2 des représentations pour obtenir 1 0000 0000. Les calculs s'ef- fectuant sur 8 bits, la retenue n'est pas prise en compte et l'addition renvoie 0000 0000 qui est la représentation de0.
Stanislas
. Devoir Surveillé n°2 SUP
3 . a)29 est représenté par 0001 1101. b) −29 est représenté par 1110 0011.
c) On eectue l'addition en base2 des représentations pour obtenir1101 1111qui est la représenta- tion de l'entier−33.
d) On eectue l'addition en base2 des représentations pour obtenir1 0010 0001. Les calculs s'eec- tuant sur8bits, la retenue n'est pas prise en compte et l'entier représenté par 0010 0001est 33. 4 . a)36 est représenté par 0010 0100.
b) 66est représenté par 0100 0010. c) 104est représenté par0110 1000.
d) On eectue l'addition en base 2 des représentations pour obtenir 0110 0110. L'entier représenté par0110 0110est 102.
e) On eectue l'addition en base 2 des représentations pour obtenir 1010 1010. L'entier représenté par1010 1010est −86. Le calcul a donné lieu à un dépassement de capacit !
5 . a)−36 est représenté par1101 1100. b) −66 est représenté par 1011 1110. c) −104est représenté par 1001 1000.
d) On eectue l'addition en base2 des représentations pour obtenir1 1001 1010. Les calculs s'eec- tuant sur8bits, la retenue n'est pas prise en compte et l'entier représenté par 1001 1010est −102.
e) On eectue l'addition en base2 des représentations pour obtenir1 0101 0110. Les calculs s'eec- tuant sur 8 bits, la retenue n'est pas prise en compte et l'entier représenté par 0101 0110 est 86. Le calcul a donné lieu à un dépassement de capacité.
6 . a)
def base ( n ) : m = n
L = [ ]
while m != 0 : L . append (m%2) m = m//2 return L
b)
def complement_2 ( n ) :
i f n > 127 or n < −128:
return f a l s e e l i f n >= 0 :
return base ( n)+(8−len ( base ( n ) ) ) * [ 0 ] else :
L = base(−n)+(8−len ( base(−n ) ) ) * [ 0 ] i = 0
while L [ i ] = 0 : i = i + 1
for j in range ( i , len (L ) ) : L [ j ] = 1 − L [ j ]
return L
Solution de l’exercice 3.
1. Proposer une fonction derive(f,theta,beta,dt), qui prend en argument une fonction f, la coor- donnée de calcul theta et le pas de dérivation dt, qui retourne la valeur de la dérivée numérique à droite de la fonctionf en x.
Stanislas
. Devoir Surveillé n°2 SUP
# Dé f i n i t i o n de l a dé r i v é e def d e r i v e ( f , theta , beta , dt ) :
return ( f ( theta+h , beta)−f ( theta , beta ) ) / dt
2. Proposer une fonction resolution(f,x_ini, eps, beta,dt) basée sur la méthode de Newton, permettant de résoudre l'équation (1) pour un angle β xé et renvoyant θ pour toute valeur de β donnée comme argument.
# Recherche de s o l u t i o n par l a mé thode de Newton def r e s o l u t i o n ( f , x_ini , e p s i l o n , beta , dt ) :
x=x0 # I n i t i a l i s a t i o n à l a premi è re e s t i m a t i o n f o u r n i e
# Tant que l e c r i t è re de convergence n ' e s t pas s a t i s f a i t while ( abs ( f ( x , beta ))> e p s i l o n ) :
x=x−f ( x , beta )/ d e r i v e ( f , x , beta , dt )
return x # On r e n v o i e l a derni è re e s t i m a t i o n
3.Proposer un algorithme permettant de dénir un tableau d'environ 10 valeurs pour β entre−0,5 et 0,3 rad, et de calculer le tableau des anglesθ correspondants.
theta = [ ]
beta = l i n s p a c e (−0.5 ,0.3 ,10)
for Beta in beta : # Boucle sur l e s a n g l e s Beta
# Calcul de t h e t a
theta . append ( r e s o l u t i o n ( loi_es , 0 , 1 e−12,Beta , 1 e−5))
4.Donner les lignes de programme permettant de tracer l'évolution de l'angle θen fonction de β.
p l o t ( beta , t e t a ) x l a b e l ( "Angle beta" ) y l a b e l ( "Angle theta" )
t i t l e ( "Evolution de l'angle theta en fonction de l'angle beta" )
Stanislas