TP01_2_Correction

publicité
1èreS - TP01.2: ALGORITHMIQUE - CORRIGE
Résolution d'une équation du second degré - Instruction conditionnelle
1. Présentation du problème
Nous allons construire un programme permettant de résoudre une équation du second degré de manière approchée,
en utilisant une structure conditionnelle du type "Si...alors...sinon".
Considérons l'équation
ax 2 + bx + c = 0 , avec a, b, c nombre réels donnés et a ≠ 0 .
Voici un programme pour la calculatrice TI qui permet de trouver les solutions d'une telle équation:
PROGRAM:TRINOME
:Prompt A,B,C
:B2 - 4AC →D
:Disp"DELTA=",D
:IfD<0
:Then
:Disp"PASDESOLUTION"
:End
:IfD=0
:Then
:Disp"UNESOLUTION",-B/(2A)
:End
:IfD>0
:Then
:(-B-√(D))/(2A)→E
:(-B+√(D))/(2A)→F
:Disp"DEUXSOLUTIONS:",E,F
:End
1°) Ouvrir le logiciel Algobox, et traduire ce programme sur Algobox. Noter ci-dessous votre algorithme Algobox:
2°) Testez cet algorithme sous Algobox avec les équations suivantes:
6 x2 − x − 1 = 0
Discriminant: 25 Solutions éventuelles: - 0.333 et 0.5
16 x 2 − 8 x + 13 = 0
Discriminant: -768 Solutions éventuelles: pas de solution
2 x 2 − 10 x +
25
=0
2
Discriminant: 0 Solutions éventuelles: 2.5
3°) Testez cet algorithme sous Algobox avec les valeurs a = 0 , b = 2 , et c = 1 .
Que constate-t-on? Algobox renvoie une erreur.
Modifier le programme sur Algobox de manière à envisager cette situation (on pourra, par exemple, faire afficher un
message d'avertissement et stopper le programme).
Modifications proposées (écrire seulement les lignes modifiées):
Ces lignes ont été ajoutées
4°) Proposez une modification de l'algorithme utilisant des conditions imbriquées ( If... then... else... ) pour rassembler
les cas ∆ = 0 et ∆ > 0 .
Modifications proposées (écrire seulement les lignes modifiées):
5°) Saisissez le programme correspondant à l'algorithme amélioré sur votre calculatrice TI, et testez-le pour résoudre
x 2 − (1016 + 1) x + 1016 = 0 .
l'équation
Listing du programme pour une calculatrice T.I.:
PROGRAM: TRINOME
:Input "A=", A
:Input "B=", B
:Input "C=", C
:If A=0
:Then
:Disp "A DOIT ETRE NON NUL"
:Else
:B2 - 4AC →D
:Disp"DELTA=",D
Frac
:IfD<0
:Then
:Disp"PASDESOLUTION"
:Else
:IfD=0
:Then
:Disp"UNESOLUTION",-B/(2A)
:Else
:(-B-√(D))/(2A)→E
:(-B+√(D))/(2A)→F
:Disp"DEUXSOLUTIONS:",EFrac,FFrac
:End
:End
:End
Votre calculatrice n’arrive pas à gérer les calculs correctement car b et c sont très grands.
A la main, on peut cependant résoudre l’ équation du second degré
x ² − (1016 + 1) x + 1016
=0 :
2
2
∆ = b² − 4c = −(1016 + 1) − 4 × 1× 1016 = 1032 + 2 × 1016 + 1 − 4 × 1016 = 1032 − 2 × 1016 + 1 = 1016 − 1
(
∆>0
)
(
)
donc cette équation admet deux solutions distinctes :
−b − ∆
x=
=
2a
{
1016 + 1 −
donc S = 1;1016
(1016 − 1)
2
2
1016 + 1 − 1016 + 1
=
=1
2
ou
−b + ∆
x=
=
2a
1016 + 1 +
(1016 −1)
2
2
=
1016 + 1 + 1016 − 1
= 1016
2
}
6°) Saisissez dans le logiciel de calcul formel XCAS l'instruction solve( x ^ 2 − (10 ^16 + 1)* x + 10 ^16 = 0 , x ).
Que constatez-vous?
l'équation
XCAS exhibe bien les deux solutions (séparées par une virgule): 1 et
une virgule (c'est une notation anglo-saxonne).
Remarquons qu'Algobox trouve ces deux solutions également.
l'inconnue
1016 = 10000000000000000 , séparées par
Téléchargement