Math domain error

brieux -  
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   -
import math 


Bonjour, voici mon programme:

print("Nous allons réaliser un trinôme du second degré de tel que P= aX²+bX+c")
a = float(input("Donner un nombre a: "))
b = float(input("Donner un nombre b: "))
c = float(input("Donner un nombre c: "))
delta = b*b -4*a*c
racine = math.sqrt(delta)
if delta < 0:
    print ("Le polynome n'a pas de racine réelle")
elif delta > 0:
    print ("Solution 1= ", ((-b-racine)/2*a), "Et Solution 2 = ", (-b+racine)/2*a)
elif delta == 0:
    print ("Le polynome a une solution= ", -b/(2*a))


Il m'affiche "math domain error"

Merci d'avance pour votre aide,
Brieux.

Configuration: Windows / Chrome 86.0.4240.75


Message modifié par la modération
Pour une lecture plus facile du code, à l'avenir utilisez les balises, VOIR CETTE PAGE

4 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 751
 
Bonjour,

Quelles valeurs as tu entrés ?
Car, je suppose que ton erreur se situe sur la ligne
racine = math.sqrt(delta)

Et si delta est négatif, il me semble normal que tu obtiennes cette erreur.

Il faudrait déplacer ta ligne 6 sous le if de ta ligne 9

0
Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   101
 
Et il y une double erreur de calcul ligne 10 que tu n'as pas en ligne 12.
0
quent217 Messages postés 420 Date d'inscription   Statut Membre Dernière intervention   347
 
Bonjour,
si tu veux éviter toutes les erreurs, il faut aussi gérer le cas où a est égale à 0.
0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 
Bonjour,

En gros, ca ressemblerait à ça:

# -*- coding:Latin-1 -*-
from math import *

print("\nRéalisons un trinôme du second degré de tel que P= ax²+bx+c")

a = float(input("Coefficient a: "))
b = float(input("Coefficient b: "))
c = float(input("Coefficient c: "))

if(a == 0.0):
	print('''\na est nul: ce n'est pas un polynome du second degré ''')
else:
	print('\nLe trinôme : {}x²+{}x+{}'.format(int(a),int(b),int(c)))
	
	delta = b**2-4*a*c
	print('\nDelta = {}, donc: '.format(delta))
	
	if delta < 0:
	    print ("\nLe polynome n'a pas de racine réelle")
	elif delta > 0:
	    print ("\nSolution 1 : {:.3f}\nSolution 2 : {:.3f}".format((-b-sqrt(delta))/(2*a), (-b+sqrt(delta))/(2*a)))
	elif delta == 0:
	    print ("\nLe polynome a une solution : {:.3f}".format(-b/(2*a)))
0