我有一个正在编写的程序,用户可以选择在求解二次或三次多项式的三次函数之间进行选择。选择后,程序会应用许多公式,包括:求解二次判别式、二次公式、二次多项式公式、Cardano 的三次多项式类比方法和标准三次公式(基本上,第一此页面上的四个公式)。
这是我的代码:
import math
def deg3():
print("This is a third degree polynomial calculator.")
print("Please enter four numbers.")
a = int(input())
b = int(input())
c = int(input())
d = int(input())
# Apply Cardano's compressed method to find x root, broken up into different variables.
p = (-1 * b)/(3 * a)
q = p ** 3 + (b * c - (3 * a * d))/ (6 * (a ** 2))
r = c / (3 * a)
x = (q + (q**2 + (r - p**2)**3) **1/2) **1/3 + (q + (q**2 + (r - p**2)**3) **1/2) **1/3 + p
print("The root is:", x)
# Applies final cubic formula, and returns.
total = (a * x**3) + (b * x**2) + (c * x) + d
total = round(total, 3)
return total
# If discr > 0, then the equation has three distinct real roots.
# If discr = 0, then the equation has a multiple root and all its roots are real.
# If discr < 0, then the equation has one real root and
# two nonreal complex conjugate roots.
现在它很容易返回一个总数。计算是正确的,但我仍在尝试围绕类似的公式进行思考。等式的判别部分是什么?我如何找到潜在的根,就像我使用二次公式一样?可能是一个简单的问题,但我想更好地理解这个过程。