13 подписчиков
Программа "Кубические уравнения" на языке Python.
С одним из учеников старшей школы изучали тему уравнений высших степеней, и я ему дал задание написать программу на языке Python по решению кубических уравнений, с которой он справился. Немного отшлифовал некоторые корявые моменты и некоторые ошибки, и, по-моему, всё работает шикарно.
Код программы прикладываю ниже:
import math
a = float(input("Введите коэф-т a при x^3: "))
b = float(input("Введите коэф-т b при x^2: "))
c = float(input("Введите коэф-т c при x: "))
d = float(input("Введите свободный член d: "))
p = (3*a*c - b**2)/(3*a**2)
q = (2*b**3 - 9*a*b*c + 27*a**2*d)/(27*a**3)
discriminant = q**2/4 + p**3/27
if discriminant > 0:
r = -q/2 + math.sqrt(discriminant)
s = -q/2 - math.sqrt(discriminant)
u = r**(1/3) if r >= 0 else -(-r)**(1/3)
v = s**(1/3) if s >= 0 else -(-s)**(1/3)
x1 = u + v - b/(3*a)
x2 = -(u + v)/2 - b/(3*a) + (u - v)*math.sqrt(3)/2j
x3 = -(u + v)/2 - b/(3*a) - (u - v)*math.sqrt(3)/2j
print("Реальный корень: x1 =", x1)
print("Комплексные корни: x2 =", x2, "и x3 =", x3)
elif discriminant == 0:
if q >= 0:
x1 = -2*q**(1/3) - b/(3*a)
x2 = q**(1/3) - b/(3*a)
print("Все три корня реальны, два из них совпадают: x1 =", x1, "и x2 = x3 =", x2)
else:
x1 = q**(1/3) - b/(3*a)
x2 = x3 = -(q**(1/3) + b/(3*a))/2
print("Все три корня реальны, два их них совпадают: x1 =", x1, "и x2 = x3 =", x2)
else:
alpha = (-q/2 + discriminant**(1/2))**(1/3)
beta = (-q/2 - discriminant**(1/2))**(1/3)
x1 = alpha + beta - b/(3*a)
x2 = -(alpha + beta)/2 - b/(3*a) + (alpha - beta)*math.sqrt(3)/2j
x3 = -(alpha + beta)/2 - b/(3*a) - (alpha - beta)*math.sqrt(3)/2j
print("Корень №1: x1 =", x1)
print("Корни №2 и №3: x2 =", x2, "и x3 =", x3)
Скрин по работе программы прикладываю ниже.
PS: если Вами найдены грамматические, лексические или даже физические и математические ошибки, то, прошу Вас, сообщайте о них на почту: akhmerov.nadil@gmail.com
1 минута
16 марта 2023
996 читали