Science 版 (精华区)
发信人: qpcwth (独翅鸟), 信区: Science
标 题: 《分形艺术》43
发信站: 哈工大紫丁香 (2001年11月03日18:16:33 星期六), 站内信件
第六章 复平面上的迭代
6.1 复数四则运算与迭代
迪万内在《混沌动力系统引论》中说:“复解析函数动力学是一个比较专门的课题
。……20 世纪20年代,这一领域在数学家法图和朱丽亚的指导下曾经极度繁荣,……但
在70年代的新繁荣时期以前有一段休眠期。后来,主要由芒德勃罗的美丽动人的计算机
作图和道阿弟、哈伯德和沙利文(D.Sullivan)等人引人入胜的数学工作,又一次把人们
的注意力引向复平面丰富多彩的初等映射的动力学行为。”
对于本书作者和读者而言,“解析函数”、“复变函数”等概念都可暂且不管,知
道在复平面上对简单的多项式进行迭代能够生成美妙的分形图形,就足够了。在计算机
十分普及以前,要做这种练习几乎是不可能的。当年朱丽亚和法图是靠抽象的数学思维
,艰难地研究复迭代的。进入80年代,计算机产业大发展,正巧分形几何学又到来了,
一切条件都已成熟。芒德勃罗在干柴上点了一把火,复迭代复兴了,这把火一直烧到现
在,而且火势仍不减当年。
复数迭代比实迭代(见第八章)稍稍麻烦一些,进行复迭代需要知道复数的四则运算
。我们先复习一下高中学过的内容。
任意复数可以写成三种形式:1)代数形式:z=x+yi;2)三角形式:z=r (cosθ+isi
nθ);3)指数形式:z=re^(iθ)。 其中i=SQRT(-1)是虚数单位,x=Re(z)是复数的实部
,y=Im(z )是复数的虚部,r=|z|=|x+yi|=SQRT(x^2+y ^2)叫做复数的模,θ叫做复
数的辐角。在复平面上,实部一般用横坐标表示, 虚部一般用纵坐标表示。
设z_1,z_2,z_3都是复数,复数基本运算如下:
恒等式:e^(iθ)=cosθ+isinθ,
加法:z_1+z_2=(x_1+x_2)+(y_1+ y_2)i,
减法:z_1-z_2=(x_1-x_2)+(y_1- y_2)i,
乘法:z_1·z_2=(x_1x_2- y_1y_2)+(x_1y_2+x_2y_1)i,
除法:z_1/z_2=(x_1x_2+y_1y_2)/ (x^2_2+y^2_2)+(x_2y_1-x_1y_2)/ (x^2_2+y^2_2)i
,
余弦:cos(x + iy)= cosxcoshy-isinx sinhy,
正弦:sin(x + iy)= sinxcoshy+icosx sinhy,
指数:e^(x + iy)= e^xcosy+ie^x siny,
其中
双曲余弦:coshx= [e^x + e^(-x)]/2,
双曲正弦:sinhx= [e^x - e^(-x)]/2.
在复迭代程序中,这些基本运算经常用到,最好将它们都编制成函数(过程),存到
一个单元中去,使用时可以把它们当成“标准函数(过程)”调用。设单元为COMPLEX.TP
U, COMPLEX.PAS的内容如下:
unit complex;{PASCAL单元:复数四则运算}
interface
procedure add (x1, y1, x2, y2 : real; var x3, y3 : real); {复数加法}
procedure sub (x1, y1, x2, y2 : real; var x3, y3 : real); {复数减法}
procedure mult(x1, y1, x2, y2 : real; var x3, y3 : real); {复数乘法}
procedure cdiv(x1, y1, x2, y2 : real; var x3, y3 : real); {复数除法}
function cosh(x : real) : real; {双曲余弦函数}
function sinh(x : real) : real; {双曲正弦函数}
procedure csin(x,y : real; var x1, y1 :real);{复数正弦}
procedure ccos(x,y : real; var x1, y1 :real);{复数余弦}
procedure cexp(x,y : real; var x1, y1 :real);{复数指数}
implementation
procedure add (x1, y1, x2, y2 : real; var x3, y3 : real);{复数加法}
{计算z_3 = z_1 + z_2,
其中:z_1 = x_1 + iy_1,z_2 = x_2 + iy_2,z_3 = x_3 + iy_3}
begin
x3 := x1+x2;y3 := y1+y2
end;
procedure sub (x1, y1, x2, y2 : real; var x3, y3 : real);{复数减法}
{计算z_3 = z_1 - z_2}
begin
x3 := x1-x2;y3 := y1-y2
end;
procedure mult(x1, y1, x2, y2 : real; var x3, y3 : real);{复数乘法}
{计算z_3 = z_1 * z_2}
begin
x3 := x1*x2-y1*y2;y3 := y1*x2 + x1*y2
end;
procedure cdiv(x1, y1, x2, y2 : real; var x3, y3 : real);{复数除法}
{计算z_3 = z_1 / z_2}
var
denom : real; {分母}
begin
denom := x2*x2 + y2*y2;
x3 := (x1*x2 + y1*y2)/ denom; {实部}
y3 := (x2*y1 - x1*y2)/ denom {虚部}
end;
function cosh( x : real) : real; {计算双曲余弦cosh(x) }
begin
cosh := (exp(x) + exp(-x))/2.0
end;
function sinh( x : real) : real; {计算双曲正弦sinh(x) }
begin
sinh := (exp(x) - exp(-x))/2.0
end;
procedure ccos(x, y : real; var x1, y1 : real);
{计算复数余弦z = cos(x + iy),其中:x1是z的实部,y1是z的虚部}
begin
x1 := cos(x)*cosh(y);y1 := -sin(x)*sinh(y)
end;
procedure csin(x, y : real; var x1, y1 : real);
{计算复数正弦z =sin(x + iy),其中:x_1是z的实部,y_1是z的虚部}
begin
x1 := sin(x)*cosh(y);y1 := cos(x)*sinh(y)
end;
procedure cexp(x, y : real; var x1, y1 : real);
{计算复数指数z = e^(x + iy),其中:x_1是z的实部,y_1是z的虚部}
begin
x1 := exp(x)*cos(y);y1 := exp(x)*sin(y)
end;
end. {复数四则运算单元结束}
--
心事浩茫连广宇,于无声处听惊雷
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.229.154]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.271毫秒