洛伦茨吸引子

勞侖次吸子是勞侖次振子（Lorenz oscillator）的長期行為對應的碎形結構，以愛德華·諾頓·勞侖次的姓氏命名。勞侖次振子是能產生混沌流的三維動力系統，是一種吸子，以其雙紐線形狀而著稱。映射展示出動力系統（三維系統的三個變量）的狀態是如何以一種複雜且不重複的模式，隨時間的推移而演變的。

簡述

勞侖次吸子及其導出的方程組是由愛德華·諾頓·勞侖次於1963年發表，最初是發表在《大氣科學雜誌》（Journal of the Atmospheric Sciences）雜誌的論文《Deterministic Nonperiodic Flow》中提出的，是由大氣方程式中出現的對流卷方程式簡化得到的。
這一勞侖次模型不只對非線性數學有重要性，對於氣候和天氣預報來說也有著重要的含義。行星和恆星大氣可能會表現出多種不同的准周期狀態，這些准周期狀態雖然是完全確定的，但卻容易發生突變，看起來似乎是隨機變化的，而模型對此現象有明確的表述。
從技術角度看來，勞侖次振子具有非線性、三維性和確定性。2001年，沃里克·塔克爾（Warwick Tucker）證明出在一組確定的參數下，系統會表現出混沌行為，顯示出人們今天所知的奇異吸子。這樣的奇異吸子是豪斯多夫維數在2與3之間的碎形。彼得·格拉斯伯格（Peter Grassberger）已於1983年估算出豪斯多夫維數為2.06 ± 0.01，而關聯維數為2.05 ± 0.01。
此系統也會出現在單模雷射和發電機的簡化模型中。除此之外，閉環對流、水輪轉動等物理模型也有此系統的應用。

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 LorenzSystemreal,parameter::sigma=10real,parameter::r=28real,parameter::b=2.666666real,parameter::dt=.01integer,parameter::n=1000real x,y,zopen(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,zenddoprint *,'Done'

 close(1)end program LorenzSystem

QBASIC/FreeBASIC("fbc -lang qb")

DIM x, y, z, dt, x1, y1, z1 AS SINGLEDIM a, b, c AS INTEGERx = 3.051522: y = 1.582542: z = 15.62388: dt = 0.0001a = 5: b = 15: c = 1SCREEN 12PRINT "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)), 9WENDEND