怎么用python解一元二次方程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用python解一元二次方程相关的知识,希望对你有一定的参考价值。

import numpy as np

def solve_quad(a,b,c):
    if a == 0:
        print('您输入的不是二次方程!')
    else:
        delta = b*b-4*a*c
        x = -b/(2*a)
        if delta == 0:
            print('方程有惟一解,X=%f'%(x))
            return x
        elif delta > 0:
            x1 = x-np.sqrt(delta)/(2*a)
            x2 = x+np.sqrt(delta)/(2*a)
            print('方程有两个实根:X1=%f,X2=%f'%(x1,x2))
            return x1,x2
        else:
            x1 = (-b+complex(0,1)*np.sqrt((-1)*delta))/(2*a)
            x2 = (-b-complex(0,1)*np.sqrt((-1)*delta))/(2*a)
            print('方程有两个虚根,如下所示:')
            print(x1,x2)
            return x1,x2

参考技术A 改其他的函数测试

用Python解方程

我们先从简单的来

例题1: 这是北师大版小学六年级上册课本95页的一道解方程练习题:

大家可以先口算一下,这道题里面的x的值为200

接下来我们用python来实现,代码如下,每一句代码后面都写有解释语:

 

1 import sympy   # 引入解方程的专业模块sympy
2 x = sympy.symbols("x")   # 申明未知数"x"
3 a = sympy.solve([x+(1/5)*x-240],[x])   # 写入需要解的方程体
4 print(a)  # 打印出结果

 

      大家应该注意到了,在写入方程体的时候,(上面的第三行代码)我们并没有原封不动的将原方程写进去,而是换了一种写法,将等号右边的数移到了等号左边(当然,移动的过程中注意要变号哦!)然后将等号丢弃,最后变成了一个式子。这个是我们的一个固定写法,大家记住就可以了。

 

注意:注意!!在数学里面数字和未知数相乘时中间可以不加任何符号,比如2x就代表2乘以x,但在计算机里,乘法必须写成*乘的形式。比如2*x,而不能直接写出2x,此处一定要注意!

这是运行后的结果:

技术图片

 

大家可以看到,结果被一对大括号包裹着,冒号前是要求的未知数,冒号后即是程序运行后得出的结果。

我们的计算机还是很聪明的,是吧!

 

 

例题2: 接下来我们来试一下两个未知数的

这是北师大版初中八年级上册课本132页的一道练习题:

技术图片

 

用python来实现,

 

1 import sympy   # 引入解方程的专业模块sympy
2 
3 x,y = sympy.symbols("x y")   # 申明未知数"x"和"y"
4 a = sympy.solve([3*x -2*y-3,x+2*y-5],[x,y])   # 写入需要解的方程组
5 print(a)  # 打印出结果

 

运行结果:

 

 技术图片

 

所以正确答案为:C答案

 

 

例题3: 接下来,我们再来尝试一下分式方程:

以下为2018成都市的中考数学真题A卷第8题:

 技术图片

 

用同样的程序逻辑,填好我们要求的方程,代码如下:

 

1 import sympy
2 
3 x = sympy.symbols("x")
4 a = sympy.solve([((x+1)/x + 1/(x-2))-1],[x])
5 print(a)

 

 

运行结果:

 技术图片

 

 

 

例题4: 最后,我们来尝试一下对于数学中考里必考的巧算代数式的值:

 

以下为2018成都市的中考数学真题B卷第21题:

技术图片

 

 

常规解题思路分析:

一、这是一道根据方程组的解计算代数式的值的常规考题,出这道题的意图就在于让同学们在不计算出未知数的值的基础上就能找到一定的技巧,求出答案。

二、如果单从联立两个方程,解方程组,然后再将解出来的x和y带入后面的代数式求结果的话,计算量会稍微大一些,而且计算过程需要非常仔细小心,因为这里面牵涉到小数,更或者是一些无理数,那我们常规的解决办法就是,观察后面的代数式,将其变为一个完全平方式子技术图片,再将前面两个方程构造成x+2y的模式,即将两方程相加,等号左边的相加,等号右边的相加,得到一个新方程技术图片

,化简,得技术图片,所以原式得技术图片

 

用Python实现:

 

 

技术图片
1 import sympy
2 
3 x,y = sympy.symbols("x y")
4 a = sympy.solve([x + y - 0.2,x + 3*y -1],[x,y])
5 x = a[x]
6 y = a[y]
7 re = x**2+4*x*y +4*y**2
8 print(re)
技术图片

注意:

  1. 不要省略乘号“*”
  2. “**”代表乘方

 

运行结果截图:

 技术图片

以上是关于怎么用python解一元二次方程的主要内容,如果未能解决你的问题,请参考以下文章

怎么用C语言解多元一次方程?需要得到最合适的解。

python3 练手实例2 解一元二次方程组

python 的scipy 里的 odeint 这个求微分方程的函数怎么用啊

python怎么求解一元二次方程的根?

如何解多元一次和二次方程

二次函数全解