功能:二维分形之Mandelbrot迭代

格式:
[R,x,y]=FractalMandelbrot2(f,x0,x1,y0,y1,m,n,Sum,Old)
[R,x,y]=FractalMandelbrot2(f,x0,x1,y0,y1,m,n,Sum)
[R,x,y]=FractalMandelbrot2(f,x0,x1,y0,y1,m,n)
[R,x,y]=FractalMandelbrot2(f,x0,x1,y0,y1,m)
[R,x,y]=FractalMandelbrot2(f,x0,x1,y0)
[R,x,y]=FractalMandelbrot2(f,x0,x1)
[R,x,y]=FractalMandelbrot2(f,x0)
[R,x,y]=FractalMandelbrot2(f)

f:字符串储存的函数表达式,其中里面的变量为x
x0:横坐标起始值,默认为-1.5
x1:横坐标结束值,默认为1.5
y0:纵坐标起始值,默认与x0一致
y1:纵坐标结束值,默认与x1一致
m:横坐标均分数,默认400
n:纵坐标均分数,默认与m一致
Sum:迭代最大次数,默认为4
Old:表示相对原坐标,此变量为一个1*2的矩阵变量.其里分别储存原坐标的横纵坐标,默认横纵原坐标均为0

R:返回m*n的矩阵变量,表示最终的值,其中返回的R=x^2+y^2
x:返回m*n的矩阵变量,表示最终复平面横向值
y:返回m*n的矩阵变量,表示最终复平面纵向值

原理:
记Old=[x_0,y_0]本函数对每一个点x,y进行如下迭代
    z.real = x
    z.imag = y
    k = 1
    不满足条件时( k<Sum  )进行如下迭代
    {
       z = f(z)
       k = k+1
    }
    R =z.real^2+z.imag^2
    x = z.real
    y = z.imag

注意:本函数与{FractalMandelbrot<矩阵运算\FractalMandelbrot>}函数不同的是本函数返回的第一个参数代表距离而非迭代次数

例子:

f="x^2+0.123-0.23*i";
[z,x,y]=FractalMandelbrot2(f,-1.5,1.5,-1.5,1.5,400,400,4);
{PlotPoint2D<矩阵运算\PlotPoint2D>}(x,y)

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

{<http://img0.ph.126.net/ZFUzfgnla8vzfHLqqKK3PQ==/6631288767535848696.png>}