Кубические уравнения в Python - PullRequest
1 голос
/ 05 мая 2019

Используя формулу из https://engineersfield.com/cubic-equation-formula/:

class CubicEquation():
    def __init__(self,a,b,c,d):
        '''initialize constants and formula'''
        q = (3*c - b**2) / 9
        r = -27*d + b*(9*c - 2*b**2)
        discriminant = q**3 + r**2
        s = r + sqrt(discriminant)
        t = r - sqrt(discriminant)
        term1 = sqrt(3 * ((-t + s) / 2))
        r13 = 2 * sqrt(q)

        self.cubic_equation = [\
            '-term1 + r13*cos(q**3 / 3)',\
            '-term1 + r13*cos(q**3 + (2 * pi)/3)',\
            '-term1 + r13*cos(q**3 + (4 * pi)/3)'\
            ]
    def solve(self):
        *--snip--*

, а затем вызывая ее с answer = eval(self.cubic_equation[index])

при вызове этой формулы с аргументами (1,1,1,1), я получаю решение: -6.803217085397121, -8.226355957420402, -8.208435953185608 и да, я трижды проверил свои формулы с формулами на сайте.

Какой правильный код для этой функции и что не так с моей текущей программой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...