本页使用了标题或全文手工转换

洛伦茨吸引子

维基百科,自由的百科全书
跳转至: 导航搜索
ρ=28、σ = 10、β = 8/3时的洛伦茨系统轨迹

洛伦茨吸引子洛伦茨振子(Lorenz oscillator)的长期行为对应的分形结构,以爱德华·诺顿·洛伦茨的姓氏命名。洛伦茨振子是能产生混沌流的三维动力系统,是一種吸引子,以其双纽线形状而著称。映射展示出动力系统(三维系统的三个变量)的状态是如何以一种复杂且不重复的模式,随时间的推移而演变的。

洛伦茨系统中的吸引子轨迹

简述[编辑]

洛伦茨方程的一条轨迹被描绘成金属线,以展现方向以及三維结构

洛伦茨吸引子及其导出的方程组是由爱德华·诺顿·洛伦茨於1963年发表,最初是发表在《大气科学杂志》(Journal of the Atmospheric Sciences)杂志的论文《Deterministic Nonperiodic Flow》中提出的,是由大气方程中出现的对流卷方程简化得到的。

这一洛伦茨模型不只对非线性数学有重要性,对於气候和天气预报来说也有着重要的含义。行星和恒星大气可能会表现出多种不同的准周期状态,这些准周期状态虽然是完全确定的,但却容易发生突变,看起来似乎是随机变化的,而模型对此现象有明确的表述。

从技术角度看来,洛伦茨振子具有非線性、三维性和确定性。2001年,沃里克·塔克尔(Warwick Tucker)证明出在一组确定的参数下,系统会表现出混沌行为,显示出人们今天所知的奇异吸引子。这样的奇异吸引子是豪斯多夫维数在2与3之间的分形彼得·格拉斯伯格(Peter Grassberger)已於1983年估算出豪斯多夫维数为2.06 ± 0.01,而关联维数英语correlation dimension为2.05 ± 0.01。

此系统也会出现在单模激光[1]发电机[2]的简化模型中。除此之外,闭环对流、水轮转动等物理模型也有此系统的应用。

洛伦茨方程[编辑]

标出刻度的轨迹

洛伦茨方程是基於纳维-斯托克斯方程热传导方程连续性方程简化得出,最初的形式为:


\frac { \partial \vec v }{\partial t} + \left( \vec v \nabla \right) \vec v =
-\frac {\nabla p}{\rho} + \nu \nabla ^2 \vec v + \vec g

\frac { \partial \rho }{\partial t} + \nabla \left( \rho \vec v \right) = 0

\frac { \partial T }{\partial t} + \nabla \left( T \vec v \right) =
\chi \nabla ^2 T

\rho = \rho_0 \left( 1 - \gamma \left( T - T_0 \right) \right)

\vec v ——流速,T——流体温度,T_0——上限温度(也可以写成T_0 + \Delta T),\rho ——密度,p——压强,\vec g——重力,\gamma\chi\nu——依次为热膨胀系数热扩散率和动黏滯係數

简化後的形式称为洛伦茨方程,是决定洛伦茨振子状态的方程为一组常微分方程

\frac{dx}{dt} = \sigma (y - x)
\frac{dy}{dt} = x (\rho - z) - y
\frac{dz}{dt} = xy - \beta z

含时间参数的形式:

\begin{cases} 
\frac{\mathrm{d}x(t)}{\mathrm{d}t}=\sigma \bigl( y(t) - x(t) \bigr)\\ 
\frac{\mathrm{d}y(t)}{\mathrm{d}t}=\rho \, x(t) - y(t) - x(t) \, z(t)\\
\frac{\mathrm{d}z(t)}{\mathrm{d}t} =x(t) \, y(t) - \beta \, z(t) \end{cases}

\sigma称为普兰特尔数\rho称为瑞利数。所有的\sigma\rho\beta > 0,但通常\sigma = 10,\beta = 8/3,\rho不定。若\rho<1,则吸引子为原点,没有任何其他稳定点。1≤ρ<13.927时,螺线轨迹接近两点(这相当於存在阻尼振子),两点的位置由下列式子决定:~ x = \pm \sqrt{b (\rho-1) }~ y = \pm \sqrt{b (\rho-1) }~ z = \rho-1 。系统在\rho = 28时表现出混沌特性,但\rho为其他值时会显示出具纽结的周期轨道。例如,当\rho = 99.96时,图像变为一个T(3,2)环面纽结

初始条件的敏感依赖性
时间t=1 (放大) 时间t=2 (放大) 时间t=3 (放大)
Lorenz caos1-175.png Lorenz caos2-175.png Lorenz caos3-175.png
这三幅图是在ρ=28,σ = 10,β = 8/3的条件下生成的,展示出洛伦茨吸引子中的两条轨迹(蓝色、黄色各一)的三维演变的三个时段, 这两条轨迹的初始点只在x坐标上相差10-5。开始时,两条轨迹似乎是重合的(蓝色轨迹被黄色遮盖,因此只能看到黄色轨迹),但一段时间後,分离就变得明显了。
洛伦茨吸引子的Java动画展示了振子状态连续不断的演变

瑞利数[编辑]

不同ρ值时的洛伦茨吸引子
Lorenz Ro14 20 41 20-200px.png Lorenz Ro13-200px.png
ρ=14, σ=10, β=8/3 (放大) ρ=13, σ=10, β=8/3 (放大)
Lorenz Ro15-200px.png Lorenz Ro28-200px.png
ρ=15, σ=10, β=8/3 (放大) ρ=28, σ=10, β=8/3 (放大)
ρ值较小时,系统是稳定的,并能演变为两个定点吸引子中的一个;当ρ大於24.28时,定点变成了排斥子,会以非常复杂的方式排斥轨迹,演变时自身从不交叉。
显示不同ρ值时振子状态演变的Java动画

源代码[编辑]

GNU Octave[编辑]

下面是GNU Octave模拟洛伦茨吸引子的源代码:

## Lorenz Attractor equations solved by ODE Solve
## x' = sigma*(y-x)
## y' = x*(rho - z) - y
## z' = x*y - beta*z
function dx = lorenzatt(X)
    rho = 28; sigma = 10; beta = 8/3;
    dx = zeros(3,1);
    dx(1) = sigma*(X(2) - X(1));
    dx(2) = X(1)*(rho - X(3)) - X(2);
    dx(3) = X(1)*X(2) - beta*X(3);
    return
end
## Using LSODE to solve the ODE system.
clear all
close all
lsode_options("absolute tolerance",1e-3)
lsode_options("relative tolerance",1e-4)
t = linspace(0,25,1e3); X0 = [0,1,1.05];
[X,T,MSG]=lsode(@lorenzatt,X0,t);
T
MSG
plot3(X(:,1),X(:,2),X(:,3))
view(45,45)

Borland C[编辑]

#include <graphics.h>
#include <conio.h>
void main()
{
    double x = 3.051522, y = 1.582542, z = 15.62388, x1, y1, z1;
    double dt = 0.0001;
    int a = 5, b = 15, c = 1;
    int gd=DETECT, gm;
    initgraph(&gd, &gm, "C:\\BORLANDC\\BGI");
    do {
	x1 = x + a*(-x+y)*dt;
	y1 = y + (b*x-y-z*x)*dt;
	z1 = z + (-c*z+x*y)*dt;
	x = x1;	y = y1;	z = z1;
	putpixel((int)(19.3*(y - x*0.292893) + 320),
		 (int)(-11*(z + x*0.292893) + 392), 9);
    } while (!kbhit());
    closegraph();
}

Borland Pascal[编辑]

Program Lorenz;
Uses CRT, Graph;
Const
  x: Real = 3.051522;
  y: Real = 1.582542;
  z: Real = 15.62388;
  dt = 0.0001;
  a = 5;
  b = 15;
  c = 1;
Var
  gd, gm: Integer;
  x1, y1, z1: Real;
Begin
  gd:=Detect;
  InitGraph(gd, gm, 'c:\bp\bgi');
  While not KeyPressed Do Begin
      x1 := x + a*(-x+y)*dt;
      y1 := y + (b*x-y-z*x)*dt;
      z1 := z + (-c*z+x*y)*dt;
      x := x1;
      y := y1;
      z := z1;
      PutPixel(Round(19.3*(y - x*0.292893) + 320),
               Round(-11*(z + x*0.292893) + 392), 9);
    End;
    CloseGraph;
    ReadKey;
End.

Fortran[编辑]

program LorenzSystem
 
real,parameter::sigma=10
real,parameter::r=28
real,parameter::b=2.666666
real,parameter::dt=.01
integer,parameter::n=1000
 
real x,y,z
 
open(1,file='result.txt',form='formatted',status='replace',action='write')
 
x=10.;y=10.;z=10.
 
do i=1,n,1
    x1=x+sigma*(y-x)*dt
    y1=y+(r*x-x*z-y)*dt
    z1=z+(x*y-b*z)*dt
    x=x1
    y=y1
    z=z1
    write(1,*)x,y,z
enddo
 
print *,'Done'
 
 close(1)
 
end program LorenzSystem

QBASIC/FreeBASIC("fbc -lang qb")[编辑]

DIM x, y, z, dt, x1, y1, z1 AS SINGLE
DIM a, b, c AS INTEGER
x = 3.051522: y = 1.582542: z = 15.62388: dt = 0.0001
a = 5: b = 15: c = 1
SCREEN 12
PRINT "Press Esc to quit"
WHILE INKEY$ <> CHR$(27)
    x1 = x + a * (-x + y) * dt
    y1 = y + (b * x - y - z * x) * dt
    z1 = z + (-c * z + x * y) * dt
    x = x1
    y = y1
    z = z1
    PSET ((19.3 * (y - x * .292893) + 300), (-11 * (z + x * .292893) + 360)), 9
WEND
END

参见[编辑]

Wikibooks-logo.svg
您可以在維基教科書中查找此百科条目的相關電子教程:

参考文献[编辑]

  1. ^ (英文)Haken, H. Analogy between higher instabilities in fluids and lasers. Physics Letters A. 1975, 53 (1): 77–78. doi:10.1016/0375-9601(75)90353-9. 
  2. ^ (英文)Knobloch, Edgar. Chaos in the segmented disc dynamo. Physics Letters A. 1981, 82 (9): 439–440. doi:10.1016/0375-9601(81)90274-7. 

外部链接[编辑]