1. 程式人生 > >python實現解一元二次方程

python實現解一元二次方程

python實現一元二次方程的求解

要考慮的點:

1、二元方程組a=0的情況

2、判別式是否大於0

3、當有複數解時如何表示

程式塊:

# -*- coding: utf-8 -*-

import math

def root_of_square(a,b,c):
    '''solve the quadratic equation'''
    discr=pow(b,2)-4*a*c
    if a!=0 and  discr>0:
        x1=(-b+math.sqrt(discr))/(2*a)
        x2=(-b-math.sqrt(discr))/(2*a)
        return x1,x2
    elif a!=0 and discr==0:
        return -b/(2*a)
    elif a!=0 and discr<0:
        x1=str(-b/(2*a))+"+"+str(math.sqrt(-discr)/(2*a))+"i"
        x2=str(-b/(2*a))+"-"+str(math.sqrt(-discr)/(2*a))+"i"
        return x1,x2
    elif a==0 and b!=0:
        return -c/b
    else:
        return "no solution"

if __name__=="__main__":
    a=input()
    b=input()
    c=input()
    print(root_of_square(float(a),float(b),float(c)))

實驗結果:

有兩個不同根的情況:

輸入:

1

0

-1

輸出 (1.0, -1.0)

有兩個同根的情況:

輸入:

1

2

1

輸出: -1.0

有兩個虛根的情況:

輸入:

1

2

2

輸出: ('-1.0+1.0i', '-1.0-1.0i')

a=0的情況:

輸入:

0

1

1

輸出: -1.0

無解的情況:

輸入:

0

0

1

輸出: no solution