Python求解一元二次方程

  • 发布时间:2016年3月6日 12:01
  • 作者:杨仕航
  • 分类标签: Python
  • 阅读(12133)
  • 评论(0)

最近比较喜欢研究一些数学的东西,今天写一个求解一元二次方程。

一元二次方程是这样的, y=ax2+bx+c。其中a,b,c都是参数,变量只有一个x,最高次数是2。

我们要求解这种方程,当然不是手算,要使用韦达定理求解。这种方程有两个解,分别是(-b+√(b2-4ac))/(2a)和(-b-√(b2-4ac))/(2a)。若b2-4ac<0的时候,则无解。


原理已经有了,那我们可以开始写代码了。

import math
def weida(a,b,c):
    dta=b**2-4*a*c
    if dta < 0:
        raise ValueError,'it is invalid'
    kv=math.sqrt(dta)
    return (-b+kv)/a/2,(-b-kv)/a/2


导入math模块,可以使用sqrt方法求平方。给定a,b,c三个参数,调用这个函数将返回两个值。加一段代码测试一下:

if __name__=='__main__':
    try:
        print weida(1,-2,1)
        print weida(1,6,8)
        print weida(4,2,1)
    except ValueError,e:
        print e.message

结果返回:

(1.0, 1.0)

(-2.0, -4.0)

it is invalid


最后一个,b2-4ac<0,所以报错。

上一篇:C#类、窗体和程序实现单例模式

下一篇:Python快递查询

评论列表

智慧如你,不想发表一下意见吗?

新的评论

清空