【发布时间】:2012-03-10 01:42:46
【问题描述】:
所以基本上我想获取我的牛顿法找到根所需的迭代次数,然后将这个数字应用到我的配色方案中,使迭代次数越长,颜色越深,并且越少,颜色越饱满。
这是我的代码
from numpy import *
import pylab as pl
def myffp(x):
return x**3 - 1, 3*(x**2)
def newton( ffp, x, nits):
for i in range(nits):
#print i,x
f,fp = ffp(x)
x = x - f/fp
return x
q = sqrt(3)/2
def leggo(xmin=-1,xmax=1,jmin=-1,jmax=1,pts=1000,nits=30):
x = linspace(xmin, xmax, pts)
y = linspace(jmin, jmax, pts)*complex(0,1)
x1,y1 = meshgrid(x,y)
n = newton(myffp,x1+y1,nits) #**here is where i wanna see the number of iterations newton's method takes to find my root**
r1 = complex(1,0)
r2 = complex(-.5, q)
r3 = complex(-.5,-q)
data = zeros((pts,pts,3))
data[:,:,0] = abs(n-r1) #**and apply it here**
data[:,:,2] = abs(n-r2)
data[:,:,1] = abs(n-r3)
pl.show(pl.imshow(data))
leggo()
主要问题是找到迭代次数,然后我可以弄清楚如何将其应用于使颜色变暗,但现在它只是找到通过牛顿方法运行的每个值所需的迭代次数。
【问题讨论】:
-
Kevin:您似乎不确定如何接受对您的 SO 问题的回答。当您不熟悉 SO 时,这很简单,但并不那么明显。操作方法如下:如果您发现某个答案对您有帮助,则将鼠标移到该答案的左上角(答案“分数”出现在两个灰色三角形之间)。当您将鼠标悬停在乐谱上时,您将看到“检查”的轮廓。单击该复选标记以“接受”该答案。然后,您将看到答题者的得分为绿色,并且您的得分增加了 +2 分。
-
我不是很满意?他们都没有真正回答我的问题。它们绝对是可靠的答案,但我正在寻找使用公差的东西,并停止牛顿方法并最终返回停止该方法所需的迭代次数。你道格的一个答案(带有 eps 和旧 x)看起来很有希望,但我无法将它实现到我的代码中。
标签: python numpy matplotlib