This problem only requires a main module (named "SYSTEM") and is simple enough to be described by the SOSI language of DMSolver ("Single-module Only Simple Input") which the DMSolver Guide program converts for you to regular DMSolver language. The SOSI code is:
Parameters Sigma=10; RR=28; BB=2.666667; Equations Tderiv(X)=SIGMA*(Y-X); Tderiv(Y)=-X*Z+RR*X-Y; Tderiv(Z)=X*Y-BB*Z; end
The following is not exactly the text that the SOSI converter produces because it has been made more readable and with comments, but it is mathematically equivalent:
{ DMSolver program to compute Edward Lorenz's original "Attractor" nonlinear dynamic problem ( J. of the Atmospheric Sciences, Vol 20., pp 130-141 (1963))} VAR { global parameters must be defined to compiler} SIGMA, RR, BB:DOUBLE; procedure PARSET; {lets the user adjust parameters with GUI menu; default values are supplied} begin _PARD(5,'Sigma parameter','','SIGMA',SIGMA,10.0); _PARD(5,'r parameter','','RR',RR,28.0); _PARD(5,'b parameter','','BB',BB,2.66667); end; { Empty utility procedures are required to satisfy the linker} procedure SETUP; begin end; { no setup action needed } procedure TIMESET; begin end;{ no time-varying exogenously-set values } procedure REPORT; begin end; { no report } procedure ADDSET; begin end; { not applicable } procedure USERBPR; begin end; { " " } { define equation forms--simultaneous variables have special type XVR but inside XPROC's you treat them like 8-byte reals. } XPROC XDCALC(VAROT XD:XVR; VARIN X,Y:XVR); begin XD:=SIGMA*(Y-X); end; XPROC YDZDCALC(VAROT YD,ZD:XVR; VARIN X,Y,Z:XVR); begin YD:=-X*Z+RR*X-Y; ZD:=X*Y-BB*Z; end; { define SYSTEM module=overall block of equations and variables } MPROC SYSTEM; VAR XX,XXdot,YY,YYdot,ZZ,ZZdot:XVR; { define variables order not important} begin { define block of equations-order of defs not important } XDCALC(XXdot,XX,YY); YDZDCALC(YYdot,ZZdot,XX,YY,ZZ); PMSINTEG(XX,XXdot); { predefined procedure-integrate XXdot to get XX } PMSINTEG(YY,YYdot); { etc } PMSINTEG(ZZ,ZZdot); end;
Details and menu clicks needed to prepare and run a DMSolver problem are all described in the DMSdoc.html file. In this case I used the default parameters of Lorenz (otherwise you get different behavior) a "range" (scaling) factor of 10 for all variables (value not important in this case) and set time parameter starting at 0 and running out to several hundred units.
Starting the TTRV program with a click, and attaching the output type TTR file from the solver, and telling it to display X, Y, and Z, and picking a time range in the middle of the solution gives:
Saving the TTR file to an EDTECH type DSF file, and telling EDTECH to plot Y vs X for a limited range of times gives the typical "Lorenz attractor" or "butterfly" pattern as dicussed in the book by James Gleick, Chaos: Making a New Science (1987).