#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)
"""