9
1èreS - TP02: ALGORITHMIQUE 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 2 0 ax bx c + + = , avec ,, abc nombre réels donnés et 0 a . Voici un algorithme qui permet de trouver les solutions d'une telle équation: TRINOME DU SECOND DEGRE: 2 0 Ax Bx + += Demander à l'utilisateur les valeurs de A, B, C Calculer le discriminant Δ , que l'on notera D Afficher la valeur de Δ Si 0 Δ< , afficher "pas de solution" Si 0 Δ= , afficher "une solution", et sa valeur Si 0 Δ> , afficher "deux solution", les calculer, puis afficher leurs valeurs 1. Algorithme avec Algobox 1.1°) Ouvrir le logiciel Algobox, et traduire cet algorithme sur Algobox. Vous pouvez prendre des notes ci-dessous: ............................................................................................................................................................................................ ............................................................................................................................................................................................ ............................................................................................................................................................................................ ............................................................................................................................................................................................ ............................................................................................................................................................................................ ............................................................................................................................................................................................ 1.2°) Testez cet algorithme sous Algobox avec les équations suivantes: 2 6 1 0 x x - - = Discriminant: ...................................... Solutions éventuelles:........................................................................................... 2 16 8 13 0 x x - + = Discriminant: ...................................... Solutions éventuelles:........................................................................................... 2 25 2 10 0 2 x x - + = Discriminant: ...................................... Solutions éventuelles:........................................................................................... 1.3°) Testez cet algorithme sous Algobox avec les valeurs 0 a = , 2 b = , et 1 c = . Que constate-t-on?............................................................................................................................................................. 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 avec l'instruction "pause"). Modifications proposées (écrire seulement les lignes modifiées): ............................................................................................................................................................................................ ............................................................................................................................................................................................ ............................................................................................................................................................................................ ............................................................................................................................................................................................ ............................................................................................................................................................................................ ............................................................................................................................................................................................ ............................................................................................................................................................................................

1èreS - TP02: ALGORITHMIQUE Résolution d'une …maths.langella.free.fr/premiere_S/02_exercices/TP02.pdf1èreS - TP02: ALGORITHMIQUE - CORRIGE Résolution d'une équation du second

  • Upload
    hakhanh

  • View
    235

  • Download
    0

Embed Size (px)

Citation preview

1èreS - TP02: ALGORITHMIQUE

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 2 0ax bx c+ + = , avec , ,a b c nombre réels donnés et 0a ≠ .

Voici un algorithme qui permet de trouver les solutions d'une telle équation:

TRINOME DU SECOND DEGRE: 2 0Ax Bx+ + =

Demander à l'utilisateur les valeurs de A, B, C

Calculer le discriminant ∆ , que l'on notera D

Afficher la valeur de ∆

Si 0∆ < , afficher "pas de solution"

Si 0∆ = , afficher "une solution", et sa valeur

Si 0∆ > , afficher "deux solution", les calculer, puis afficher leurs valeurs

1. Algorithme avec Algobox

1.1°) Ouvrir le logiciel Algobox, et traduire cet algorithme sur Algobox. Vous pouvez prendre des notes ci-dessous:

............................................................................................................................................................................................

............................................................................................................................................................................................

............................................................................................................................................................................................

............................................................................................................................................................................................

............................................................................................................................................................................................

............................................................................................................................................................................................

1.2°) Testez cet algorithme sous Algobox avec les équations suivantes:

26 1 0x x− − =

Discriminant: ...................................... Solutions éventuelles:...........................................................................................

216 8 13 0x x− + =

Discriminant: ...................................... Solutions éventuelles:...........................................................................................

2 252 10 0

2x x− + =

Discriminant: ...................................... Solutions éventuelles:...........................................................................................

1.3°) Testez cet algorithme sous Algobox avec les valeurs 0a = , 2b = , et 1c = .

Que constate-t-on?.............................................................................................................................................................

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 avec l'instruction "pause").

Modifications proposées (écrire seulement les lignes modifiées):

............................................................................................................................................................................................

............................................................................................................................................................................................

............................................................................................................................................................................................

............................................................................................................................................................................................

............................................................................................................................................................................................

............................................................................................................................................................................................

............................................................................................................................................................................................

1.4°) Proposez une amélioration de l'algorithme utilisant des conditions imbriquées ( If... then... else... : bouton

"si...alors").

Modifications proposées (écrire seulement les lignes modifiées):

............................................................................................................................................................................................

............................................................................................................................................................................................

............................................................................................................................................................................................

............................................................................................................................................................................................

............................................................................................................................................................................................

............................................................................................................................................................................................

............................................................................................................................................................................................

............................................................................................................................................................................................

............................................................................................................................................................................................

2. Traduction en Python

2.1°) Lancez le logiciel EduPython en cliquant sur l'icône qui se trouve soit sur votre bureau, soit dans le

dossier "Maths".

Voici un exemple d'instruction conditionnelle "Si ... alors ..." en langage Python:

Explication du code (attention, certains éléments ont été détaillés dans le TP01):

if :

print ( "Le plus grand des deux nombres est y" )

suite du code...

x y<

En Python, le début et la fin du bloc "if" sont marqués par une indentation (texte en retrait par rapport à la marge);

lorsque l'on veut "sortir" du bloc "if", il suffit de revenir à la "marge normale".

Attention, la syntaxe de "if" est la suivante: on écrit "if", puis la condition, puis "deux points" (à ne pas oublier).

N.B: Pour arrêter le programme, dans le cas a=0, on utilisera l'instruction: exit (0)

Pour pouvoir utiliser cette instruction, nous aurons besoin, comme nous l'avons fait au TP01 pour la racine

carrée, de l'importer depuis le module "sys".

Pour cela, on tapera au début du programme la ligne: from sys import exit

Application à notre algorithme:

Traduire l'algorithme de la question 1.1 en Python.

Testez cet algorithme avec les valeurs de la question 1.2.

Votre programme donne-t-il des réponses cohérentes avec celles obtenues sous Algobox ? ..........................

2.2°) Lancez le logiciel EduPython en cliquant sur l'icône qui se trouve soit sur votre bureau, soit dans le dossier

"Maths".

Voici un exemple d'instruction conditionnelle "Si ... alors ... sinon,si ....sinon ...." en langage Python:

Explication du code:

if :

print ( "Le plus grand des deux nombres est y" )

elif x = = y :

print ( "Les deux nombres sont égaux" )

else:

print ( "Le plus grand des

x y<

deux nombres est x" )

premier cas:

si

deuxième cas:

sinon, si

troisième cas

sinon (cas )

x y

x y

x y

<

=

>

Lorsqu'il y a deux cas, on utilise les instructions "si...alors...sinon...", c'est-à-dire "if...else..."

Mais lorsqu'il y a davantage de cas, on dispose de l'instruction "elif ", contraction de "else if", c'est-à-dire "sinon, si..."

Comme pour l'instruction "if", le début et la fin de chacun des blocs sont marqués par une indentation (texte en retrait

par rapport à la marge); lorsque l'on veut "sortir" du bloc, il suffit de revenir à la "marge normale".

Attention également à ne pas oublier les "deux points".

Application à notre algorithme:

Traduire l'algorithme de la question 1.3 en Python.

Testez cet algorithme avec les valeurs de la question 1.3.

Votre programme donne-t-il des réponses cohérentes avec celles obtenues sous Algobox? ...........................

3. Avec votre calculatrice, avec Xcas

3.1°) Saisissez le programme correspondant à l'algorithme amélioré sur votre calculatrice TI, et testez-le pour

résoudre l'équation 2 16 16(10 1) 10 0x x− + + = .

Les solutions proposées par la calculatrices sont-elles correctes?....................................................................................

Si non, trouver algébriquement les solutions de l'équation et expliquer le phénomène observé.

............................................................................................................................................................................................

3.2°) Saisissez dans le logiciel de calcul formel XCAS l'instruction solve( ^ 2 (10 ^16 1)* 10 ^16 0x x− + + = , x ).

Que constatez-vous?..........................................................................................................................................................

1èreS - TP02: 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 2 0ax bx c+ + = , avec , ,a b c nombre réels donnés et 0a ≠ .

Voici un algorithme qui permet de trouver les solutions d'une telle équation:

TRINOME DU SECOND DEGRE: 2 0Ax Bx+ + =

Demander à l'utilisateur les valeurs de A, B, C

Calculer le discriminant ∆ , que l'on notera D

Afficher la valeur de ∆

Si 0∆ < , afficher "pas de solution"

Si 0∆ = , afficher "une solution", et sa valeur

Si 0∆ > , afficher "deux solution", les calculer, puis afficher leurs valeurs

1.1°) Ouvrir le logiciel Algobox, et traduire ce programme sur Algobox. Noter ci-dessous votre algorithme

Algobox:

1.2°) Testez cet algorithme sous Algobox avec les équations suivantes:

26 1 0x x− − =

Discriminant: 25 Solutions éventuelles: - 0.333 et 0.5

216 8 13 0x x− + =

Discriminant: -768 Solutions éventuelles: pas de solution

2 252 10 0

2x x− + =

Discriminant: 0 Solutions éventuelles: 2.5

1.3°) Testez cet algorithme sous Algobox avec les valeurs 0a = , 2b = , et 1c = .

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

1.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):

2. Traduction en Python

2.1°) Lancez le logiciel EduPython en cliquant sur l'icône qui se trouve soit sur votre bureau, soit dans le

dossier "Maths".

Application à notre algorithme:

Traduire l'algorithme de la question 1.3 en Python.

Testez cet algorithme avec les valeurs des questions 1.3 et 1.2.

Votre programme donne-t-il des réponses cohérentes avec celles obtenues sous Algobox ? Oui.

2.2°) Avec EduPython.

Application à notre algorithme:

Traduire l'algorithme de la question 1.4 en Python.

Testez cet algorithme avec les valeurs de la question 1.2.

Votre programme donne-t-il des réponses cohérentes avec celles obtenues sous Algobox ? Oui.

3. Avec votre calculatrice, avec Xcas

3.1°) Saisissez le programme correspondant à l'algorithme amélioré sur votre calculatrice TI, et testez-le pour

résoudre l'équation 2 16 16(10 1) 10 0x x− + + = .

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=",DFrac: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é 16 16² (10 1) 10x x− + + =0 :

( ) ( )2 2

16 16 32 16 16 32 16 16² 4 (10 1) 4 1 10 10 2 10 1 4 10 10 2 10 1 10 1b c∆ = − = − + − × × = + × + − × = − × + = −

0∆ > donc cette équation admet deux solutions distinctes :

( )2

16 1610 1 10 1 16 1610 1 10 11

2 2 2

bx

a

+ − −− − ∆ + − +

= = = = ou ( )

216 1610 1 10 1 16 1610 1 10 1 16

102 2 2

bx

a

+ + −− + ∆ + + −

= = = =

donc { }161;10S =

3.2°) Saisissez dans le logiciel de calcul formel XCAS l'instruction solve( ^ 2 (10 ^16 1)* 10 ^16 0x x− + + = , x ).

Que constatez-vous? l'équation l'inconnue

XCAS exhibe bien les deux solutions (séparées par une virgule): 1 et 1610 10000000000000000= , séparées par

une virgule (c'est une notation anglo-saxonne).

Remarquons qu'Algobox trouve ces deux solutions également.