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