2017-01-23 6 views
0

Je fais un programme qui résout l'équation quadratique et imprime les racines. Avant d'arriver au programme principal, j'essaie simplement de faire fonctionner la racine carrée. L'erreur que je reçois dit "erreur de domaine mathématique". Si quelqu'un pouvait m'aider à savoir pourquoi cela ne fonctionne pas, ce serait formidable.Erreur de domaine mathématique Python

import math 

    a = int(sys.argv[1]) 
    b = int(sys.argv[2]) 
    c = int(sys.argv[3]) 
    x1 = int 
    x2 = int 
    # variables into solving equation and assign answers 
    print(math.sqrt((b**2)-(4*a*c))) 
+4

Il est probable que vous saisissiez des valeurs qui correspondent à un nombre négatif. 'math.sqrt' ne vous donnera pas de nombres complexes. – 098799

+0

Les lignes 'x1 = int' et' x2 = int' ne font rien d'utile. – chepner

Répondre

0

On sait que sqrt donne cette erreur lorsque vous essayez de l'utiliser avec un nombre négatif.

Le résultat est probablement un nombre complexe, et comme indiqué dans les commentaires par 098799, "math.sqrt ne vous donnera pas de nombres complexes".

Au lieu d'utiliser:

import math 
print(math.sqrt((b**2)-(4*a*c))) 

Essayez d'utiliser:

import cmath 
print(cmath.sqrt((b**2)-(4*a*c))) 

Il fonctionne avec cmath, car il donne accès à des fonctions mathématiques pour les nombres complexes.

+0

alors que signifie cmath? – user3093377

+0

Mathématiques complexes, dans lesquelles sqrt (-1) == i (ou j comme certains le disent). Mais étant donné que vous n'apprendrez que des équations quadratiques, je ne pense pas que vous ayez besoin d'apprendre des nombres complexes maintenant. Vous devriez juste tester que b ** 2 - 4 * a * c> = 0. Si c'est> 0, vous trouverez 2 solutions, si c'est == 0 vous trouverez une solution. Et en effet x1 = int et x2 = int ne vous mènera nulle part. –