首页 > 后端开发 > Python教程 > Python查找函数f(x)=0根的解决方法

Python查找函数f(x)=0根的解决方法

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-06-06 11:15:52
原创
1853 人浏览过

本文实例讲述了Python查找函数f(x)=0根的解决方法。分享给大家供大家参考。具体实现方法如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

''' root = ridder(f,a,b,tol=1.0e-9).

  Finds a root of f(x) = 0 with Ridder's method.

  The root must be bracketed in (a,b).

'''

import error

from math import sqrt

def ridder(f,a,b,tol=1.0e-9): 

  fa = f(a)

  if fa == 0.0: return a

  fb = f(b)

  if fb == 0.0: return b

  if fa*fb > 0.0: error.err('Root is not bracketed')

  for i in range(30):

   # Compute the improved root x from Ridder's formula

    c = 0.5*(a + b); fc = f(c)

    s = sqrt(fc**2 - fa*fb)

    if s == 0.0: return None

    dx = (c - a)*fc/s

    if (fa - fb) < 0.0: dx = -dx

    x = c + dx; fx = f(x)

   # Test for convergence

    if i > 0:

      if abs(x - xOld) < tol*max(abs(x),1.0): return x

    xOld = x

   # Re-bracket the root as tightly as possible

    if fc*fx > 0.0:

      if fa*fx < 0.0: b = x; fb = fx

      else:      a = x; fa = fx

    else:

      a = c; b = x; fa = fc; fb = fx

  return None

  print 'Too many iterations'

登录后复制

希望本文所述对大家的Python程序设计有所帮助。

相关标签:
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
python - ubuntu16.04 lxml的报错
来自于 1970-01-01 08:00:00
0
0
0
有办法在PHP里写Python吗?
来自于 1970-01-01 08:00:00
0
0
0
python scrapy爬虫错误
来自于 1970-01-01 08:00:00
0
0
0
python相关问题求解决,有偿
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板