【洛伦茨吸引子】
ρ=28、σ = 10、β = 8/3时的洛伦茨系统轨迹
洛伦茨吸引子（Lorenz attractor）是洛伦茨振子（Lorenz oscillator）的长期行为对应的分形结构，以爱德华·诺顿·洛伦茨（Edward Norton Lorenz）的姓氏命名。洛伦茨振子是能产生混沌流的三维动力系统，又称作劳仑次系统（Lorenz system），其一组混沌解称作洛伦茨吸引子，以其双纽线形状而著称。映射展示出动力系统（三维-{}-系统的三个变量）的状态是如何以一种复杂且不重复的模式，随时间的推移而演变的。
洛伦茨系统中的吸引子轨迹
== 简述 ==
三维结构
洛伦茨吸引子及其导出的方程组是由爱德华·诺顿·洛伦茨于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。
此系统也会出现在单模激光和发电机的简化模型中。除此之外，闭环对流、水轮转动等物理模型也有此系统的应用。
==洛伦茨方程==
标出刻度的轨迹
洛伦茨方程是基于纳维－斯托克斯方程、连续性方程和热传导方程简化得出，最初的形式为：
是流速，是流体温度，是上限温度（也可以写成），是密度，是压强，是重力，、、依次是热膨胀系数、热扩散率和动黏滞系数。
简化后的形式称为洛伦茨方程，是决定洛伦茨振子状态的方程为一组常微分方程：
含时间参数的形式：
称为普兰特尔数 ，称为瑞利数。所有的，， > 0，但通常 = 10， = 8/3，不定。若，则吸引子为原点，没有任何其他稳定点。1≤ρ
== 瑞利数 ==
== 源代码 ==
=== 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
#include
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