功能:二维分形之牛顿迭代

格式:
[k,x,y]=FractalNewton(f,x0,x1,y0,y1,m,n,Sum,Error)
[k,x,y]=FractalNewton(f,x0,x1,y0,y1,m,n,Sum)
[k,x,y]=FractalNewton(f,x0,x1,y0,y1,m,n)
[k,x,y]=FractalNewton(f,x0,x1,y0,y1,m)
[k,x,y]=FractalNewton(f,x0,x1,y0)
[k,x,y]=FractalNewton(f,x0,x1)
[k,x,y]=FractalNewton(f,x0)
[k,x,y]=FractalNewton(f)

f:字符串储存的函数表达式,其中里面的变量为x
x0:横坐标起始值,默认为0
x1:横坐标结束值,默认为10
y0:纵坐标起始值,默认与x0一致
y1:纵坐标结束值,默认与x1一致
m:横坐标均分数,默认400
n:纵坐标均分数,默认与m一致
Sum:牛顿迭代最大次数,默认为100
Error:牛顿迭代误差控制参数,默认1E-8

k:返回m*n的矩阵变量,表示最终迭代次数
x:返回m*n的矩阵变量,表示最终复平面横向值
y:返回m*n的矩阵变量,表示最终复平面纵向值

原理:

1、本函数采用牛顿迭代法进行分形值求解

2、牛顿迭代过程如下,对于一个表达式 f(x) 在每个复平面求其根,对每个给定的点(x,y)进行如下迭代
    z.real = x
    z.imag = y
    k = 1
    不满足条件时进行如下迭代,其中f(z)'表示f(z)的导数
    {
       z = z - f(z)/f(z)'
       k = k+1
    }
    x = z.real
    y = z.imag

例子:

f="(x+x^2+3*x^3-5)/(2*x+3*x^2-4*x^3)-5*x+6";
[a,x0,y0]=FractalNewton(f,-40,40,-40,40,400,400,100,1e-8);
x={MeshGrid2<矩阵运算\MeshGrid2>}(1,400,400,400);
y=x';
{Cloud<矩阵运算\Cloud>}(x,y,a);

//依次执行上面5条命令可得到如下的分形图像

{<http://img2.ph.126.net/Ht_63PNFhsYouayKXE0fuA==/6630529005002257799.png>}