Python 实现一元二次方程

1.化方程为一般式:

 

2.确定判别式,计算Δ(希腊字母,音译为戴尔塔)。

  

3.若Δ>0,该方程在实数域内有两个不相等的实数根:;

 

若Δ=0,该方程在实数域内有两个相等的实数根:

  

若Δ<0,该方程在实数域内无解,但在虚数域内有两个共轭复根,为

  

证明:

 

任何一元二次方程组都能写成一般形式:

运用配方法能否解出①呢?

移项,得

  

.

二次项系数化1,得

  

.

配方

 

  

∵a≠0

∴4a2>0

的值有三种情况:

1)

 

由②得

 

2)

 

由②得

3)

 

由②得<0

∴实数范围内,此方程无解 [1] 

判别式

编辑

一般的,式子

  

叫做方程

  

判别式,通常用希腊字母Δ表示它,即

  

. [1] 

求根公式

编辑

综上所述,当Δ≥0时,方程

  

的实数根可写为的形式,

  

这个式子叫做一元二次方程

  

求根公式,通过求根公式可知,一元二次方程的根只可能有两个(有相同的算两个)。 [1] 

注意事项

编辑

一定不会出现不能用公式法解一元二次方程的情况。

但在能直接开方或者因式分解时最好用直接开方法和分解因式法。

 

Python实现:

1. 引入math

2. 定义返回的对象

3. 判断b*b-4ac的大小

具体计算代码如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

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

#! python2

import math

class Result:

  result1 = 0

  result2 = 0

  def __init__(self, r1, r2):

    self.result1 = r1

    self.result2 = r2

  def __return__(self):

    return Result(self.result1, self.result2)

def main(a, b, c):

  num = b*b-4*a*c

  if num < 0:

    return 'no result'

  elif num == 0:

    return Result((-b+math.sqrt(num))/(2*a), (-b+math.sqrt(num))/(2*a))

  else:

    return Result((-b+math.sqrt(num))/(2*a), (-b-math.sqrt(num))/(2*a))

if __name__ == '__main__':

  result = main(1, 2, 1)

  print result.result1, result.result2

 

 

你可能感兴趣的:(Python 实现一元二次方程)