使用Muller方法改变方程上的参数

时间:2015-02-24 13:33:54

标签: python loops while-loop

我正在使用我在此链接中找到的Meller方法程序:

http://adorio-research.org/wordpress/?p=297

在例程结束时,它会计算您输入的任何函数的根:

 if __name__ == "__main__":
    def f(z):
       return z**3 +1
 xinit = 0.0
 ztol  = 1.0e-5
 ftol  = 1.0e-5
 maxiter = 100
 wantreal = False
 nroots = 3

 print zermuller(f, xinit, ztol, ftol, maxiter, wantreal, nroots)

但是,我想计算像

这样的等式
 z**3 +w

其中w的变化范围为1到2,步长为0.1或类似的东西。所以我尝试在表单中添加while命令:

w = 8
while w < 9  :
    w += 0.01 # Same as a = a + 1 
if __name__ == "__main__":
    def f(z):
       return  z**3 +w
 xinit = 0.0
 ztol  = 1.0e-5
 ftol  = 1.0e-5
 maxiter = 100
 wantreal = False
 nroots = 2

 print zermuller(f, xinit, ztol, ftol, maxiter, wantreal, nroots)

但它没有做任何事情,只计算w的第一个值,任何人都知道如何让它工作,或者我的while会出错命令。

1 个答案:

答案 0 :(得分:0)

您的代码

w = 8
while w < 9  :
    w += 0.01 # Same as a = a + 1

只是

的精心设计(和近似)替代方案
w = 9.01

你应该在循环中调用函数

def f(z):
    return z**3 + w

xinit = 0.0
ztol  = 1.0e-5
ftol  = 1.0e-5
maxiter = 100
wantreal = False
nroots = 3

for i in range(11):
    w = 8.0 + i/10.0
    print zermuller(f, xinit, ztol, ftol, maxiter, wantreal, nroots)