2017-01-23 4 views
0

Я делаю программу, которая решает квадратичное уравнение и печатает корни. Прежде чем перейти к основной программе, я просто пытаюсь сделать работу с квадратным корнем. Ошибка, которую я получаю, говорит об ошибке «ошибка математического домена». Если кто-то может мне помочь, почему он не работает, это было бы здорово.Ошибка домена math домена 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

Возможно, вы вводите значения, которые вызывают отрицательное число. 'math.sqrt' не даст вам комплексных чисел. – 098799

+0

Строки 'x1 = int' и' x2 = int' не делают ничего полезного. – chepner

ответ

0

Известно, что sqrt дает эту ошибку при попытке использовать его с отрицательным числом.

Результат, вероятно, является комплексным числом, и, как указано в комментариях к 098799, «math.sqrt не даст вам комплексных чисел».

Вместо использования:

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

Попробуйте использовать:

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

Он работает с cmath, поскольку он обеспечивает доступ к математическим функциям для комплексных чисел.

+0

так что значит cmath? – user3093377

+0

Сложная математика, в которой sqrt (-1) == i (или j, как говорят некоторые). Но учитывая тот факт, что вы просто изучаете квадратичные уравнения, я не думаю, что вам нужно будет изучать сложные числа сейчас. Вы просто должны проверить, что b ** 2 - 4 * a * c> = 0. Если это> 0, вы найдете 2 решения, если это == 0, вы найдете одно решение. И действительно, x1 = int и x2 = int не доставят вас нигде. –

Смежные вопросы