Работа вам нужна срочно. Не волнуйтесь, уложимся!
- 22423 авторов готовы помочь тебе.
- 2402 онлайн
написать только код на python
Предмет: Математика
Раздел: Алгебра — решение кубических уравнений
На изображении показана реализация метода Кардано для нахождения корней кубического уравнения. Ошибка ValueError: math domain error
указывает на то, что подкоренное выражение в math.sqrt(P / 3)
оказалось отрицательным, а функция math.sqrt()
не работает с отрицательными числами.
Чтобы избежать ошибки, нужно использовать модуль cmath
, который поддерживает комплексные числа.
Вот исправленный код:
import cmath
import math
# Примерные значения коэффициентов (можно заменить своими)
a = 1
b = -6
c = 11
g = -6
# Вычисляем вспомогательные значения
P = b / a
Q = c / a
R = g / a
# Вычисляем alpha
sqrt_P_div_3 = cmath.sqrt(P / 3)
denominator = 2 * (sqrt_P_div_3 ** 3)
alpha = cmath.acos(R / denominator)
# Вычисляем корни уравнения
x1 = 2 * sqrt_P_div_3 * cmath.cos(alpha / 3)
x2 = 2 * sqrt_P_div_3 * cmath.cos((alpha + cmath.pi) / 3)
x3 = 2 * sqrt_P_div_3 * cmath.cos((alpha - cmath.pi) / 3)
# Вывод результатов
print(f"x1 = {x1:.4f}")
print(f"x2 = {x2:.4f}")
print(f"x3 = {x3:.4f}")
Теперь программа не выдаст ошибку при отрицательном подкоренном выражении и корректно обработает комплексные корни.