牛顿的吸引力盆地

时间:2015-11-18 17:46:04

标签: python newtons-method

我正在尝试使用python为多项式z^3-1绘制Newton的吸引盆。 我正在使用Newton-Raphson Iterative方法绘制图形。

直到现在,我能够绘制这个: Newton Basin My Plot

我想要生成的是这样的: Required Plot

有人可以建议我该怎么做?


更新1

包括初始点(我错误地省略了): Improved Plot


更新2

这是Newton-Raphson循环的代码。代码中是否有任何错误导致操作缓慢?

def newtonraphson(z):
    if z == 0:
        return False
    z1 = 0
    z2 = z
    tolerance = 1.0e-12

    while True:
        z1 = z2
        z2 = z1 - function(z1)/derivative(z1)
        if abs((z2 - z1).a) < tolerance:
            break

    return z2

1 个答案:

答案 0 :(得分:1)

你正在看的情节&#34;关于正确,&#34;除了它缺少更多积分并且均匀分布之外。

你如何选择要绘制的点和哪些点?

一般情况下,您希望将xy的整个范围作为初始条件求解。要选择所有这些初始xy s,您需要一个足够小的步骤,让您的图表看起来很漂亮(但不够小,以至于您浪费时间计算最终的点数成为同一像素的一部分。)

然后,您希望迭代Newton-Raphson方法而不是固定步数,而是直到您的解决方案足够接近z^3-1 == 0(等效,直到z^3-1为止足够)。通过这种方式,您确保为每个点获得颜色。

编辑回答你的评论:

  

当我尝试获取更多积分时,CPU使用率达到100%并且我的计算机开始滞后并且有时会挂起

您需要每隔一段时间将控制权交还给UI线程。这会使你的情节变慢,但它会确保它的响应速度。理想情况下,您将在后台线程中执行所有计算,并且只与UI线程通信,以便绘制每个像素。