📜  Python |寻找一个多项式方程的解

📅  最后修改于: 2021-05-04 21:57:47             🧑  作者: Mango

给定一个二次方程,任务是找到它的可能解。

例子:

Input : 
enter the coef of x2 : 1
enter the coef of x  : 2
enter the costant    : 1
Output :
the value for x is -1.0

Input :
enter the coef of x2 : 2
enter the coef of x  : 3
enter the costant    : 2
Output :
x1 = -3+5.656854249492381i/4 and x2 = -3-5.656854249492381i/4

算法 :

Start.
Prompt the values for a, b, c. 
Compute i = b**2-4*a*c
If i get negative value g=square root(-i)
Else h = sqrt(i)
Compute e = -b+h/(2*a)
Compute f = -b-h/(2*a)
If condition e==f then
    Print e
Else
    Print e and f
If i is negative then
    Print -b+g/(2*a) and -b-g/(2*a)
stop

以下是上述任务的Python实现。

# Python program for solving a quadratic equation.
   
from math import sqrt   
try:     
  
    # if user gives non int values it will go to except block
    a = 1
    b = 2
    c = 1
    i = b**2-4 * a * c
  
    # magic condition for complex values
    g = sqrt(-i)
    try:
        d = sqrt(i)
        # two resultants
        e = (-b + d) / 2 * a  
        f = (-b-d) / 2 * a
        if e == f:
            print("the values for x is " + str(e))
        else:
            print("the value for x1 is " + str(e) +
                  " and x2 is " + str(f))
    except ValueError:
        print("the result for your equation is in complex")
          
        # to print complex resultants.
        print("x1 = " + str(-b) + "+" + str(g) + "i/" + str(2 * a) + 
              " and x2 = " + str(-b) + "-" + str(g) + "i/" + 
              str(2 * a))   
          
except ValueError:
    print("enter a number not a string or char")

输出 :

the values for x is -1.0

解释 :
首先,该程序将从用户那里获得三个输入。值是x2 ,系数x并保持不变。然后执行公式
(-b + (or) - sqrt(b2 - 4 * a * c) / 2a)
对于复杂的值(b2 - 4 * a * c)变得消极。生根为负值将引发值错误。在这种情况下,将结果-(b2 - 4 * a * c)然后将其植根。别忘了包括i最后。