使用python解决一元二次方程

python解一元二次方程

    • 一元二次方程的公式
    • 开始编程

一元二次方程的公式

一元二次方程的一般式为ax^2+bx+c=0(a不等于0)
一元二次方程的解法有几种,最简便的是公式法,即=b±根号b^2-4ac除以2a

开始编程

    a=int(input("请输入二次项的系数,如有根号,请输入无根号的部分"))
    b=int(input("请输入一次项的系数,如有根号,请输入无根号的部分"))
    c=int(input("请输入常数项的值,如有根号,请输入无根号的部分"))
    g=int(input("二次项是否有根号?如有,请输入去根号的数字,如无,请键入“1”"))
    h=int(input("一次项是否有根号?如有,请输入去根号的数字,如无,请键入“1”"))
    i=int(input("常数项是否有根号?如有,请输入去根号的数字,如无,请键入“1”")

先询问出abc的值, 以及带不带根号

    j=(g**(1/2))*a
    k=(h**(1/2))*b
    l=(i**(1/2))*c

这一步就是分别计算出a,b,c的值(根号默认为二次)

   d=(k**2)-4*j*l

这一步就相当于上面的b^2=4ac,只不过乘上了一个根号

    if d<0 or g==0 :
        print("此方程没有实数解")

这一步就是最基础的筛选,因为b^2-4ac小于0的话方程是没有实数解的,所以要先排除。
另外g也不能等于0,因为如果等于0的话就是一元一次方程了,不符合题意。

else:
    print("此方程有实数解")
    e=b+(d**(1/2))
    f=b-(d**(1/2))
    A=e/(2*a)
    B=f/(2*a)

排去了无解的式子,就要开始分析有解的式子了,e和f就是b±根号b^2-4ac除以2a上面的分子,
当然,分子分两种请况,一种是加,另一种是减,加对应e,减对应f
A和B也很好理解,就是分母(除以2a)

    if A !=B :
        print("该方程的实数解为X1=",-A,"X2=",-B)
    if A==B :
        print("实数解为X1=X2=",-A or -B)

最后再分析一下A和B的情况,如果A不等于B,就打印出两个数的值,等于的话就随机打印一个数的值(当然,也可以之打印一个)
最后的程序:

a=int(input("请输入二次项的系数,如有根号,请输入无根号的部分"))
b=int(input("请输入一次项的系数,如有根号,请输入无根号的部分"))
c=int(input("请输入常数项的值,如有根号,请输入无根号的部分"))
g=int(input("二次项是否有根号?如有,请输入去根号的数字,如无,请键入“1”"))
h=int(input("一次项是否有根号?如有,请输入去根号的数字,如无,请键入“1”"))
i=int(input("常数项是否有根号?如有,请输入去根号的数字,如无,请键入“1”"))
j=(g**(1/2))*a
k=(h**(1/2))*b
l=(i**(1/2))*c
d=(k**2)-4*j*l
if d<0 or g==0 :
    print("此方程没有实数解")
else:
    print("此方程有实数解")
    e=b+(d**(1/2))
    f=b-(d**(1/2))
    A=e/(2*a)
    B=f/(2*a)
    if A !=B :
        print("该方程的实数解为X1=",-A,"X2=",-B)
    if A==B :
        print("实数解为X1=X2=",-A or -B)

当然,各位学霸也可以不抄答案,而是自己验算一遍:

a=int(input("请输入二次项的系数,如有根号,请输入无根号的部分"))
b=int(input("请输入一次项的系数,如有根号,请输入无根号的部分"))
c=int(input("请输入常数项的值,如有根号,请输入无根号的部分"))
g=int(input("二次项是否有根号?如有,请输入去根号的数字,如无,请键入“1”"))
h=int(input("一次项是否有根号?如有,请输入去根号的数字,如无,请键入“1”"))
i=int(input("常数项是否有根号?如有,请输入去根号的数字,如无,请键入“1”"))
j=(g**(1/2))*a
k=(h**(1/2))*b
l=(i**(1/2))*c
d=(k**2)-4*j*l
if d<0 or g==0 or h==0 or i==0:
    print("此方程没有实数解")
else:
    print("此方程有实数解")
    e=b+(d**(1/2))
    f=b-(d**(1/2))
    A=e/(2*a)
    B=f/(2*a)
    z=int(input("请输入你计算的第一个值(分子)(不带根号)(加上的那个)"))
    ax=int(input("请输入第一个值的分母,如没有,请输入“1”"))
    y=int(input("请输入你计算的第一个值(根号下)如没有,请输入“0”"))
    x=input("请输入你计算的第一个值的运算")
    if x=='加':
        DIYI=(z/ax)+y**(1/2)
    if x=='减':
        DIYI=(z/ax)-y**(1/2)
    if DIYI==-A :
        print("你算对了!")
    else:
        print("你算错了!")
    zz=int(input("请输入你计算的第二个值(不带根号)(减去的那个)"))
    bx=int(input("请输入第二个值的分母,如没有,请输入“1”"))
    yy=int(input("请输入你计算的第二个值(根号下)如没有,请输入“0”"))
    xx=input("请输入你计算的第二个值的运算")
    if xx=='加':
        DIER=(zz/bx)+yy**(1/2)
    if xx=='减':
        DIER=(zz/bx)-yy**(1/2)
    if DIER==-B :
        print("你算对了!")
    else:
        print("你算错了!")
    if A !=B :
        print("该方程的实数解为X1=",-A,"X2=",-B)
    if A==B :
        print("实数解为X1=X2=",-A)

结束

你可能感兴趣的:(python)