Chaotic Motion  1.0
Lorenz.cs
1 using UnityEngine;
2 using System.Collections;
3 
4 // eqn (26) from http://lsc.amss.ac.cn/~ljh/04LCC.pdf
5 
6 public class Lorenz : ChaosEqn {
7 
8  private float sigma = 10f; // value Lorenz used
9  private float b = 8f/3f; // value Lorenz used
10  private float rho = 28f; // guess
11 
12  public Lorenz() {
13  name = "Lorenz";
14 
15  eqnStrings = new string[]{
16  "x = sigma (y - x)",
17  "y = - x z + rho x - y",
18  "z = x y - b z"
19  };
20 
21  paramBundles = new ParamBundle[] {
22  // sigma, b, rho
23  new ParamBundle("default (scaled)", 10f, 8f/3f, 28f,
24  new Vector3(2f, 0.5f, 23f), new Vector3(0f, 0f, -25.2f), 0.22f),
25  new ParamBundle("default", 10f, 8f/3f, 28f,
26  new Vector3(0.1f, 0.1f, 0.1f)),
27  };
28 
29  paramNames = new string[] { "sigma", "b", "rho"};
30 
31  }
32 
33  public override void SetParams(ParamBundle pb)
34  {
35  sigma = pb.eqnParam[0];
36  b = pb.eqnParam[1];
37  rho = pb.eqnParam[2];
38  }
39 
40  public override void Function(ref float[] x_in, ref float[] x_out) {
41  x_out[0] = sigma * (x_in[1] - x_in[0]);
42  x_out[1] = -1f * x_in[0]*x_in[2] + rho * x_in[0] - x_in[1];
43  x_out[2] = x_in[0]*x_in[1] - b * x_in[2];
44  }
45 
46 }
Definition: Lorenz.cs:6
float[] eqnParam
parameters used in the equation
Definition: ParamBundle.cs:19
override void SetParams(ParamBundle pb)
Sets the parameter bunlde to be used by the system.
Definition: Lorenz.cs:33
Chaos eqn. Base class for all equations that define a 3D chaotic system.
Definition: ChaosEqn.cs:9
override void Function(ref float[] x_in, ref float[] x_out)
Evaluate the first order evolution of the attractor, given the current position.
Definition: Lorenz.cs:40
Parameter bundle. Container class to hold the values for starting a chaotic system. Holds the parameters for the equations and the initial position and scale values.
Definition: ParamBundle.cs:13