Science 版 (精华区)

发信人: qpcwth (独翅鸟), 信区: Science
标  题: 《分形艺术》56
发信站: 哈工大紫丁香 (2001年11月03日18:24:54 星期六), 站内信件

第八章 实映射分形图
8.3 双混沌映射
    上一节已经知道,简单的逻辑斯蒂映射竟有极复杂的行为,以参数a和定态x ^*作图
(a,x^*)发现了各层次的周期窗口。特别当映射处于混沌区时, 相点具有遍历(ergodic
)甚至混合(mixing)行为,当a接近4时,相点差不多可以充满 整个相空间(0,1)。
    既然逻辑斯蒂映射在迭代过程中具有复杂行为,那么可否把它作为一种“数据源”
——类似 准随机数发生器——来使用呢?回答是肯定的。在混沌理论和分形理论研究中
,特别是混沌 控制研究中,人们经常这么做,即将一个方程的输出作为其他系统的输入
信号。
    中学时我们学过极坐标与直角坐标的转化,设极坐标用(ρ,θ)表示,直角 坐标用
(x,y)表示,则x=ρsinθ,y=ρ cosθ。现在考虑用逻辑斯蒂映射的迭代输出作为输入,
不断代换其中的 ρ和θ,计算出x和y并将它们画到平面上去。
    先作一些定性分析,因为当0<a<4时,逻辑斯蒂映射是有界的,值域是(0,1),
 所以ρ也是有界的,值域也是(0,1)。又因为正弦、余弦函数值域是[-1,1],所 以
x和y一定处于单位圆内。
    我们取两组逻辑斯蒂映射:x→ax(1-x)和y→a y(1-y),做如下操作
(1)x_(n+1)=ax_n(1-x_n),{a为参数}
(2)y_(n+1)=ay_n(1-y_n),
(3)R=x_(n+1)+y_(n+1),
(4)T=x_n+y_n,
(5)M=Rsin(KTπ),{K为参数}
(6)N=Rcos(KTπ),
(7)x_n=x_(n+1),
(8)y_n=y_(n+1)
    为了避免混乱,符号重新作了安排。上面的操作中的(1)和(2)式提供数据源,(3)和
(4)式对 数据源的数据作简单的四则运算(加、减、乘、除均可,并且可以乘上某个系数
,上面只给 出相加的情况),(5)和(6)式则对数据作最后处理,然后对(M,N)描点作图
,(7)和 (8)式表示迭代。实际上上述步骤可以简化为
M=f(x_(n+1),y_(n+1))sin[g(x_n,y_n) Kπ]
N=f(x_(n+1),y_(n+1))cos[g(x_n,y_n) Kπ]
函数f和g可以取各种形式,两者的位置也可以交换。以上还只是对一个参数 值a而言的
,可以变化参数a,把整个计算过程都记录下来,于是得到各种各 样美丽的图形。本小
节的标题称“双混沌映射”(double chaotic maps),是因为作图的原 始数据来源于两
个可产生混沌运动的逻辑斯蒂映射。
 
 
 
图8.4 参数K取不同正整数时得到的图形(试验一)
参数K的取值很重要,可以尝试取一般的整数(如1,2,3,12,23),也可以取小数甚至 负数

    至此,还有几个小问题没有交待。对于(1)和(2)式,迭代初始值x_0和y_0可 以取相
同的值,也可以取不同值,效果大不一样。另外,(1)和(2)式中参数也未必都取 a,也
可以取不同的值。
    现在所有技巧都说完了,能否作出好看的图形,全在于函数、参数的搭配和你的运
气了。别 急,我们会告诉一些有趣的取值,据此你可以举一反三,作出更美的图形。
{SunLiu.PAS, Jan.1,1997}
uses Graph,Dos,Crt;
var
    x,y,x1,x2,xx,yy,y1,y2,bigx,bigy,n,a:real;
Gd,Gm,ErrorCode,i:integer;
begin
  TextColor(RED);
  write('Input parameter K=');
  readln(K);  {1,2,3,4,5,6,7,8,9,17,50,3.25,-3.75}
  Gd:=Detect;InitGraph(Gd,Gm,'D:\PASCAL');
  ErrorCode:=GraphResult;
  if ErrorCode<>grOK then begin
         Writeln('Graphics error:',GraphErrorMsg(ErrorCode));
         Writeln('Program aborted...');
         Halt(1);
         end;
  x:=0.2;y:=0.2;a:=3.988;
    {if x equals y, the line is clear.}
  while a<= 3.999 do begin
  for i:=1 to 460 do begin
        xx:=a*x*(1-x);yy:=a*y*(1-y);
        x1:=xx+yy;y1:=x+y;
        bigx:=x1*cos(y1*K*Pi);
        bigy:=x1*sin(y1*K*Pi); {or x1 instead of y1}
        PutPixel(Round(bigx*100)+300,225-Round(bigy*100),15);
        x:=xx;y:=yy;
        end;
     a:=a+0.0001;
     if KeyPressed then Exit;
     end;
  sound(200);delay(200);nosound;readln;
  CloseGraph;
end.
    我们利用上面的算法和程序做几种试验:
    1)试验一固定参数a∈[3.988,3.999],改变n的值,使K取不同的 正整数n∈{1,2
,3,…}。参见图8.4,除一个奇点外,从图形内部到外部要K 次经过弧线。当K取正整数
时,中心的“心形”的尖端一直指向正左侧。
    2)试验二K取小数和负数时的情况,a取值同上。在图8.5中,K分别 取3.25, 3.50,
 3.75, -3.25, -3.50和-3.75,可以明显看到中心的“心形”的尖端不断转 动。为清楚
起见,有的区域涂上了黑色。
 
 
图8.5 参数K取小数和负数时得到的图形(试验二)
 
 
图8.6 左图为试验三、右图为试验四得到的图形,细心观察会发现右图与图8.1是一样的
, 只是表示方式不同而已。
    3)试验三将M和N形式改变一下:M=(x_n+y_n)sin[( x_n+y_n)Kπ],N=( x_n+y_n
)cos[(x_n+y_n)Kπ],K取值范围为 [2.3,3.999],这样会得到等距螺线,见图8.6左

    4)试验四将试验三中M和N表达式三角函数括号里的(x_n+ y_n)换成(x_(n+1)+y_(n+
1)),得到图8.6右。
 
图8.7 具有空间深度的双混沌迭代(试验五)
    5)试验五将上面程序中有关语句改为“y1=x*y,bigx:=cos(x1)cos(y1*K*π)”,其
他不变 ,变化参数K值,将得到图8.7。

--
心事浩茫连广宇,于无声处听惊雷

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.229.154]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.659毫秒