ошибка математической области python для квадратного уравнения

#python #python-3.x #math

#python #python-3.x #математика

Вопрос:

Я полный новичок, и по какой-то причине, когда я пытаюсь запустить код, он говорит, что есть ошибка математической области. Я не совсем понимаю, в чем проблема, помощь была бы очень признательна 🙂

 a = float(input('Rentrer la valeur de a : '))
b = float(input('Rentrer la valuer de b : '))
c = float(input('Rentrer la valuer de c : '))
delta = b**2 - 4*a*c

x1 = ((-b)   sqrt(delta)) / (2*a)
x2 = ((-b) - sqrt(delta)) / (2*a)

console:

Traceback (most recent call last):
  File "main.py", line 31, in <module>
    x1 = ((-b)   sqrt(delta)) / (2*a)
ValueError: math domain error
 

Комментарии:

1. Для чего вы вводили a , b и c ?

2. Вы не имеете дело со случаем, когда delta отрицательно (в этом случае уравнение, которое вы пытаетесь решить, не будет иметь реальных решений).

3. a = 5 b = 4 и c = -1

4. Можете ли вы узнать и рассказать нам, какую версию Python вы используете сейчас?

5. хорошо, я думал, что «математического импорта *» будет достаточно, но теперь я понял это, еще раз спасибо

Ответ №1:

Функция sqrt должна принимать в качестве параметра положительное число. Когда вы вводите числа a, b и c, вы должны убедиться, что дельта (дискриминантное) значение положительное (см. https://en.wikipedia.org/wiki/Discriminant https://www.expii.com/t/the-discriminant-of-a-quadratic-4540 ). Если вы введете значения a = 1, b = 3, c = -2, вы не увидите эту ошибку, поскольку в этом случае значение дельты равно 17 (положительное число)

Если вы знаете, что такое комплексные числа, вы можете вместо этого использовать функцию sqrt из пакета cmath (из cmath import sqrt) и избежать этой ошибки, но вы будете работать с комплексными числами.

Ответ №2:

Ответ на удивление прост: вам нужна math библиотека:

 
from math import sqrt

a = float(input('Rentrer la valeur de a : '))
b = float(input('Rentrer la valuer de b : '))
c = float(input('Rentrer la valuer de c : '))
delta = b**2 - 4*a*c

x1 = ((-b)   sqrt(delta)) / (2*a)
x2 = ((-b) - sqrt(delta)) / (2*a)

print(x1, x2)

"""