python中的二次公式求解器

2024-05-29 05:54:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python有点陌生,但我正在尽力学习。我的代码是

import math

a = 5
b = 5
c = 5

def quad_solve(a, b, c):
    q1 = b*b
    q2 = 4*a*c
    q3 = 2*a
    q4 = q1-q2
    sqr = math.sqrt(q4)
    sol1p1 = b+sqr
    sol1p2 = sol1p1/2
    sol2p1 = b-sqr
    sol2p2 = sol2p1/2
    print ("(",sol1p2,",",sol2p2,")")

quad_solve(a, b, c)

当我运行它时,它会给出错误

^{pr2}$

我不太明白。在

我正在尝试创建一个二次公式求解器。我使用数学模块,然后定义三个变量,a、b和c。然后,我定义一个接受这些变量的函数(最后调用函数)。在函数中,我定义了四个量。q1是平方根下的b平方,q2也是平方根下的4ac,q3是分母,q4计算平方根下的总和(即q1-q2)。然后,我定义了一个名为sqr的变量,它等于q4的平方根。然后,我定义了另外四个变量,这些变量用于计算解。sol1p1取b+sqr,sol1p2取{}并除以2。这是第一个解决方案。然后,sol2p1取b-sqr,sol2p2取{}并除以2。最后,sol1p2和{}被打印在一组括号中,中间有一个逗号。我希望这是有意义的;如果需要澄清变量名,请告诉我。在

我正在使用在线编译器更换(我不知道有没有什么特别需要考虑的)。在

谢谢!在


编辑:

我根据学徒的建议更新了我的代码。我首先添加了一个if语句:

import math

a = 5
b = 5
c = 5

def quad_solve(a, b, c):
    q1 = b*b
    q2 = 4*a*c
    q3 = 2*a
    q4 = q1-q2
    check = math.tan(q2)
    if (q1 > check):
        sqr = math.sqrt(q4)
        sol1p1 = b+sqr
        sol1p2 = sol1p1/2
        sol2p1 = b-sqr
        sol2p2 = sol2p1/2
        print ("(",sol1p2,",",sol2p2,")")
    else:
        print "Imaginary number. There are no zeros."

    quad_solve(a, b, c)

但它仍在继续返回错误

Traceback (most recent call last):
  File "python", line 23, in <module>
  File "python", line 14, in quad_solve
ValueError: math domain error

我不知道为什么。在


Tags: 代码定义mathprintsolvequadq3q2
3条回答

如果您只是想得到一个结果(而不是学习如何做到这一点),您可以使用sympy

from sympy import var, solve

x = var("x")
print(solve(5*x**2 + 5*x + 5))
# prints [-1/2 - sqrt(3)*I/2, -1/2 + sqrt(3)*I/2]

b^2必须大于4ac,所以现在,sqrt()函数得到一个负数。在

这是我用最少的代码行得到的答案:

import cmath

#Your Variables
a = 5
b = 5
c = 5

#The Discriminant
d = (b**2) - (4*a*c)

#The Solutions
solution1 = (-b-cmath.sqrt(d))/(2*a)
solution2 = (-b+cmath.sqrt(d))/(2*a)
print (solution1)
print (solution2)

相关问题 更多 >

    热门问题