功能:迭代函数系统产生分形数据

格式:
[x,y,z]=FractalIFS(f,n,LoopSum,x0,y0,z0)
[x,y,z]=FractalIFS(f,n,LoopSum,x0,y0)
[x,y,z]=FractalIFS(f,n,LoopSum,x0)
[x,y,z]=FractalIFS(f,n,LoopSum)
[x,y,z]=FractalIFS(f,n)
[x,y,z]=FractalIFS(f)

f:储存计算点x、y、z的函数表达式,其里面会有4个变量传入x,y,z,r（代码格式仅支持VB.NET格式）其中x、y、z也会作为返回值进行传递,r为0到1之间的随机数据
n:产生的分形数据个数,默认为10000
LoopSum:每个数据产生时迭代的次数,默认为1
x0:迭代时的初始x值,默认为1
y0:迭代时的初始y值,默认为1
z0:迭代时的初始z值,默认为1

x:返回迭代得到的x点,其为n*1的矩阵变量
y:返回迭代得到的y点,其为n*1的矩阵变量
z:返回迭代得到的z点,其为n*1的矩阵变量

例子:

/*将如下代码保存入一个txt文档里

Dim x1,y1 As double
If(r<0.25)Then
	x1=0.195*x-0.488*y+0.4431
    y1=0.344*x+0.433*y+0.2452
ElseIf r<0.5 Then
	x1=0.462*x+0.414*y+0.2511
	y1=-0.252*x+0.361*y+0.5692
ElseIf r<0.75 Then 
	x1=-0.058*x-0.07*y+0.5976
	y1=0.453*x-0.111*y+0.0969
ElseIf r<0.95 Then 
	x1=-0.035*x+0.07*y+0.4884
	y1=-0.469*x-0.022*y+0.5069
Else
	x1=-0.637*x+0.8562
	y1=0.501*y+0.2513
End If
x=x1
y=y1

*/

[x,y]=FractalIFS();//回车在打开的文件对话框里选择上面保存内容的文件
{PlotPoint2D<矩阵运算\PlotPoint2D>}(x,y)//执行绘图,在窗口选择相应操作可得到如下的结果
{<http://img1.ph.126.net/vUqRVEfKPHqxQqkVFGe0vg==/1154891829461910772.png>}

如果将上面f里的函数代码换成如下,执行上面的命令后得到如下的结果
/*
Dim x1,y1 As double 
If(r<0.15)Then 
    x1=0.195*x-0.888*y+0.4431 
    y1=0.344*x+0.833*y+0.2452 
ElseIf r<0.45 Then 
      x1=0.462*x+0.414*y+0.5511 
      y1=-0.252*x+0.361*y+0.8692 
ElseIf r<0.65 Then  
      x1=-0.158*x-0.07*y+0.5976 
      y1=0.453*x-0.111*y+0.2969 
ElseIf r<0.85 Then  
      x1=-0.035*x+0.07*y+0.8884 
      y1=-0.469*x-0.022*y+0.8069 
Else 
      x1=-0.637*x+0.6562 
      y1=0.501*y+0.6513 
End If 
x=x1 
y=y1 
*/
{<http://img2.ph.126.net/UQw2Hb2YG6mutO_0mu_8lA==/6630730215630638534.png>}


//如果文本里保存的是下面的代码,然后执行下面的三行代码,可以得到如下的图
/*
Dim u,v,w,t As double 
u=10*(y-x)
v=28*x-y-x*z
w=x*y-2.67*z
x=x+u*0.001
y=y+v*0.001
z=z+w*0.001
*/

[x,y,z]=FractalIFS(,100000);
[z1,x1,y1]={MapValue<矩阵运算\mapvalue>}(x,y,z);
{Cloud<矩阵运算\Cloud>}(x1,y1,z1);
{<http://img2.ph.126.net/Dw08yvBNHORcbaa_eMDMjg==/6631329449466085568.png>}