Lycée Benjamin Franklin PTSI−2014-2015
D. Blottière, B. Mollier Informatique
Correction de l’exercice 3 du TP n°2
# Thème : Calcul des deux racines carrées complexes d ’ un complexe non nul
#
# Défauts
# 1 . Les p a r t i e s r é e l l e s et imaginaires sont des f l o t t a n t s , d ’ où des problèmes d ’ arrondis .
# 2 . I l y a une comparaison à zéro , et l e s problèmes d ’ arrondis peuvent engendrer des erreurs .
# 3 . On pourrait u t i l i s e r des i n s t r u c t i o n s conditionnel l es imbriquées .
#
# Améliorations p o s s i b l e s
# 1 . La comparaison à zéro peut ê t r e c o r r i g é e en a u t o r i s a n t une marge d ’ erreur par exemple .
# 2 . Python possède un type complex qui pourrait ê t r e u t i l i s é .
# Chargement de l a bibliothèque math contenant l a fonction s q r t import math
# S a i s i e de l a p a r t i e r é e l l e du nombre complexe et a f f e c t a t i o n dans l a va r i a b l e A A= f l o a t ( input ( ’ S a i s i r l a p a r t i e r é e l l e du nombre complexe : ’ ) )
# S a i s i e de l a p a r t i e imaginaire du nombre complexe et a f f e c t a t i o n dans l a va r i a b l e B B= f l o a t ( input ( ’ S a i s i r l a p a r t i e imaginaire du nombre complexe : ’ ) )
# On c a l c u l e l e module de A+iB et on l ’ a f f e c t e dans l e va r i a b l e Module Module=math . s q r t (A**2+B**2)
# On note a+ib ( a et b r é e l s ) une racine carrée de A+iB
# a**2−b**2=A ( équation des parties r é e l l e s )
# a **2+b**2=Module ( équation des modules)
# De ces deux équations on déduit a **2 et b**2 puis les valeurs absolues de a et b .
# On c a l c u l e l a valeur absolue de a on l ’ a f f e c t e dans l e va r i a b l e valabs_a valabs_a=math . s q r t ( ( A+Module ) / 2 )
# On c a l c u l e l a valeur absolue de b on l ’ a f f e c t e dans l e va r i a b l e valabs_b valabs_b =math . s q r t ( ( Module−A) / 2 )
# 2*a*b=B ( équation des parties imaginaires )
# On en déduit l e signe conjoint de a et b s i B e s t d i f f é r e n t de 0 .
# L ’ étude du signe se scinde en t r o i s p a r t i e s , suivant B>0 , B<0 , B=0.
i f (B> 0 ) : # a et b ont même signe .
p r i n t ( ’ Les racines carrées sont ’ , valabs_a , ’ + ’ , valabs_b , ’ * i et son opposé . ’ ) i f (B< 0 ) : # a et b sont de signes opposés .
p r i n t ( ’ Les racines carrées sont ’ ,−valabs_a , ’ + ’ , valabs_b , ’ * i et son opposé . ’ ) i f (B==0): # l e nombre complexe dont on cherche l e s racines e s t r é e l .
p r i n t ( ’ Les racines carrées sont ’ , valabs_a , ’ et son opposé . ’ )
1