For details, see How to Use.
Vnano  Solve The Lorenz Equations Numerically
A program to solve the Lorenz equations (see Theoretical Model section for details) numerically by using the RungeKutta 4th order (RK4) method, and output data to plot the solution curve on a 3D graph. The plotted solution curve is wellknown as the "Lorenz Attractor"
Code of this script is written in the Vnano. Code written in C, C++, and Java® are also distributed in Code section. In addition, the Vnano is a subset of the VCSSL, so you can execute this script as VCSSL code, with changing the extention of the script file to ".vcssl" .
What is the Vnano ?
 How to Use
 How to Plot Graphs
 When You Are Executing This Program on The VCSSL Runtime (Downloaded From This Page)
 When You Are Using The RINPn (A Scientific Calculator Software)
 When You Are Using The RINPn on The CommandLine Terminal
 When You Want to Use The Gnuplot For Plotting Graphs
 Theoretical Model
 Code
 License
ƒXƒƒ“ƒT[ƒŠƒ“ƒN
How to Use
Download and Extract
At first, click the "Download" button at the above of the title of this page by your PC (not smartphone). A ZIP file will be downloaded.
If you are using Microsoft® Windows®, rightclick the ZIP file and choose "Properties" from the menu, and enable "Unblock" checkbox at the rightbottom (in the line of "Security") of the propertieswindow. Otherwise, when you extract the ZIP file or when you execute the software, security warning messages may pop up and the extraction/execution may fail.
Then, please extract the ZIP file. On general environment (Windows®, major Linux distributions, etc.), you can extract the ZIP file by selecting "Extract All" and so on from rightclicking menu.
» If the extraction of the downloaded ZIP file is stopped with security warning messages...
Execute this Program
Next, open the extracted folder and execute this VCSSL program.
For Microsoft® Windows®
Doubleclick the batch file "VCSSL.bat" to execute.
For Linux®, etc.
Execute "VCSSL.jar" on the commandline terminal as follows:
java jar VCSSL.jar
» If the error message about nonavailability of "java" command is output...
Output Data For Plotting A Graph, And Save The Content to A File
Output Data For Plotting A Graph
When the program has started, a window will be displayed, and data for plotting a graph will be printed on the window line by line:
In printed data, coodinate values (x,y,z) of each point are described as "x y z" in a line, so each line represents each point to be plotted.
When the calculation has completed, printing of data stops (by default setting, it will complete immediately).
Save Data to A File
To save the printed data to a file, choose "File" > "Save File ..." menu, from the menubar at the top of the window.
See also: How to Plot Graphs section, which guides how to plot a graph from printed/saved data, and explains what is plotted in the graph.
How to Plot Graphs
When You Are Executing This Program on The VCSSL Runtime (Downloaded From This Page)
If you are executing this program as explained in How to Use section, it is executed by software "VCSSL Runtime", which is bundled in the downloaded package.
On the VCSSL Runtime, 2D & 3D graph plotting features are available by default, so you can plot printed data to a graph very easily. Let's plot it. After when the calculation has completed, choose "File" > "Plot Graph3D ..." menu, from the menubar at the top of the window:
Then, printed data on the window will plotted to a graph. By default, data will be plotted by only points, so enable "With Lines" option, from the menu bar of the graph window. Then all points on the graph will be connected by lines as the follows:
The above graph represents the solution curve of Lorenz equations, solved numerically by using RungeKutta 4th order (RK4) method.
If you want to play the animation drawing the solution curve from the beginning point to the end, click "Tool" > "Animation" menu, from the menu bar of the graph window.
An example of the animation is here (6.5 MB).
When You Are Using The RINPn (A Scientific Calculator Software)
The RINPn, a scientific calculator software, can execute programs written in the Vnano (containing this program), but graph plotting features are not supported by default.
Hence, it is necessary to use the RINPn with an independent graph plotting software, for plotting graphs from calculated data. The content of output data of this program is described in a standard format, so it is available on various graph plotting software, e.g.: gnuplot.
Let's plot the graph practically. We use "RINEARN Graph 3D", which is a 3D graph plotting software developped by the RINEARN, as same as the RINPn, the Vnano, and so on. You can get the RINEARN Graph 3D in free, from the following website:
 RINEARN Graph 3D Official Website
 https://www.rinearn.com/enus/graph3d/
When the RINEARN Graph 3D is executed, a graph window will be displayed. The graph window of the RINEARN Graph 3D is completely the same as it of the VCSSL Runtime (we saw it in the previous section), because the graphplotting feature of the VCSSL Runtime uses the RINEARN Graph internally.
By using the RINEARN Graph 3D, you can plot a graph from output data of this program very easily. At first, execute this program on the RINPn: Put this program in the folder of the RINPn, and input the file name of the program "IntegralForPlot.vnano", and press Enter key. Then a window will be displayed, and calculated data will be printed on the window line by line:
Next, select all lines of data on the above window (you can do it by pressing "Ctrl" + "A" keys), and copy it to the clipboard from the rightclick menu, and paste it on the RINEARN Graph 3D from the rightclick menu. Then the pasted data will be plotted on the graph window:
As the above, we can plot the completely same graph as the VCSSL Runtime.
When You Are Using The RINPn on The CommandLine Terminal
It is helpful to register pathes of "bin" folders of the RINPn and the RINEARN Graph 3D to the environment variable "PATH" or "Path" of your OS. Then you can use RINPn and the RINEARN Graph 3D on the commandline terminal, as "rinpn" and "ring3d" commands, as follows:
rinpn IntegralForPlot.vnano > data.txt
ring3d data.txt
When above commandlines are executed, calculated data will be saved as a file "data.txt", and a graph will be plotted from data in "data.txt" (the graph will be displayed on a window).
When You Want to Use The Gnuplot For Plotting Graphs
Also, if you want to plot a graph by using the gnuplot, input as follows:
rinpn LorenzAttractor.vnano > data.txt
gnuplot
(the gnuplot will be launched here)
set xlabel "X"
set ylabel "Y"
set zlabel "Z"
splot "data.txt" with lp palette pt 7 ps 0.5
(for exitting from the gnuplot)
quit
and so on, where "splot ... with lp" means that we want to plot a graph with lines(l) and points(p), "pt 7" is for specifying the type of points (markers) to filled circles (the number may depend on your environment and the version of the gnuplot), "ps 0.5" is for specifying the size of points. "palette" is for using gradation colors to render the graph.
The displayed graph on the gnuplot is:
As the above, we can plot graphs from output data of this program on various graphplotting software.
ƒXƒƒ“ƒT[ƒŠƒ“ƒN
Theoretical Model
As shown above, this program solves Lorenz equations numerically, and output data for plotting the solution curve on a graph. In this section, we describe some background knowledge about Lorenz equations and its solutions.
The Lorenz Equation
The Lorenz equations is the following nonlinear differential equation(s):
\[ \frac{dx}{dt} =  \sigma x + \sigma y \] \[ \frac{dy}{dt} =  x z + \rho x + y \] \[ \frac{dz}{dt} = x y  \beta z \]Above equations firstly appeared in this paper (Accessible on the website of the American Meteorological Society), published in 1963. The author is Edward Norton Lorenz, an American meteorologist, researched at MIT.
There is a page for Lorenz equations on the Wikipedia, so see it if you want to grasp behaviour of the equation briefly.
The Solution Curve
As the above, the Lorenz equations give timederivatives of x/y/z coordinates. In other words, they give the rule that how a point at \((x,y,z)\) moves at each moment. So, Let's put a point at \((x_0,y_0,z_0)\), where \(x_0,y_0,z_0\) are referred to as "initial values". Then the point starts to move. At each moment, the speed and the direction of the movement of the point are determined by the velocity vector \( \left( \frac{dx}{dt},\frac{dy}{dt},\frac{dz}{dt} \right) \), and its values are determined by the Lorenz equations. The following is the animation of the movement of the point:
As the above animation, behaviour of a point under the Lorenz equations are nonperiodic. The point whimsically jumps between two rings, under some conditions. Then the trajectory of the movement of the point, referred to as "the solution curve" (because the movement of the point satisfies lorenz equations), takes butterflylike shape as the following figure:
This butterflylike structure is wellknown as the "Lorenz Attractor", which is a kind of attractor.
Sensitivity to Initial Conditions
Let's compare movements of two points (red and green) under the Lorenz equations, where points are put very close position at the beginning:
As the above animation, distance between points grows as time proceeds, and movements and locations of points after some time elapsed are completely different from each other.
The above is cause by that movements under the Lorenz equations exhibit the "sensitivity to initial conditions". Generally, on systems exhibit such sensitivity, distance between two close points grows exponentially as time proceeds. Hence, if two initial point are not the completely same, no matter how they are closer initially, trajectories will completely separate after some time elapsed.
Hard to Predict
As shown above, behaviour under the Lorenz equations is nonperiodic and whimsical (even though it is completely deterministic), and has the sensitivity to initial conditions.
The above means that, when we want to predict the future of behaviour under the Lorenz equations, we are required to calculate movements of a point in complete precision at every moment. In addition, we must set the initial values in complete precision, even if they are irrational numbers. If any small error exists somewhere in the above, it grows exponentially as time proceeds, and the prediction will be completely broken, after some (not so long) time elapsed.
In addition, unfortunately, we can not get analytical general solutions of Lorenz equations, so we are required to compute numerical solutions by running programs on computers, as we performed in this page. However, generally, computers handle real numbers in some limited (incomplete) precision, so tiny numerical errors will be contained in calculation results between real numbers. Also, on the computer, we compute behaviour of a point at discrete time, so discretization errors will be contained in calculation results at each time.
Therefore, it is very hard  almost impossible  to predict the far future of behaviour of a point under the Lorenz equations in good precision.
The same is true for other "chaotic" systems. Behaviour under the Lorenz equations (Lorenz system) is a very simple example of chaotic systems. If you interested in this kind of problem, search webpages/books of Chaos theory, Butterfly effect, and so on. Then you might grasp why the verylongrange weather prediction is difficult, as Edward Norton Lorenz said in his paper.
Code
Entier Code
Code of this program is written in the Vnano. The Vnano has a simple Clike syntax, so if you accustomed with C or Clike programming languages, you probably can read/customize the content of code easily.
What is the Vnano ?
The following is the entier code:
Please feel free to ask me if you have any questions!
Author
[ President of RINEARN, Software Developer in Japan, Doctor of Science ]
License
The license of this VCSSL / Vnano code (the file with the extension ".vcssl" / ".vnano") is CC0 (Public Domain), so you can customize / divert / redistribute this VCSSL code freely.
Also, if example code written in C/C++/Java are displayed/distributed on Code section of this page, they also are distributed under CC0, unless otherwise noted.
Vnano  Solve The Lorenz Equations Numerically 


Solve the Lorenz equations, and output data to plot the solution curve (wellknown as the "Lorenz Attractor") on a 3D graph. 