我正在使用我在此链接中找到的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
会出错命令。
答案 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)