├── .travis.yml
├── docs
└── images
│ ├── n-9baedbc330.png
│ ├── t-fc93da6f4d.png
│ ├── y-720f311276.png
│ ├── k_n-d413726dee.png
│ ├── l_2-23fd536b11.png
│ ├── t10-b3a7f6176e.png
│ ├── t15-27f16b808b.png
│ ├── delta-t-a20a5fe4f2.png
│ ├── l-infty-2f936b4f00.png
│ ├── l_infty-c904452e37.png
│ ├── 1-cdot-10-8-9ceae48083.png
│ ├── 1-cdot-10-8-ec70e94376.png
│ ├── begineqnarray-yt-ft-yt-yt_0-y_0-endeqnarray-0298eae3db.png
│ ├── begineqnarray-k_1-ft_n-y_n-k_2-ft_n-fracdelta-35d808c6ef.png
│ └── begineqnarray-y_n1-fracdelta-t6leftk_1-2k_2-2-41157480a7.png
├── .editorconfig
├── examples
├── 1xcos1x.js
├── plot.gp
├── erf.js
├── rkck.dat
├── rk4.dat
└── plot.ps
├── .gitignore
├── package.json
├── LICENSE
├── gulpfile.js
├── README.mdtex
├── README.md
├── test
└── test.js
└── lib
└── index.js
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - "0.12"
4 | - "0.11"
5 | - "0.10"
6 |
--------------------------------------------------------------------------------
/docs/images/n-9baedbc330.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scijs/ode45-cash-karp/HEAD/docs/images/n-9baedbc330.png
--------------------------------------------------------------------------------
/docs/images/t-fc93da6f4d.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scijs/ode45-cash-karp/HEAD/docs/images/t-fc93da6f4d.png
--------------------------------------------------------------------------------
/docs/images/y-720f311276.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scijs/ode45-cash-karp/HEAD/docs/images/y-720f311276.png
--------------------------------------------------------------------------------
/docs/images/k_n-d413726dee.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scijs/ode45-cash-karp/HEAD/docs/images/k_n-d413726dee.png
--------------------------------------------------------------------------------
/docs/images/l_2-23fd536b11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scijs/ode45-cash-karp/HEAD/docs/images/l_2-23fd536b11.png
--------------------------------------------------------------------------------
/docs/images/t10-b3a7f6176e.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scijs/ode45-cash-karp/HEAD/docs/images/t10-b3a7f6176e.png
--------------------------------------------------------------------------------
/docs/images/t15-27f16b808b.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scijs/ode45-cash-karp/HEAD/docs/images/t15-27f16b808b.png
--------------------------------------------------------------------------------
/docs/images/delta-t-a20a5fe4f2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scijs/ode45-cash-karp/HEAD/docs/images/delta-t-a20a5fe4f2.png
--------------------------------------------------------------------------------
/docs/images/l-infty-2f936b4f00.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scijs/ode45-cash-karp/HEAD/docs/images/l-infty-2f936b4f00.png
--------------------------------------------------------------------------------
/docs/images/l_infty-c904452e37.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scijs/ode45-cash-karp/HEAD/docs/images/l_infty-c904452e37.png
--------------------------------------------------------------------------------
/docs/images/1-cdot-10-8-9ceae48083.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scijs/ode45-cash-karp/HEAD/docs/images/1-cdot-10-8-9ceae48083.png
--------------------------------------------------------------------------------
/docs/images/1-cdot-10-8-ec70e94376.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scijs/ode45-cash-karp/HEAD/docs/images/1-cdot-10-8-ec70e94376.png
--------------------------------------------------------------------------------
/docs/images/begineqnarray-yt-ft-yt-yt_0-y_0-endeqnarray-0298eae3db.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scijs/ode45-cash-karp/HEAD/docs/images/begineqnarray-yt-ft-yt-yt_0-y_0-endeqnarray-0298eae3db.png
--------------------------------------------------------------------------------
/docs/images/begineqnarray-k_1-ft_n-y_n-k_2-ft_n-fracdelta-35d808c6ef.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scijs/ode45-cash-karp/HEAD/docs/images/begineqnarray-k_1-ft_n-y_n-k_2-ft_n-fracdelta-35d808c6ef.png
--------------------------------------------------------------------------------
/docs/images/begineqnarray-y_n1-fracdelta-t6leftk_1-2k_2-2-41157480a7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scijs/ode45-cash-karp/HEAD/docs/images/begineqnarray-y_n1-fracdelta-t6leftk_1-2k_2-2-41157480a7.png
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | indent_style = space
5 | indent_size = 2
6 | end_of_line = lf
7 | charset = utf-8
8 | trim_trailing_whitespace = true
9 | insert_final_newline = true
10 |
11 | [*.md]
12 | trim_trailing_whitespace = false
13 |
--------------------------------------------------------------------------------
/examples/1xcos1x.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | var rkck = require('../lib')
4 |
5 | var evaluations = 0
6 | var deriv = function(dydt, y, t) {
7 | evaluations ++
8 | dydt[0] = 1/t * Math.cos(1/t)
9 | }
10 |
11 | var ta = 0.01
12 | var tb = 1
13 |
14 | var i = rkck( [-1], deriv, ta, 1e-8, {
15 | tol: 5e-8,
16 | maxIncreaseFactor: 2
17 | })
18 |
19 | var rkck_y0 = i.y[0]
20 | i.steps( Infinity, tb )
21 | var rkck_y1 = i.y[0]
22 |
23 | var actual = -0.34255274804359265
24 | console.log('Absolute error:',Math.abs( actual - (rkck_y1-rkck_y0) ))
25 | console.log('Derivative evaluations:', evaluations )
26 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | build
2 |
3 | # Logs
4 | logs
5 | *.log
6 |
7 | # Runtime data
8 | pids
9 | *.pid
10 | *.seed
11 |
12 | # Directory for instrumented libs generated by jscoverage/JSCover
13 | lib-cov
14 |
15 | # Coverage directory used by tools like istanbul
16 | coverage
17 |
18 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
19 | .grunt
20 |
21 | # Compiled binary addons (http://nodejs.org/api/addons.html)
22 | build/Release
23 | build
24 |
25 | # Dependency directory
26 | # Deployed apps should consider commenting this line out:
27 | # see https://npmjs.org/doc/faq.html#Should-I-check-my-node_modules-folder-into-git
28 | node_modules
29 |
--------------------------------------------------------------------------------
/examples/plot.gp:
--------------------------------------------------------------------------------
1 | set terminal postscript
2 | set output "plot.ps"
3 |
4 | set xtics font "Verdana,8"
5 | set ytics font "Verdana,8"
6 |
7 | set multiplot
8 |
9 | set origin 0,0
10 | set yrange [-1.1:1.1]
11 | set size 1, 0.5
12 | set notitle
13 | set grid
14 | set nokey
15 | set xtics 1
16 | set ytics 1
17 | set style line 1 lc rgb '#0060ad' lt 1 lw 1 pt 6 pi -1 ps 0.5
18 | set pointintervalbox 0.4
19 | set title "Fifth Order Runge-Kutta Cash-Karp (RKCK)"
20 | plot "rkck.dat" using 1:2 with linespoints ls 1
21 |
22 | set origin 0,0.5
23 |
24 | set size 1, 0.5
25 | set yrange [-1.1:1.1]
26 | set notitle
27 | set grid
28 | set nokey
29 | set xtics 1
30 | set ytics 1
31 | set style line 1 lc rgb '#0060ad' lt 1 lw 1 pt 6 pi -1 ps 0.5
32 | set pointintervalbox 0.4
33 | set title "Fourth Order Runge-Kutta (RK4)"
34 | plot "rk4.dat" using 1:2 with linespoints ls 1
35 |
36 |
37 | set nomultiplot
38 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ode45-cash-karp",
3 | "version": "1.1.0",
4 | "description": "Integrate a system of Ordinary Differential Equations using the Fifth Order Adaptive Cash-Karp method",
5 | "main": "lib/index.js",
6 | "scripts": {
7 | "test": "mocha"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "git://github.com/scijs/ode45-cash-karp.git"
12 | },
13 | "keywords": [
14 | "scijs",
15 | "ode",
16 | "rk4",
17 | "runge-kutta",
18 | "adaptive",
19 | "rk45",
20 | "cash-karp",
21 | "ode45",
22 | "integration",
23 | "differential-equations",
24 | "calculus"
25 | ],
26 | "author": "Ricky Reusser",
27 | "license": "MIT",
28 | "devDependencies": {
29 | "chai": "^3.2.0",
30 | "gulp-filter": "^2.0.2",
31 | "gulp-latex": "^1.0.1",
32 | "gulp-markdown-equations": "^1.2.3",
33 | "gulp-pdftocairo": "^0.2.0",
34 | "gulp-tap": "^0.1.3",
35 | "mdtex-cli": "0.0.3",
36 | "mocha": "^2.2.5",
37 | "ode-rk4": "^1.1.2",
38 | "richardson-extrapolation": "^1.0.2"
39 | },
40 | "dependencies": {}
41 | }
42 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 Ricky Reusser
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/gulpfile.js:
--------------------------------------------------------------------------------
1 | var gulp = require('gulp')
2 | , mdEqs = require('gulp-markdown-equations')
3 | , tap = require('gulp-tap')
4 | , filter = require('gulp-filter')
5 | , latex = require('gulp-latex')
6 | , pdftocairo = require('gulp-pdftocairo')
7 |
8 |
9 | gulp.task('mdtex',function() {
10 | var texFilter = filter('*.tex')
11 | var mdFilter = filter('*.md')
12 |
13 | var transform = mdEqs({
14 | defaults: {
15 | display: { margin: '1pt 1pt 1pt -10pt' },
16 | inline: { margin: '1pt 1pt 1pt -5pt' }
17 | }
18 | })
19 |
20 | return gulp.src('*.mdtex')
21 | .pipe(transform)
22 | .pipe(texFilter)
23 | .pipe(latex())
24 | .pipe(pdftocairo({format: 'png'}))
25 | .pipe(gulp.dest('docs/images'))
26 | .pipe(tap(function(file) {
27 | transform.completeSync(file,function() {
28 | var img = '
'
30 | return this.inline ? img : '
'+img+'
'
31 | })
32 | }))
33 | .pipe(texFilter.restore()).pipe(mdFilter)
34 | .pipe(gulp.dest('./'))
35 | })
36 |
--------------------------------------------------------------------------------
/examples/erf.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | var fs = require('fs')
4 | , rkckOut = fs.openSync('rkck.dat','w')
5 | , rk4Out = fs.openSync('rk4.dat','w')
6 | , rk4 = require('ode-rk4')
7 | , rkck = require('../lib')
8 |
9 | var deriv = function(dydt, y, t) {
10 | dydt[0] = Math.exp(-t*t * 100) * 2/Math.sqrt(Math.PI/100)
11 | }
12 |
13 | var t0 = -10
14 | var tmax = 10
15 |
16 | var i1 = rkck( [-1], deriv, t0, 1e-4, {
17 | tol: 1e-5,
18 | dtMaxMag: 0.8,
19 | maxIncreaseFactor: 2
20 | })
21 | var i2 = rk4( [-1], deriv, t0, 1e-1 )
22 |
23 | var rkck_y0 = i1.y[0]
24 | fs.writeSync( rkckOut, i1.t + '\t' + i1.y[0] + '\t' + i1.dt + '\n' )
25 | while( i1.step( tmax ) ) {
26 | fs.writeSync( rkckOut, i1.t + '\t' + i1.y[0] + '\t' + i1.dt + '\n' )
27 | }
28 | var rkck_y1 = i1.y[0]
29 |
30 | var rk4_y0 = i2.y[0]
31 | fs.writeSync( rk4Out, i2.t + '\t' + i2.y[0] + '\t' + i2.dt + '\n' )
32 | for(var i=0; i<(tmax-t0)/i2.dt; i++, i2.step()) {
33 | fs.writeSync( rk4Out, i2.t + '\t' + i2.y[0] + '\t' + i2.dt + '\n' )
34 | }
35 | var rk4_y1 = i2.y[0]
36 |
37 | console.log('Computed value for RKCK:',rkck_y1-rkck_y0)
38 | console.log('Computed value for RK4:',rk4_y1-rk4_y0)
39 | fs.closeSync( rkckOut )
40 | fs.closeSync( rk4Out )
41 |
--------------------------------------------------------------------------------
/examples/rkck.dat:
--------------------------------------------------------------------------------
1 | -10 -1 0.0001
2 | -9.9999 -1 0.0002
3 | -9.9997 -1 0.0004
4 | -9.9993 -1 0.0008
5 | -9.9985 -1 0.0016
6 | -9.9969 -1 0.0032
7 | -9.9937 -1 0.0064
8 | -9.987300000000001 -1 0.0128
9 | -9.9745 -1 0.0256
10 | -9.9489 -1 0.0512
11 | -9.8977 -1 0.1024
12 | -9.795300000000001 -1 0.2048
13 | -9.5905 -1 0.4096
14 | -9.180900000000001 -1 0.8192
15 | -8.3809 -1 1.6
16 | -7.580900000000001 -1 1.6
17 | -6.780900000000001 -1 1.6
18 | -5.980900000000001 -1 1.6
19 | -5.180900000000001 -1 1.6
20 | -4.380900000000001 -1 1.6
21 | -3.5809000000000015 -1 1.6
22 | -2.7809000000000017 -1 1.6
23 | -1.9809000000000017 -1 1.6
24 | -1.1809000000000016 -1 1.6
25 | -0.38090000000000157 -0.9999999997640101 1.6
26 | -0.2649482893784474 -0.9998260069577104 0.12790151058038057
27 | -0.19382086731444015 -0.9938828321039379 0.07155001800492485
28 | -0.1222708493095153 -0.9162159191426491 0.06984626799092059
29 | -0.07207056970366268 -0.6919012777331394 0.04997940324426689
30 | -0.022091166459395795 -0.2452748271079545 0.06338484672730997
31 | 0.021835021658481134 0.24252254614281743 0.04390520288247406
32 | 0.0657402245409552 0.6474804220861907 0.06383860031267949
33 | 0.11516967098327338 0.8966368995735338 0.050460123152362285
34 | 0.16562979413563567 0.9808394146295267 0.06431708171714383
35 | 0.2299468758527795 0.9988547221833796 0.07061215263820199
36 | 0.3005590284909815 0.9999812854672542 0.09391984596678296
37 | 0.3944788744577644 1.0000030978855794 0.18783969193356592
38 | 0.5823185663913304 1.0000031353621894 0.37567938386713184
39 | 0.9579979502584622 1.0000031353621903 0.7513587677342637
40 | 1.7093567179927258 1.0000031353621903 1.5027175354685274
41 | 2.509356717992726 1.0000031353621903 1.6
42 | 3.309356717992726 1.0000031353621903 1.6
43 | 4.109356717992726 1.0000031353621903 1.6
44 | 4.9093567179927255 1.0000031353621903 1.6
45 | 5.709356717992725 1.0000031353621903 1.6
46 | 6.509356717992725 1.0000031353621903 1.6
47 | 7.309356717992725 1.0000031353621903 1.6
48 | 8.109356717992725 1.0000031353621903 1.6
49 | 8.909356717992726 1.0000031353621903 1.6
50 | 9.709356717992726 1.0000031353621903 1.6
51 | 10 1.0000031353621903 0.5812865640145475
52 |
--------------------------------------------------------------------------------
/examples/rk4.dat:
--------------------------------------------------------------------------------
1 | -10 -1 0.1
2 | -10 -1 0.1
3 | -9.9 -1 0.1
4 | -9.8 -1 0.1
5 | -9.700000000000001 -1 0.1
6 | -9.600000000000001 -1 0.1
7 | -9.500000000000002 -1 0.1
8 | -9.400000000000002 -1 0.1
9 | -9.300000000000002 -1 0.1
10 | -9.200000000000003 -1 0.1
11 | -9.100000000000003 -1 0.1
12 | -9.000000000000004 -1 0.1
13 | -8.900000000000004 -1 0.1
14 | -8.800000000000004 -1 0.1
15 | -8.700000000000005 -1 0.1
16 | -8.600000000000005 -1 0.1
17 | -8.500000000000005 -1 0.1
18 | -8.400000000000006 -1 0.1
19 | -8.300000000000006 -1 0.1
20 | -8.200000000000006 -1 0.1
21 | -8.100000000000007 -1 0.1
22 | -8.000000000000007 -1 0.1
23 | -7.9000000000000075 -1 0.1
24 | -7.800000000000008 -1 0.1
25 | -7.700000000000008 -1 0.1
26 | -7.6000000000000085 -1 0.1
27 | -7.500000000000009 -1 0.1
28 | -7.400000000000009 -1 0.1
29 | -7.30000000000001 -1 0.1
30 | -7.20000000000001 -1 0.1
31 | -7.10000000000001 -1 0.1
32 | -7.000000000000011 -1 0.1
33 | -6.900000000000011 -1 0.1
34 | -6.800000000000011 -1 0.1
35 | -6.700000000000012 -1 0.1
36 | -6.600000000000012 -1 0.1
37 | -6.500000000000012 -1 0.1
38 | -6.400000000000013 -1 0.1
39 | -6.300000000000013 -1 0.1
40 | -6.2000000000000135 -1 0.1
41 | -6.100000000000014 -1 0.1
42 | -6.000000000000014 -1 0.1
43 | -5.900000000000015 -1 0.1
44 | -5.800000000000015 -1 0.1
45 | -5.700000000000015 -1 0.1
46 | -5.600000000000016 -1 0.1
47 | -5.500000000000016 -1 0.1
48 | -5.400000000000016 -1 0.1
49 | -5.300000000000017 -1 0.1
50 | -5.200000000000017 -1 0.1
51 | -5.100000000000017 -1 0.1
52 | -5.000000000000018 -1 0.1
53 | -4.900000000000018 -1 0.1
54 | -4.8000000000000185 -1 0.1
55 | -4.700000000000019 -1 0.1
56 | -4.600000000000019 -1 0.1
57 | -4.5000000000000195 -1 0.1
58 | -4.40000000000002 -1 0.1
59 | -4.30000000000002 -1 0.1
60 | -4.200000000000021 -1 0.1
61 | -4.100000000000021 -1 0.1
62 | -4.000000000000021 -1 0.1
63 | -3.9000000000000212 -1 0.1
64 | -3.800000000000021 -1 0.1
65 | -3.700000000000021 -1 0.1
66 | -3.600000000000021 -1 0.1
67 | -3.500000000000021 -1 0.1
68 | -3.400000000000021 -1 0.1
69 | -3.3000000000000207 -1 0.1
70 | -3.2000000000000206 -1 0.1
71 | -3.1000000000000205 -1 0.1
72 | -3.0000000000000204 -1 0.1
73 | -2.9000000000000203 -1 0.1
74 | -2.8000000000000203 -1 0.1
75 | -2.70000000000002 -1 0.1
76 | -2.60000000000002 -1 0.1
77 | -2.50000000000002 -1 0.1
78 | -2.40000000000002 -1 0.1
79 | -2.30000000000002 -1 0.1
80 | -2.2000000000000197 -1 0.1
81 | -2.1000000000000196 -1 0.1
82 | -2.0000000000000195 -1 0.1
83 | -1.9000000000000195 -1 0.1
84 | -1.8000000000000194 -1 0.1
85 | -1.7000000000000193 -1 0.1
86 | -1.6000000000000192 -1 0.1
87 | -1.500000000000019 -1 0.1
88 | -1.400000000000019 -1 0.1
89 | -1.300000000000019 -1 0.1
90 | -1.2000000000000188 -1 0.1
91 | -1.1000000000000187 -1 0.1
92 | -1.0000000000000187 -1 0.1
93 | -0.9000000000000187 -1 0.1
94 | -0.8000000000000187 -1 0.1
95 | -0.7000000000000187 -1 0.1
96 | -0.6000000000000187 -1 0.1
97 | -0.5000000000000188 -0.9999999999973334 0.1
98 | -0.4000000000000188 -0.9999999776234598 0.1
99 | -0.3000000000000188 -0.9999731479998927 0.1
100 | -0.2000000000000188 -0.9950532521119884 0.1
101 | -0.1000000000000188 -0.8431373121671942 0.1
102 | -1.8790524691780774e-14 -0.00003448212434931097 0.1
103 | 0.09999999999998122 0.8430683479187677 0.1
104 | 0.19999999999998122 0.9949842878637084 0.1
105 | 0.2999999999999812 0.9999041837516206 0.1
106 | 0.39999999999998126 0.9999310133751877 0.1
107 | 0.49999999999998124 0.9999310357490613 0.1
108 | 0.5999999999999812 0.9999310357517279 0.1
109 | 0.6999999999999812 0.9999310357517279 0.1
110 | 0.7999999999999812 0.9999310357517279 0.1
111 | 0.8999999999999811 0.9999310357517279 0.1
112 | 0.9999999999999811 0.9999310357517279 0.1
113 | 1.0999999999999812 0.9999310357517279 0.1
114 | 1.1999999999999813 0.9999310357517279 0.1
115 | 1.2999999999999814 0.9999310357517279 0.1
116 | 1.3999999999999815 0.9999310357517279 0.1
117 | 1.4999999999999816 0.9999310357517279 0.1
118 | 1.5999999999999817 0.9999310357517279 0.1
119 | 1.6999999999999817 0.9999310357517279 0.1
120 | 1.7999999999999818 0.9999310357517279 0.1
121 | 1.899999999999982 0.9999310357517279 0.1
122 | 1.999999999999982 0.9999310357517279 0.1
123 | 2.099999999999982 0.9999310357517279 0.1
124 | 2.199999999999982 0.9999310357517279 0.1
125 | 2.299999999999982 0.9999310357517279 0.1
126 | 2.399999999999982 0.9999310357517279 0.1
127 | 2.4999999999999822 0.9999310357517279 0.1
128 | 2.5999999999999823 0.9999310357517279 0.1
129 | 2.6999999999999824 0.9999310357517279 0.1
130 | 2.7999999999999825 0.9999310357517279 0.1
131 | 2.8999999999999826 0.9999310357517279 0.1
132 | 2.9999999999999827 0.9999310357517279 0.1
133 | 3.0999999999999828 0.9999310357517279 0.1
134 | 3.199999999999983 0.9999310357517279 0.1
135 | 3.299999999999983 0.9999310357517279 0.1
136 | 3.399999999999983 0.9999310357517279 0.1
137 | 3.499999999999983 0.9999310357517279 0.1
138 | 3.599999999999983 0.9999310357517279 0.1
139 | 3.6999999999999833 0.9999310357517279 0.1
140 | 3.7999999999999834 0.9999310357517279 0.1
141 | 3.8999999999999835 0.9999310357517279 0.1
142 | 3.9999999999999836 0.9999310357517279 0.1
143 | 4.099999999999984 0.9999310357517279 0.1
144 | 4.199999999999983 0.9999310357517279 0.1
145 | 4.299999999999983 0.9999310357517279 0.1
146 | 4.399999999999983 0.9999310357517279 0.1
147 | 4.499999999999982 0.9999310357517279 0.1
148 | 4.599999999999982 0.9999310357517279 0.1
149 | 4.6999999999999815 0.9999310357517279 0.1
150 | 4.799999999999981 0.9999310357517279 0.1
151 | 4.899999999999981 0.9999310357517279 0.1
152 | 4.9999999999999805 0.9999310357517279 0.1
153 | 5.09999999999998 0.9999310357517279 0.1
154 | 5.19999999999998 0.9999310357517279 0.1
155 | 5.299999999999979 0.9999310357517279 0.1
156 | 5.399999999999979 0.9999310357517279 0.1
157 | 5.499999999999979 0.9999310357517279 0.1
158 | 5.599999999999978 0.9999310357517279 0.1
159 | 5.699999999999978 0.9999310357517279 0.1
160 | 5.799999999999978 0.9999310357517279 0.1
161 | 5.899999999999977 0.9999310357517279 0.1
162 | 5.999999999999977 0.9999310357517279 0.1
163 | 6.0999999999999766 0.9999310357517279 0.1
164 | 6.199999999999976 0.9999310357517279 0.1
165 | 6.299999999999976 0.9999310357517279 0.1
166 | 6.3999999999999755 0.9999310357517279 0.1
167 | 6.499999999999975 0.9999310357517279 0.1
168 | 6.599999999999975 0.9999310357517279 0.1
169 | 6.699999999999974 0.9999310357517279 0.1
170 | 6.799999999999974 0.9999310357517279 0.1
171 | 6.899999999999974 0.9999310357517279 0.1
172 | 6.999999999999973 0.9999310357517279 0.1
173 | 7.099999999999973 0.9999310357517279 0.1
174 | 7.199999999999973 0.9999310357517279 0.1
175 | 7.299999999999972 0.9999310357517279 0.1
176 | 7.399999999999972 0.9999310357517279 0.1
177 | 7.499999999999972 0.9999310357517279 0.1
178 | 7.599999999999971 0.9999310357517279 0.1
179 | 7.699999999999971 0.9999310357517279 0.1
180 | 7.7999999999999705 0.9999310357517279 0.1
181 | 7.89999999999997 0.9999310357517279 0.1
182 | 7.99999999999997 0.9999310357517279 0.1
183 | 8.09999999999997 0.9999310357517279 0.1
184 | 8.199999999999969 0.9999310357517279 0.1
185 | 8.299999999999969 0.9999310357517279 0.1
186 | 8.399999999999968 0.9999310357517279 0.1
187 | 8.499999999999968 0.9999310357517279 0.1
188 | 8.599999999999968 0.9999310357517279 0.1
189 | 8.699999999999967 0.9999310357517279 0.1
190 | 8.799999999999967 0.9999310357517279 0.1
191 | 8.899999999999967 0.9999310357517279 0.1
192 | 8.999999999999966 0.9999310357517279 0.1
193 | 9.099999999999966 0.9999310357517279 0.1
194 | 9.199999999999966 0.9999310357517279 0.1
195 | 9.299999999999965 0.9999310357517279 0.1
196 | 9.399999999999965 0.9999310357517279 0.1
197 | 9.499999999999964 0.9999310357517279 0.1
198 | 9.599999999999964 0.9999310357517279 0.1
199 | 9.699999999999964 0.9999310357517279 0.1
200 | 9.799999999999963 0.9999310357517279 0.1
201 | 9.899999999999963 0.9999310357517279 0.1
202 |
--------------------------------------------------------------------------------
/README.mdtex:
--------------------------------------------------------------------------------
1 | # ode45-cash-karp [](https://travis-ci.org/scijs/ode45-cash-karp) [](http://badge.fury.io/js/ode45-cash-karp) [](https://david-dm.org/scijs/ode45-cash-karp)
2 |
3 | > Integrate a system of Ordinary Differential Equations using the Fifth Order Adaptive Cash-Karp method
4 |
5 |
6 | ## Introduction
7 |
8 | This module integrates a system of ordinary differential equations of the form
9 |
10 | $$[plain=true] \begin{eqnarray*} y'(t) &=& f(t, y(t)), \\ y(t_0) &=& y_0 \end{eqnarray*} $$
11 |
12 | where $y$ is a vector of length $n$. Given time step $\Delta t$, the [Cash-Karp](https://en.wikipedia.org/wiki/Cash%E2%80%93Karp_method) method uses a fifth order Runge-Kutta scheme with a fourth order embedded estimator in order to control the error. In other words, the same intermediate values used in calculating the fifth order update can be used to calculate a fourth order estimate. The difference yields an error estimate, and the error estimate controls the timestep $\Delta t$.
13 |
14 | ## Install
15 |
16 | ```bash
17 | $ npm install ode45-cash-karp
18 | ```
19 |
20 | ## Example
21 |
22 | ### [Van der Pol oscillator](https://en.wikipedia.org/wiki/Van_der_Pol_oscillator)
23 |
24 | ```javascript
25 | var ode45 = require('ode45-cash-karp')
26 |
27 | // The derivative function for a Van der Pol oscillator:
28 | var vanderpol = function(dydt, y, t) {
29 | dydt[0] = y[1]
30 | dydt[1] = 4 * (1-y[0]*y[0])*y[1] - y[0]
31 | }
32 |
33 | // Initialize:
34 | var y0 = [2,0],
35 | t0 = 0,
36 | dt0 = 1e-3,
37 | integrator = ode45( y0, vanderpol, t0, dt0 )
38 |
39 | // Integrate up to tmax:
40 | var tmax = 10, t = [], y = []
41 | while( integrator.step( tmax ) ) {
42 | // Store the solution at this timestep:
43 | t.push( integrator.t )
44 | y.push( integrator.y )
45 | }
46 | ```
47 |
48 | ### Common patterns
49 |
50 | A single adaptive step:
51 | ```
52 | integrator.step()
53 | integrator.y // current state
54 | integrator.t // current time
55 | integrator.dt // newly adapted timestep
56 | ```
57 |
58 | A single adaptive step, returning false if $t=1.5$ reached:
59 | ```
60 | integrator.step( 1.5 ) // returns true if t < 1.5
61 | integrator.step( 1.5 ) // returns false if t = 1.5
62 | ```
63 |
64 | Ten adaptive timesteps in sequence:
65 | ```
66 | integrator.steps( 10 )
67 | ```
68 |
69 | Ten timesteps, halting early and returning false if $t=1.5$ is reached::
70 | ```
71 | integrator.steps( 10, 1.5 )
72 | ```
73 |
74 | Take any number of timesteps until $t=1.5$:
75 | ```
76 | integrator.steps( Infinity, 1.5 )
77 | ```
78 |
79 | ## API
80 |
81 | #### `require('ode45-cash-karp')( y0, deriv, t0, dt0 [, options] )`
82 | #### Arguments:
83 | - `y0`: an array or typed array containing initial conditions. This vector is updated in-place with each integrator step.
84 | - `deriv`: a function that calculates the derivative. Format is `function( dydt, y, t )`. Inputs are current state `y` and current time `t`, output is the calculated derivative `dydt`.
85 | - `t0`: initial time $t$.
86 | - `dt0`: initial time step $\Delta t$.
87 | - `options`: an optional associative array of options. Valid parameters are:
88 | - `tol`: The target error level to be acheived. Default is: $[margin=1pt 1pt 1pt -3pt] 1 \cdot 10^{-8}$.
89 | - `maxIncreaseFactor`: The maximum factor by which to increase the timestep if the error tolerance is met. Default value is 10. This limit is applied at the end of a successful timestep.
90 | - `maxDecreaseFactor`: The maximum factor by which to decrease the timestep if the error tolerance is not met. Default value is 10. This limit is applied on each trial step until the error tolerance is acheived.
91 | - `dtMinMag`: The minimum allowed magnitude of $\Delta t$. If limit is exceeded during adaptation, a warning is printed to the console and the timestep completes with $\Delta t$ clipped to the the prescribed magnitude. If `undefined`, this limit is ignored. Default value is `undefined`.
92 | - `dtMaxMag`: The maximum allowed magnitude of $\Delta t$. This limit is applied at the beginning of each step. If a timestep larger than this magnitude is requested, the timestep is executed with $\Delta t$ clipped to the prescribed magnitude. If `undefined`, this limit is ignored. Default value is `undefined`.
93 | - `errorScaleFunction`: The function used to compute a normalizing factor for the error in a given dimension. See below for details.
94 | - `errorReduceFunction`: The reduce operation by which errors in each dimension are combined into a single error metric. See below for details.
95 | - `errorPostFunction`: An operation applied to the total error. For example, if using the $L_2$ norm this would be a square root. See below for details.
96 | - `verbose`: Log covergence warnings. Default is `true`.
97 |
98 | #### Returns:
99 | Initialized integrator object.
100 |
101 | #### Properties:
102 | - `n`: dimension of `y0`.
103 | - `y`: current state; a reference to input array `y0`.
104 | - `deriv`: function that calculates the derivative.
105 | - `t`: current time, incremented by `dt` on each time step.
106 | - `dt`: current time step $\Delta t$. Initialized from input `dt0`. May be changed, but will be overwritten with each adaptive step in order to acheive the prescribed error bound.
107 | - all options are copied to properties on the integrator object and may be changed at any time.
108 |
109 | #### Methods:
110 | - `.step( [tLimit] )`: takes a single step of the integrator and stores the result in-place in the `y` property. Returns true if `tLimit` was not provided or if `t` has not reached the limit, otherwise returns false, meaning `t` has reached `tLimit`.
111 | - `.steps( n, [tLimit] )`: takes `n` steps of the integrator, storing the result in-place in the `y` property. Exits early if `tLimit` is reached. Returns true if `tLimit` was not provided or if `t` has not reached the limit, otherwise returns false, meaning `t` has reached `tLimit`. Note that, for example, `.steps( Infinity, 10 )` is valid and will take whatever number of step is required to reach $t=10$.
112 |
113 | ### Error Estimation
114 | Ideally, there would be no choices in error computation since this library would implement the best possible choices, but I've left this configurable.
115 |
116 | ##### `errorScaleFunction: function( i, dt, y, dydt )`
117 | This function receives the dimension number `i`, the current timestep `dt`, the current state `y`, and the derivative calculated at the beginning of the step, `dydt`. It must return a normalization factor by which the error in the given dimension is normalized. It is executed once at the beginning of each timestep and not for subsequent trial steps. By default, it is:
118 |
119 | ```
120 | function errorScaleFunction( i, dt, y, dydt ) {
121 | return Math.abs(y) + Math.abs(dt * dydt) + 1e-32
122 | }
123 | ```
124 |
125 | ##### `errorReduceFunction: function( i, accumulatedError, errorEstimate )`
126 | This function performs a reduce operation on the per-dimension error. `accumulatedError` is initially zero. The function must add the error estimate in dimension `i` and return a new error estimate. By default, the error reduce function simply returns the maximum error:
127 |
128 | ```
129 | function errorReduceFunction( i, accumulatedError, errorEstimate ) {
130 | return Math.max( accumulatedError, Math.abs(errorEstimate))
131 | }
132 | ```
133 |
134 | ##### `errorPostFunction: function( accumulatedError, errorEstimate )`
135 | This function applies a mapping to the total reduced error resulting from `errorReduceFunction`. For the $L_2$ norm, this would just be `Math.sqrt`; for the $L_\infty$ norm, this is simply a no-op:
136 |
137 | ```
138 | function errorPostFunction( accumulatedError ) {
139 | return accumulatedError
140 | }
141 | ```
142 |
143 | ## Credits
144 |
145 | (c) 2015 Ricky Reusser. MIT License
146 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ode45-cash-karp [](https://travis-ci.org/scijs/ode45-cash-karp) [](http://badge.fury.io/js/ode45-cash-karp) [](https://david-dm.org/scijs/ode45-cash-karp)
2 |
3 | > Integrate a system of Ordinary Differential Equations using the Fifth Order Adaptive Cash-Karp method
4 |
5 |
6 | ## Introduction
7 |
8 | This module integrates a system of ordinary differential equations of the form
9 |
10 | 
11 |
12 | where
is a vector of length
. Given time step
, the [Cash-Karp](https://en.wikipedia.org/wiki/Cash%E2%80%93Karp_method) method uses a fifth order Runge-Kutta scheme with a fourth order embedded estimator in order to control the error. In other words, the same intermediate values used in calculating the fifth order update can be used to calculate a fourth order estimate. The difference yields an error estimate, and the error estimate controls the timestep
.
13 |
14 | ## Install
15 |
16 | ```bash
17 | $ npm install ode45-cash-karp
18 | ```
19 |
20 | ## Example
21 |
22 | ### [Van der Pol oscillator](https://en.wikipedia.org/wiki/Van_der_Pol_oscillator)
23 |
24 | ```javascript
25 | var ode45 = require('ode45-cash-karp')
26 |
27 | // The derivative function for a Van der Pol oscillator:
28 | var vanderpol = function(dydt, y, t) {
29 | dydt[0] = y[1]
30 | dydt[1] = 4 * (1-y[0]*y[0])*y[1] - y[0]
31 | }
32 |
33 | // Initialize:
34 | var y0 = [2,0],
35 | t0 = 0,
36 | dt0 = 1e-3,
37 | integrator = ode45( y0, vanderpol, t0, dt0 )
38 |
39 | // Integrate up to tmax:
40 | var tmax = 10, t = [], y = []
41 | while( integrator.step( tmax ) ) {
42 | // Store the solution at this timestep:
43 | t.push( integrator.t )
44 | y.push( integrator.y )
45 | }
46 | ```
47 |
48 | ### Common patterns
49 |
50 | A single adaptive step:
51 | ```
52 | integrator.step()
53 | integrator.y // current state
54 | integrator.t // current time
55 | integrator.dt // newly adapted timestep
56 | ```
57 |
58 | A single adaptive step, returning false if
reached:
59 | ```
60 | integrator.step( 1.5 ) // returns true if t < 1.5
61 | integrator.step( 1.5 ) // returns false if t = 1.5
62 | ```
63 |
64 | Ten adaptive timesteps in sequence:
65 | ```
66 | integrator.steps( 10 )
67 | ```
68 |
69 | Ten timesteps, halting early and returning false if
is reached::
70 | ```
71 | integrator.steps( 10, 1.5 )
72 | ```
73 |
74 | Take any number of timesteps until
:
75 | ```
76 | integrator.steps( Infinity, 1.5 )
77 | ```
78 |
79 | ## API
80 |
81 | #### `require('ode45-cash-karp')( y0, deriv, t0, dt0 [, options] )`
82 | #### Arguments:
83 | - `y0`: an array or typed array containing initial conditions. This vector is updated in-place with each integrator step.
84 | - `deriv`: a function that calculates the derivative. Format is `function( dydt, y, t )`. Inputs are current state `y` and current time `t`, output is the calculated derivative `dydt`.
85 | - `t0`: initial time
.
86 | - `dt0`: initial time step
.
87 | - `options`: an optional associative array of options. Valid parameters are:
88 | - `tol`: The target error level to be acheived. Default is:
.
89 | - `maxIncreaseFactor`: The maximum factor by which to increase the timestep if the error tolerance is met. Default value is 10. This limit is applied at the end of a successful timestep.
90 | - `maxDecreaseFactor`: The maximum factor by which to decrease the timestep if the error tolerance is not met. Default value is 10. This limit is applied on each trial step until the error tolerance is acheived.
91 | - `dtMinMag`: The minimum allowed magnitude of
. If limit is exceeded during adaptation, a warning is printed to the console and the timestep completes with
clipped to the the prescribed magnitude. If `undefined`, this limit is ignored. Default value is `undefined`.
92 | - `dtMaxMag`: The maximum allowed magnitude of
. This limit is applied at the beginning of each step. If a timestep larger than this magnitude is requested, the timestep is executed with
clipped to the prescribed magnitude. If `undefined`, this limit is ignored. Default value is `undefined`.
93 | - `errorScaleFunction`: The function used to compute a normalizing factor for the error in a given dimension. See below for details.
94 | - `errorReduceFunction`: The reduce operation by which errors in each dimension are combined into a single error metric. See below for details.
95 | - `errorPostFunction`: An operation applied to the total error. For example, if using the
norm this would be a square root. See below for details.
96 | - `verbose`: Log covergence warnings. Default is `true`.
97 |
98 | #### Returns:
99 | Initialized integrator object.
100 |
101 | #### Properties:
102 | - `n`: dimension of `y0`.
103 | - `y`: current state; a reference to input array `y0`.
104 | - `deriv`: function that calculates the derivative.
105 | - `t`: current time, incremented by `dt` on each time step.
106 | - `dt`: current time step
. Initialized from input `dt0`. May be changed, but will be overwritten with each adaptive step in order to acheive the prescribed error bound.
107 | - all options are copied to properties on the integrator object and may be changed at any time.
108 |
109 | #### Methods:
110 | - `.step( [tLimit] )`: takes a single step of the integrator and stores the result in-place in the `y` property. Returns true if `tLimit` was not provided or if `t` has not reached the limit, otherwise returns false, meaning `t` has reached `tLimit`.
111 | - `.steps( n, [tLimit] )`: takes `n` steps of the integrator, storing the result in-place in the `y` property. Exits early if `tLimit` is reached. Returns true if `tLimit` was not provided or if `t` has not reached the limit, otherwise returns false, meaning `t` has reached `tLimit`. Note that, for example, `.steps( Infinity, 10 )` is valid and will take whatever number of step is required to reach
.
112 |
113 | ### Error Estimation
114 | Ideally, there would be no choices in error computation since this library would implement the best possible choices, but I've left this configurable.
115 |
116 | ##### `errorScaleFunction: function( i, dt, y, dydt )`
117 | This function receives the dimension number `i`, the current timestep `dt`, the current state `y`, and the derivative calculated at the beginning of the step, `dydt`. It must return a normalization factor by which the error in the given dimension is normalized. It is executed once at the beginning of each timestep and not for subsequent trial steps. By default, it is:
118 |
119 | ```
120 | function errorScaleFunction( i, dt, y, dydt ) {
121 | return Math.abs(y) + Math.abs(dt * dydt) + 1e-32
122 | }
123 | ```
124 |
125 | ##### `errorReduceFunction: function( i, accumulatedError, errorEstimate )`
126 | This function performs a reduce operation on the per-dimension error. `accumulatedError` is initially zero. The function must add the error estimate in dimension `i` and return a new error estimate. By default, the error reduce function simply returns the maximum error:
127 |
128 | ```
129 | function errorReduceFunction( i, accumulatedError, errorEstimate ) {
130 | return Math.max( accumulatedError, Math.abs(errorEstimate))
131 | }
132 | ```
133 |
134 | ##### `errorPostFunction: function( accumulatedError, errorEstimate )`
135 | This function applies a mapping to the total reduced error resulting from `errorReduceFunction`. For the
norm, this would just be `Math.sqrt`; for the
norm, this is simply a no-op:
136 |
137 | ```
138 | function errorPostFunction( accumulatedError ) {
139 | return accumulatedError
140 | }
141 | ```
142 |
143 | ## Credits
144 |
145 | (c) 2015 Ricky Reusser. MIT License
146 |
--------------------------------------------------------------------------------
/test/test.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | var ode45 = require('../lib')
4 | , assert = require('chai').assert
5 | , richardson = require('richardson-extrapolation')
6 |
7 | var ctors = {
8 | 'float32': Float32Array,
9 | 'float64': Float64Array,
10 | 'array': function(){ return arguments[0] }
11 | }
12 |
13 |
14 | Object.keys(ctors).forEach(function(dtype) {
15 | var ctor = ctors[dtype]
16 |
17 | describe('ode45 integration (' + dtype + ')', function() {
18 |
19 | describe('setup', function() {
20 | var integrator, f, y0, t0, n
21 |
22 | beforeEach(function() {
23 | f = function(dydt, y) { dydt[0] = -y[0] }
24 | t0 = 1.5
25 | y0 = new ctor([1])
26 | n = 10
27 |
28 | integrator = ode45( new ctor([1]), function(){}, 1, 1)
29 | })
30 |
31 | it('creates work arrays of the same type as the input',function() {
32 | assert.equal( integrator._w.constructor, y0.constructor )
33 | assert.equal( integrator._k1.constructor, y0.constructor )
34 | assert.equal( integrator._k2.constructor, y0.constructor )
35 | assert.equal( integrator._k3.constructor, y0.constructor )
36 | assert.equal( integrator._k4.constructor, y0.constructor )
37 | assert.equal( integrator._k5.constructor, y0.constructor )
38 | assert.equal( integrator._k6.constructor, y0.constructor )
39 | })
40 |
41 | it('creates work arrays of the same size as the input',function() {
42 | assert.equal( integrator._w.length, y0.length )
43 | assert.equal( integrator._k1.length, y0.length )
44 | assert.equal( integrator._k2.length, y0.length )
45 | assert.equal( integrator._k3.length, y0.length )
46 | assert.equal( integrator._k4.length, y0.length )
47 | assert.equal( integrator._k5.length, y0.length )
48 | assert.equal( integrator._k6.length, y0.length )
49 | })
50 | })
51 |
52 | describe('adaptive timestepping', function() {
53 |
54 | it('is sign-independent in the independent variable', function() {
55 | var f = function(dydt, y) {
56 | dydt[0] = -y[1]
57 | dydt[1] = y[0]
58 | }
59 | // Integrate around a circle and confirm that it doesn't matter
60 | // whether we integrate one way or the other:
61 | var i1 = ode45( new ctor([1,0]), f, 0, 1e4)
62 | i1.step()
63 | var i2 = ode45( new ctor([1,0]), f, 0, -1e4)
64 | i2.step()
65 |
66 | assert.closeTo( i1.y[0], i2.y[0], 1e-6, 'x-coordinates are equal' )
67 | assert.closeTo( i1.y[1], -i2.y[1], 1e-6, 'y-coordinates are opposite' )
68 | assert.closeTo( i1.dt, -i2.dt, 1e-6, 'dt has been adapted identically' )
69 | })
70 |
71 | it('is scale-independent in calculating the error', function() {
72 | var f = function(dydt, y) {
73 | dydt[0] = -y[1]
74 | dydt[1] = y[0]
75 | }
76 | // Integration around a circle is scale-independent in dt, so
77 | // ensure that the adaptation is the same no matter the radius:
78 | var i1 = ode45( new ctor([1e5,0]), f, 0, 1e4)
79 | i1.step()
80 | var i2 = ode45( new ctor([1e-5,0]), f, 0, 1e4)
81 | i2.step()
82 | assert.closeTo( i1.dt, i2.dt, 1e-2 )
83 | })
84 |
85 | it('throws an error if NaN encountered', function() {
86 | var f = function(dydt, y) { dydt[0] = Math.pow(y[0],4) }
87 | assert.throws(function() {
88 | var i = ode45( new ctor([100,0]), f, 0, 1)
89 | i.steps(10)
90 | },Error,/NaN encountered/)
91 | })
92 |
93 | it('updates dt according to the timestep taken', function() {
94 | // Integrate dy/dt = constant
95 | var c = 5.2
96 | var f = function(dydt, y) { dydt[0] = c }
97 | var i = ode45( new ctor([0]), f, 0, 1)
98 | i.step()
99 | assert.closeTo( i.y[0], i.t * c, 1e-3, 'answer is correct' )
100 | })
101 |
102 | it('integrates with dt>0 and a limit', function() {
103 | var c = 5.2
104 | var t0 = 1
105 | var t1 = 3
106 | var dt = 1
107 | var f = function(dydt, y) { dydt[0] = c }
108 | var i = ode45( new ctor([0]), f, t0, dt)
109 | i.step( t1 )
110 | assert.closeTo( i.y[0], (2-t0) * c, 1e-3, 'answer is correct' )
111 | assert.closeTo( i.t, 2, 1e-3, 'dt has been clipped')
112 | i.step( t1 )
113 | assert.closeTo( i.y[0], (t1-t0) * c, 1e-3, 'answer is correct' )
114 | assert.closeTo( i.t, t1, 1e-3, 'dt has been clipped')
115 | })
116 |
117 | it('integrates with dt<0 and a limit', function() {
118 | var c = 5.2
119 | var t0 = 3
120 | var t1 = 1
121 | var dt = -1
122 | var f = function(dydt, y) { dydt[0] = c }
123 | var i = ode45( new ctor([0]), f, t0, dt)
124 |
125 | assert.isTrue( i.step( t1 ) )
126 | assert.closeTo( i.y[0], (2-t0) * c, 1e-3, 'answer is correct' )
127 | assert.closeTo( i.t, t0+dt, 1e-3, 'dt is updated')
128 | assert.isTrue( i.step( t1 ) )
129 | assert.closeTo( i.y[0], (t1-t0) * c, 1e-3, 'answer is correct' )
130 | assert.closeTo( i.t, t1, 1e-3, 'dt has been clipped')
131 | })
132 |
133 | it('integrates the 0 without incident', function() {
134 | // Just to make sure there aren't any divide-by-zero issues
135 | var f = function(dydt, y) { dydt[0] = 0 }
136 | var i = ode45( new ctor([0]), f, 0, 1)
137 | i.step()
138 | assert.closeTo( i.y[0], 0, 1e-3, 'answer is correct' )
139 | assert.closeTo( i.dt, 10, 1e-3, 'dt has been increased for the next step' )
140 | })
141 |
142 | it('increases the timestep by no more than maxIncreaseFactor if tolerance met', function() {
143 | // Integrating a straight line should increase the timestep by maxIncreaseFactor:
144 | var dt0 = 15
145 | var factor = 11
146 | var f = function(dydt, y) { dydt[0] = 1 }
147 | var i = ode45( new ctor([0]), f, 0, dt0, {maxIncreaseFactor: factor})
148 | i.step()
149 | assert.closeTo( i.dt, dt0 * factor, 1e-3, 'increased dt by maxIncreaseFactor' )
150 | })
151 | })
152 |
153 | describe('stepsize limiting', function() {
154 | it('doesn\'t decrease the step size past dtMinMag (dt > 0)', function() {
155 | var dtMinMag = 1e-4
156 | var i
157 | var f = function(dydt, y) { dydt[0] = Math.cos(1e5*y[0]) }
158 | i = ode45( new ctor([0]), f, 0, 1, {dtMinMag: dtMinMag})
159 | i.step()
160 | assert( Number.isFinite(i.y[0]), 'y is finite' )
161 | assert( i.y[0] !== 0, 'y has been timestepped' )
162 | assert.closeTo( i.t, dtMinMag, 1e-8, 'dt is at the lower limit' )
163 | i.step()
164 | assert.closeTo( i.t, 2 * dtMinMag, 1e-8, 'dt is at the lower limit' )
165 | })
166 |
167 | it('doesn\'t decrease the step size past dtMinMag (dt < 0)', function() {
168 | var dtMinMag = 1e-4
169 | var i
170 | var f = function(dydt, y) { dydt[0] = Math.cos(1e5*y[0]) }
171 | i = ode45( new ctor([0]), f, 0, -1, {dtMinMag: dtMinMag})
172 | i.step()
173 | assert( Number.isFinite(i.y[0]), 'y is finite' )
174 | assert( i.y[0] !== 0, 'y has been timestepped' )
175 | assert.closeTo( i.t, -dtMinMag, 1e-8, 'dt is at the lower limit' )
176 | i.step()
177 | assert.closeTo( i.t, -2 * dtMinMag, 1e-8, 'dt is at the lower limit' )
178 | })
179 |
180 | it('doesn\'t increase the step size past dtMax (dt > 0)', function() {
181 | var dtMaxMag = 2
182 | var i, dt0 = 1e4
183 | var f = function(dydt, y) { dydt[0] = 1 }
184 | i = ode45( new ctor([0]), f, 0, dt0, {dtMaxMag: dtMaxMag})
185 | i.step()
186 | assert( Number.isFinite(i.y[0]), 'y is finite' )
187 | assert( i.y[0] !== 0, 'y has been timestepped' )
188 | assert.closeTo( i.t, dtMaxMag, 1e-8, 'dt is at the upper limit' )
189 | i.step()
190 | assert.closeTo( i.t, dtMaxMag * 2, 1e-8, 'dt is at the upper limit' )
191 | })
192 |
193 | it('doesn\'t increase the step size past dtMax (dt < 0)', function() {
194 | var dtMaxMag = 2
195 | var i, dt0 = -1e4
196 | var f = function(dydt, y) { dydt[0] = 1 }
197 | i = ode45( new ctor([0]), f, 0, dt0, {dtMaxMag: dtMaxMag})
198 | i.step()
199 | assert( Number.isFinite(i.y[0]), 'y is finite' )
200 | assert( i.y[0] !== 0, 'y has been timestepped' )
201 | assert.closeTo( i.t, -dtMaxMag, 1e-8, 'dt is at the upper limit' )
202 | i.step()
203 | assert.closeTo( i.t, -dtMaxMag * 2, 1e-8, 'dt is at the upper limit' )
204 | })
205 |
206 | })
207 |
208 | describe('convergence', function() {
209 | it('total accumulated error of high order scheme is order O(h^5)', function() {
210 |
211 | var result = richardson(function(h) {
212 | // Integrate around a circle at an accelerating rate
213 | var f = function(dydt, y, t) {
214 | var s = Math.sin(t * Math.PI) * Math.PI / 2
215 | dydt[0] = -y[1]* 2 * Math.PI * s
216 | dydt[1] = y[0]* 2 * Math.PI * s
217 | }
218 | var i = ode45( new ctor([1,0,0]), f, 0, h )
219 |
220 | var n = Math.floor(1/h+0.5)
221 | for(var j=0; j 0 ? Math.min : Math.max)(a, b);
19 | }
20 |
21 | function maxMag (a, b) {
22 | return (a > 0 ? Math.max : Math.min)(a, b);
23 | }
24 |
25 | var Integrator = function Integrator( y0, deriv, t0, dt0, options ) {
26 | var opts = options || {}
27 | this.tol = opts.tol===undefined ? 1e-8 : opts.tol
28 | this.maxIncreaseFactor = opts.maxIncreaseFactor===undefined ? 10 : opts.maxIncreaseFactor
29 | this.maxDecreaseFactor = opts.maxDecreaseFactor===undefined ? 10 : opts.maxDecreaseFactor
30 | this.dtMinMag = opts.dtMinMag===undefined ? 0 : Math.abs(opts.dtMinMag)
31 | this.dtMaxMag = opts.dtMaxMag===undefined ? undefined : Math.abs(opts.dtMaxMag)
32 | this.verbose = opts.verbose===undefined ? true : !!opts.verbose;
33 |
34 | var logCnt = 0
35 | var maxLogs = 10
36 | var maxLogWarningIssued = false
37 | this.__log = function (method, msg) {
38 | if (!this.verbose) return;
39 | if (logCnt < maxLogs) {
40 | console.log('ode45-cash-karp::' + method + '(): ' + msg)
41 | logCnt++
42 | } else {
43 | if (!maxLogWarningIssued) {
44 | console.log('ode45-cash-karp: too many warnings. Silencing further output')
45 | maxLogWarningIssued = true
46 | }
47 | }
48 | }.bind(this)
49 |
50 | this.errorScaleFunction = opts.errorScaleFunction === undefined ? defaultErrorScaleFunction : opts.errorScaleFunction
51 | this.errorReduceFunction = opts.errorReduceFunction === undefined ? defaultErrorReduceFunction : opts.errorReduceFunction
52 | this.errorPostFunction = opts.errorPostFunction === undefined ? defaultErrorPostFunction : opts.errorPostFunction
53 |
54 | // This is technically a parameter, but I think the value of leaving this undocumented exceeds the
55 | // value of documenting this and only adding confusion. I can't imagine this will even need to be
56 | // modified.
57 | this.safetyFactor = opts.safetyFactor===undefined ? 0.9 : opts.safetyFactor
58 |
59 | // Bind variables to this:
60 | this.deriv = deriv
61 | this.y = y0
62 | this.n = this.y.length
63 | this.dt = dt0
64 | this.t = t0
65 |
66 | // Create a scratch array into which we compute the derivative:
67 | this._ctor = this.y.constructor
68 |
69 | this._errorScale = new this._ctor( this.n )
70 | this._w = new this._ctor( this.n )
71 | this._k1 = new this._ctor( this.n )
72 | this._k2 = new this._ctor( this.n )
73 | this._k3 = new this._ctor( this.n )
74 | this._k4 = new this._ctor( this.n )
75 | this._k5 = new this._ctor( this.n )
76 | this._k6 = new this._ctor( this.n )
77 | }
78 |
79 | Integrator.prototype._calculateK1 = function() {
80 | this.deriv( this._k1, this.y, this.t )
81 |
82 | return this
83 | }
84 |
85 | Integrator.prototype._calculateKs = function(dt) {
86 | var i
87 |
88 | //var a21 = 0.200000000000000000 // 1/5
89 | //var a31 = 0.075000000000000000 // 3/40
90 | //var a32 = 0.225000000000000000 // 9/40
91 | //var a41 = 0.300000000000000000 // 3/10
92 | //var a42 = -0.900000000000000000 // -9/10
93 | //var a43 = 1.200000000000000000 // 6/5
94 | //var a51 = -0.203703703703703703 // -11/54
95 | //var a52 = 2.500000000000000000 // 5/2
96 | //var a53 = -2.592592592592592592 // -70/27
97 | //var a54 = 1.296296296296296296 // 35/27
98 | //var a61 = 0.029495804398148148 // 1631/55296
99 | //var a62 = 0.341796875000000000 // 175/512
100 | //var a63 = 0.041594328703703703 // 575/13824
101 | //var a64 = 0.400345413773148148 // 44275/110592
102 | //var a65 = 0.061767578125000000 // 253/4096
103 |
104 | //var b1 = 0.000000000000000000 // 0
105 | //var b2 = 0.200000000000000000 // 1/5
106 | //var b3 = 0.300000000000000000 // 3/10
107 | //var b4 = 0.600000000000000000 // 3/5
108 | //var b5 = 1.000000000000000000 // 1
109 | //var b6 = 0.875000000000000000 // 7/8
110 |
111 | // Same for every step, so don't repeat:
112 | //this.deriv( this._k1, this.y, this.t )
113 |
114 | for(i=0; i 0 ? Math.min( tLimit - this.t, thisDt ) : Math.max( tLimit - this.t, thisDt )
231 | }
232 |
233 | // Limit the magnitude of dt to dtMaxMag
234 | if( this.dtMaxMag !== undefined && Math.abs( thisDt ) > this.dtMaxMag ) {
235 | this.__log('step', 'step greater than maximum stepsize requested. dt magnitude has been limited.')
236 | thisDt = thisDt > 0 ? this.dtMaxMag : -this.dtMaxMag
237 | }
238 |
239 | // Limit the magnitude of dt to dtMinMag
240 | if( this.dtMinMag !== undefined && Math.abs( thisDt ) < this.dtMinMag ) {
241 | this.__log('step', 'step smaller than minimum stepsize requested. dt magnitude has been limited.')
242 | thisDt = thisDt > 0 ? this.dtMinMag : -this.dtMinMag
243 | }
244 |
245 | // The first derivative doesn't change even if dt does, so only calculate this once:
246 | this._calculateK1()
247 |
248 | // The scale factor per-dimension probably doesn't need to change either across a single adaptive step:
249 | this._calculateErrorScale(thisDt)
250 |
251 | var error = Infinity
252 | var maxError = 0
253 | var nextDt
254 | var lowerDtLimitReached = false
255 |
256 | while(true) {
257 |
258 | // Calculate intermediate k's for the proposed step:
259 | this._calculateKs(thisDt)
260 |
261 | // Calculate the max error of the proposed step:
262 | error = this._calculateError(thisDt)
263 |
264 | if( error < this.tol || lowerDtLimitReached ) {
265 | // Success! Exit:
266 | break
267 | }
268 |
269 | if( ! Number.isFinite(error) ) {
270 | throw new Error('ode45-cash-karp::step() NaN encountered while integrating.')
271 | }
272 |
273 | // Failure. Adapt the timestep:
274 | nextDt = this.safetyFactor * thisDt * Math.pow( this.tol / error, 0.2 )
275 |
276 | // Cut the timestep, but not by more than maxDecreaseFactor
277 | thisDt = maxMag( thisDt / this.maxDecreaseFactor, nextDt )
278 |
279 | // If stepsize too small, finish off by taking the currently proposed step and logging a warning:
280 | if( this.dtMinMag !== undefined && Math.abs(thisDt) < this.dtMinMag ) {
281 | thisDt = this.dtMinMag * (thisDt > 0 ? 1 : -1);
282 | this.__log('step', 'minimum stepsize reached.')
283 | lowerDtLimitReached = true
284 | }
285 | }
286 |
287 | // Apply this update:
288 | this._update(thisDt)
289 |
290 | // Calculate the next timestep size:
291 | nextDt = this.safetyFactor * thisDt * Math.pow( this.tol / error, 0.25 )
292 |
293 | // Increase the timestep for the next time around, but not by more than the maxIncreaseFactor:
294 | this.dt = maxMag(this.dt / this.maxDecreaseFactor, minMag( this.dt * this.maxIncreaseFactor, nextDt ));
295 |
296 | if( tLimit !== undefined ) {
297 | return Math.abs(this.t - tLimit) > this.dt * 1e-8;
298 | } else {
299 | return true
300 | }
301 | }
302 |
303 | Integrator.prototype.steps = function( n, tLimit ) {
304 | for(var step=0; step> matrix makepattern
348 | /Pat1 exch def
349 | << Tile8x8
350 | /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke
351 | 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke}
352 | >> matrix makepattern
353 | /Pat2 exch def
354 | << Tile8x8
355 | /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L
356 | 8 8 L 8 0 L 0 0 L fill}
357 | >> matrix makepattern
358 | /Pat3 exch def
359 | << Tile8x8
360 | /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L
361 | 0 12 M 12 0 L stroke}
362 | >> matrix makepattern
363 | /Pat4 exch def
364 | << Tile8x8
365 | /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L
366 | 0 -4 M 12 8 L stroke}
367 | >> matrix makepattern
368 | /Pat5 exch def
369 | << Tile8x8
370 | /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L
371 | 0 12 M 8 -4 L 4 12 M 10 0 L stroke}
372 | >> matrix makepattern
373 | /Pat6 exch def
374 | << Tile8x8
375 | /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L
376 | 0 -4 M 8 12 L 4 -4 M 10 8 L stroke}
377 | >> matrix makepattern
378 | /Pat7 exch def
379 | << Tile8x8
380 | /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L
381 | 12 0 M -4 8 L 12 4 M 0 10 L stroke}
382 | >> matrix makepattern
383 | /Pat8 exch def
384 | << Tile8x8
385 | /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L
386 | -4 0 M 12 8 L -4 4 M 8 10 L stroke}
387 | >> matrix makepattern
388 | /Pat9 exch def
389 | /Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def
390 | /Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def
391 | /Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def
392 | /Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def
393 | /Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def
394 | /Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def
395 | /Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def
396 | } def
397 | %
398 | %
399 | %End of PostScript Level 2 code
400 | %
401 | /PatternBgnd {
402 | TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
403 | } def
404 | %
405 | % Substitute for Level 2 pattern fill codes with
406 | % grayscale if Level 2 support is not selected.
407 | %
408 | /Level1PatternFill {
409 | /Pattern1 {0.250 Density} bind def
410 | /Pattern2 {0.500 Density} bind def
411 | /Pattern3 {0.750 Density} bind def
412 | /Pattern4 {0.125 Density} bind def
413 | /Pattern5 {0.375 Density} bind def
414 | /Pattern6 {0.625 Density} bind def
415 | /Pattern7 {0.875 Density} bind def
416 | } def
417 | %
418 | % Now test for support of Level 2 code
419 | %
420 | Level1 {Level1PatternFill} {Level2PatternFill} ifelse
421 | %
422 | /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
423 | dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
424 | currentdict end definefont pop
425 | Level1 SuppressPDFMark or
426 | {} {
427 | /SDict 10 dict def
428 | systemdict /pdfmark known not {
429 | userdict /pdfmark systemdict /cleartomark get put
430 | } if
431 | SDict begin [
432 | /Title (plot.ps)
433 | /Subject (gnuplot plot)
434 | /Creator (gnuplot 4.6 patchlevel 5)
435 | /Author (rreusser)
436 | % /Producer (gnuplot)
437 | % /Keywords ()
438 | /CreationDate (Sun Aug 9 22:32:06 2015)
439 | /DOCINFO pdfmark
440 | end
441 | } ifelse
442 | end
443 | %%EndProlog
444 | %%Page: 1 1
445 | gnudict begin
446 | gsave
447 | doclip
448 | 50 50 translate
449 | 0.100 0.100 scale
450 | 90 rotate
451 | 0 -5040 translate
452 | 0 setgray
453 | newpath
454 | (Helvetica) findfont 140 scalefont setfont
455 | BackgroundColor 0 lt 3 1 roll 0 lt exch 0 lt or or not {gsave BackgroundColor C clippath fill grestore} if
456 | 1.000 UL
457 | LTb
458 | 1.000 UL
459 | LTa
460 | 378 363 M
461 | 6569 0 V
462 | stroke
463 | LTb
464 | 378 363 M
465 | 63 0 V
466 | 6506 0 R
467 | -63 0 V
468 | /Verdana findfont 80 scalefont setfont
469 | /vshift -26 def
470 | 294 363 M
471 | (-1) Rshow
472 | /Helvetica findfont 140 scalefont setfont
473 | /vshift -46 def
474 | 1.000 UL
475 | LTb
476 | 1.000 UL
477 | LTa
478 | 378 1190 M
479 | 6569 0 V
480 | stroke
481 | LTb
482 | 378 1190 M
483 | 63 0 V
484 | 6506 0 R
485 | -63 0 V
486 | /Verdana findfont 80 scalefont setfont
487 | /vshift -26 def
488 | -6590 0 R
489 | ( 0) Rshow
490 | /Helvetica findfont 140 scalefont setfont
491 | /vshift -46 def
492 | 1.000 UL
493 | LTb
494 | 1.000 UL
495 | LTa
496 | 378 2017 M
497 | 6569 0 V
498 | stroke
499 | LTb
500 | 378 2017 M
501 | 63 0 V
502 | 6506 0 R
503 | -63 0 V
504 | /Verdana findfont 80 scalefont setfont
505 | /vshift -26 def
506 | -6590 0 R
507 | ( 1) Rshow
508 | /Helvetica findfont 140 scalefont setfont
509 | /vshift -46 def
510 | 1.000 UL
511 | LTb
512 | 1.000 UL
513 | LTa
514 | 378 280 M
515 | 0 1820 V
516 | stroke
517 | LTb
518 | 378 280 M
519 | 0 63 V
520 | 0 1757 R
521 | 0 -63 V
522 | /Verdana findfont 80 scalefont setfont
523 | /vshift -26 def
524 | 378 140 M
525 | (-10) Cshow
526 | /Helvetica findfont 140 scalefont setfont
527 | /vshift -46 def
528 | 1.000 UL
529 | LTb
530 | 1.000 UL
531 | LTa
532 | 706 280 M
533 | 0 1820 V
534 | stroke
535 | LTb
536 | 706 280 M
537 | 0 63 V
538 | 0 1757 R
539 | 0 -63 V
540 | /Verdana findfont 80 scalefont setfont
541 | /vshift -26 def
542 | 706 140 M
543 | (-9) Cshow
544 | /Helvetica findfont 140 scalefont setfont
545 | /vshift -46 def
546 | 1.000 UL
547 | LTb
548 | 1.000 UL
549 | LTa
550 | 1035 280 M
551 | 0 1820 V
552 | stroke
553 | LTb
554 | 1035 280 M
555 | 0 63 V
556 | 0 1757 R
557 | 0 -63 V
558 | /Verdana findfont 80 scalefont setfont
559 | /vshift -26 def
560 | 0 -1897 R
561 | (-8) Cshow
562 | /Helvetica findfont 140 scalefont setfont
563 | /vshift -46 def
564 | 1.000 UL
565 | LTb
566 | 1.000 UL
567 | LTa
568 | 1363 280 M
569 | 0 1820 V
570 | stroke
571 | LTb
572 | 1363 280 M
573 | 0 63 V
574 | 0 1757 R
575 | 0 -63 V
576 | /Verdana findfont 80 scalefont setfont
577 | /vshift -26 def
578 | 0 -1897 R
579 | (-7) Cshow
580 | /Helvetica findfont 140 scalefont setfont
581 | /vshift -46 def
582 | 1.000 UL
583 | LTb
584 | 1.000 UL
585 | LTa
586 | 1692 280 M
587 | 0 1820 V
588 | stroke
589 | LTb
590 | 1692 280 M
591 | 0 63 V
592 | 0 1757 R
593 | 0 -63 V
594 | /Verdana findfont 80 scalefont setfont
595 | /vshift -26 def
596 | 0 -1897 R
597 | (-6) Cshow
598 | /Helvetica findfont 140 scalefont setfont
599 | /vshift -46 def
600 | 1.000 UL
601 | LTb
602 | 1.000 UL
603 | LTa
604 | 2020 280 M
605 | 0 1820 V
606 | stroke
607 | LTb
608 | 2020 280 M
609 | 0 63 V
610 | 0 1757 R
611 | 0 -63 V
612 | /Verdana findfont 80 scalefont setfont
613 | /vshift -26 def
614 | 0 -1897 R
615 | (-5) Cshow
616 | /Helvetica findfont 140 scalefont setfont
617 | /vshift -46 def
618 | 1.000 UL
619 | LTb
620 | 1.000 UL
621 | LTa
622 | 2349 280 M
623 | 0 1820 V
624 | stroke
625 | LTb
626 | 2349 280 M
627 | 0 63 V
628 | 0 1757 R
629 | 0 -63 V
630 | /Verdana findfont 80 scalefont setfont
631 | /vshift -26 def
632 | 0 -1897 R
633 | (-4) Cshow
634 | /Helvetica findfont 140 scalefont setfont
635 | /vshift -46 def
636 | 1.000 UL
637 | LTb
638 | 1.000 UL
639 | LTa
640 | 2677 280 M
641 | 0 1820 V
642 | stroke
643 | LTb
644 | 2677 280 M
645 | 0 63 V
646 | 0 1757 R
647 | 0 -63 V
648 | /Verdana findfont 80 scalefont setfont
649 | /vshift -26 def
650 | 0 -1897 R
651 | (-3) Cshow
652 | /Helvetica findfont 140 scalefont setfont
653 | /vshift -46 def
654 | 1.000 UL
655 | LTb
656 | 1.000 UL
657 | LTa
658 | 3006 280 M
659 | 0 1820 V
660 | stroke
661 | LTb
662 | 3006 280 M
663 | 0 63 V
664 | 0 1757 R
665 | 0 -63 V
666 | /Verdana findfont 80 scalefont setfont
667 | /vshift -26 def
668 | 0 -1897 R
669 | (-2) Cshow
670 | /Helvetica findfont 140 scalefont setfont
671 | /vshift -46 def
672 | 1.000 UL
673 | LTb
674 | 1.000 UL
675 | LTa
676 | 3334 280 M
677 | 0 1820 V
678 | stroke
679 | LTb
680 | 3334 280 M
681 | 0 63 V
682 | 0 1757 R
683 | 0 -63 V
684 | /Verdana findfont 80 scalefont setfont
685 | /vshift -26 def
686 | 0 -1897 R
687 | (-1) Cshow
688 | /Helvetica findfont 140 scalefont setfont
689 | /vshift -46 def
690 | 1.000 UL
691 | LTb
692 | 1.000 UL
693 | LTa
694 | 3663 280 M
695 | 0 1820 V
696 | stroke
697 | LTb
698 | 3663 280 M
699 | 0 63 V
700 | 0 1757 R
701 | 0 -63 V
702 | /Verdana findfont 80 scalefont setfont
703 | /vshift -26 def
704 | 0 -1897 R
705 | ( 0) Cshow
706 | /Helvetica findfont 140 scalefont setfont
707 | /vshift -46 def
708 | 1.000 UL
709 | LTb
710 | 1.000 UL
711 | LTa
712 | 3991 280 M
713 | 0 1820 V
714 | stroke
715 | LTb
716 | 3991 280 M
717 | 0 63 V
718 | 0 1757 R
719 | 0 -63 V
720 | /Verdana findfont 80 scalefont setfont
721 | /vshift -26 def
722 | 0 -1897 R
723 | ( 1) Cshow
724 | /Helvetica findfont 140 scalefont setfont
725 | /vshift -46 def
726 | 1.000 UL
727 | LTb
728 | 1.000 UL
729 | LTa
730 | 4319 280 M
731 | 0 1820 V
732 | stroke
733 | LTb
734 | 4319 280 M
735 | 0 63 V
736 | 0 1757 R
737 | 0 -63 V
738 | /Verdana findfont 80 scalefont setfont
739 | /vshift -26 def
740 | 0 -1897 R
741 | ( 2) Cshow
742 | /Helvetica findfont 140 scalefont setfont
743 | /vshift -46 def
744 | 1.000 UL
745 | LTb
746 | 1.000 UL
747 | LTa
748 | 4648 280 M
749 | 0 1820 V
750 | stroke
751 | LTb
752 | 4648 280 M
753 | 0 63 V
754 | 0 1757 R
755 | 0 -63 V
756 | /Verdana findfont 80 scalefont setfont
757 | /vshift -26 def
758 | 0 -1897 R
759 | ( 3) Cshow
760 | /Helvetica findfont 140 scalefont setfont
761 | /vshift -46 def
762 | 1.000 UL
763 | LTb
764 | 1.000 UL
765 | LTa
766 | 4976 280 M
767 | 0 1820 V
768 | stroke
769 | LTb
770 | 4976 280 M
771 | 0 63 V
772 | 0 1757 R
773 | 0 -63 V
774 | /Verdana findfont 80 scalefont setfont
775 | /vshift -26 def
776 | 0 -1897 R
777 | ( 4) Cshow
778 | /Helvetica findfont 140 scalefont setfont
779 | /vshift -46 def
780 | 1.000 UL
781 | LTb
782 | 1.000 UL
783 | LTa
784 | 5305 280 M
785 | 0 1820 V
786 | stroke
787 | LTb
788 | 5305 280 M
789 | 0 63 V
790 | 0 1757 R
791 | 0 -63 V
792 | /Verdana findfont 80 scalefont setfont
793 | /vshift -26 def
794 | 0 -1897 R
795 | ( 5) Cshow
796 | /Helvetica findfont 140 scalefont setfont
797 | /vshift -46 def
798 | 1.000 UL
799 | LTb
800 | 1.000 UL
801 | LTa
802 | 5633 280 M
803 | 0 1820 V
804 | stroke
805 | LTb
806 | 5633 280 M
807 | 0 63 V
808 | 0 1757 R
809 | 0 -63 V
810 | /Verdana findfont 80 scalefont setfont
811 | /vshift -26 def
812 | 0 -1897 R
813 | ( 6) Cshow
814 | /Helvetica findfont 140 scalefont setfont
815 | /vshift -46 def
816 | 1.000 UL
817 | LTb
818 | 1.000 UL
819 | LTa
820 | 5962 280 M
821 | 0 1820 V
822 | stroke
823 | LTb
824 | 5962 280 M
825 | 0 63 V
826 | 0 1757 R
827 | 0 -63 V
828 | /Verdana findfont 80 scalefont setfont
829 | /vshift -26 def
830 | 0 -1897 R
831 | ( 7) Cshow
832 | /Helvetica findfont 140 scalefont setfont
833 | /vshift -46 def
834 | 1.000 UL
835 | LTb
836 | 1.000 UL
837 | LTa
838 | 6290 280 M
839 | 0 1820 V
840 | stroke
841 | LTb
842 | 6290 280 M
843 | 0 63 V
844 | 0 1757 R
845 | 0 -63 V
846 | /Verdana findfont 80 scalefont setfont
847 | /vshift -26 def
848 | 0 -1897 R
849 | ( 8) Cshow
850 | /Helvetica findfont 140 scalefont setfont
851 | /vshift -46 def
852 | 1.000 UL
853 | LTb
854 | 1.000 UL
855 | LTa
856 | 6619 280 M
857 | 0 1820 V
858 | stroke
859 | LTb
860 | 6619 280 M
861 | 0 63 V
862 | 0 1757 R
863 | 0 -63 V
864 | /Verdana findfont 80 scalefont setfont
865 | /vshift -26 def
866 | 0 -1897 R
867 | ( 9) Cshow
868 | /Helvetica findfont 140 scalefont setfont
869 | /vshift -46 def
870 | 1.000 UL
871 | LTb
872 | 1.000 UL
873 | LTa
874 | 6947 280 M
875 | 0 1820 V
876 | stroke
877 | LTb
878 | 6947 280 M
879 | 0 63 V
880 | 0 1757 R
881 | 0 -63 V
882 | /Verdana findfont 80 scalefont setfont
883 | /vshift -26 def
884 | 0 -1897 R
885 | ( 10) Cshow
886 | /Helvetica findfont 140 scalefont setfont
887 | /vshift -46 def
888 | 1.000 UL
889 | LTb
890 | 1.000 UL
891 | LTb
892 | 378 2100 N
893 | 378 280 L
894 | 6569 0 V
895 | 0 1820 V
896 | -6569 0 V
897 | Z stroke
898 | 3662 2310 M
899 | (Fifth Order Runge-Kutta Cash-Karp \(RKCK\)) Cshow
900 | 1.000 UP
901 | 1.000 UL
902 | LTb
903 | % Begin plot #1
904 | 0.500 UP
905 | 1.000 UL
906 | LT0
907 | 0.00 0.38 0.68 C /Helvetica findfont 140 scalefont setfont
908 | 378 363 M
909 | 1 0 V
910 | 3 0 V
911 | 8 0 V
912 | 24 0 V
913 | 72 0 V
914 | 215 0 V
915 | 247 0 V
916 | 246 0 V
917 | 246 0 V
918 | 247 0 V
919 | 246 0 V
920 | 246 0 V
921 | 247 0 V
922 | 246 0 V
923 | 246 0 V
924 | 247 0 V
925 | 246 0 V
926 | 39 0 V
927 | 99 0 V
928 | 25 0 V
929 | 23 4 V
930 | 24 58 V
931 | 17 175 V
932 | 16 358 V
933 | 15 415 V
934 | 15 347 V
935 | 16 208 V
936 | 16 72 V
937 | 21 16 V
938 | 23 1 V
939 | 31 0 V
940 | 68 0 V
941 | 205 0 V
942 | 247 0 V
943 | 246 0 V
944 | 246 0 V
945 | 247 0 V
946 | 246 0 V
947 | 246 0 V
948 | 247 0 V
949 | 246 0 V
950 | 246 0 V
951 | 247 0 V
952 | 246 0 V
953 | 173 0 V
954 | stroke
955 | LCw setrgbcolor
956 | 0.400 UP
957 | 378 363 CircleF
958 | 0.500 UP
959 | 1.000 UL
960 | LT0
961 | 0.00 0.38 0.68 C 378 363 Circle
962 | LCw setrgbcolor
963 | 0.400 UP
964 | 378 363 CircleF
965 | 0.500 UP
966 | 1.000 UL
967 | LT0
968 | 0.00 0.38 0.68 C 378 363 Circle
969 | LCw setrgbcolor
970 | 0.400 UP
971 | 378 363 CircleF
972 | 0.500 UP
973 | 1.000 UL
974 | LT0
975 | 0.00 0.38 0.68 C 378 363 Circle
976 | LCw setrgbcolor
977 | 0.400 UP
978 | 378 363 CircleF
979 | 0.500 UP
980 | 1.000 UL
981 | LT0
982 | 0.00 0.38 0.68 C 378 363 Circle
983 | LCw setrgbcolor
984 | 0.400 UP
985 | 379 363 CircleF
986 | 0.500 UP
987 | 1.000 UL
988 | LT0
989 | 0.00 0.38 0.68 C 379 363 Circle
990 | LCw setrgbcolor
991 | 0.400 UP
992 | 382 363 CircleF
993 | 0.500 UP
994 | 1.000 UL
995 | LT0
996 | 0.00 0.38 0.68 C 382 363 Circle
997 | LCw setrgbcolor
998 | 0.400 UP
999 | 390 363 CircleF
1000 | 0.500 UP
1001 | 1.000 UL
1002 | LT0
1003 | 0.00 0.38 0.68 C 390 363 Circle
1004 | LCw setrgbcolor
1005 | 0.400 UP
1006 | 414 363 CircleF
1007 | 0.500 UP
1008 | 1.000 UL
1009 | LT0
1010 | 0.00 0.38 0.68 C 414 363 Circle
1011 | LCw setrgbcolor
1012 | 0.400 UP
1013 | 486 363 CircleF
1014 | 0.500 UP
1015 | 1.000 UL
1016 | LT0
1017 | 0.00 0.38 0.68 C 486 363 Circle
1018 | LCw setrgbcolor
1019 | 0.400 UP
1020 | 701 363 CircleF
1021 | 0.500 UP
1022 | 1.000 UL
1023 | LT0
1024 | 0.00 0.38 0.68 C 701 363 Circle
1025 | LCw setrgbcolor
1026 | 0.400 UP
1027 | 948 363 CircleF
1028 | 0.500 UP
1029 | 1.000 UL
1030 | LT0
1031 | 0.00 0.38 0.68 C 948 363 Circle
1032 | LCw setrgbcolor
1033 | 0.400 UP
1034 | 1194 363 CircleF
1035 | 0.500 UP
1036 | 1.000 UL
1037 | LT0
1038 | 0.00 0.38 0.68 C 1194 363 Circle
1039 | LCw setrgbcolor
1040 | 0.400 UP
1041 | 1440 363 CircleF
1042 | 0.500 UP
1043 | 1.000 UL
1044 | LT0
1045 | 0.00 0.38 0.68 C 1440 363 Circle
1046 | LCw setrgbcolor
1047 | 0.400 UP
1048 | 1687 363 CircleF
1049 | 0.500 UP
1050 | 1.000 UL
1051 | LT0
1052 | 0.00 0.38 0.68 C 1687 363 Circle
1053 | LCw setrgbcolor
1054 | 0.400 UP
1055 | 1933 363 CircleF
1056 | 0.500 UP
1057 | 1.000 UL
1058 | LT0
1059 | 0.00 0.38 0.68 C 1933 363 Circle
1060 | LCw setrgbcolor
1061 | 0.400 UP
1062 | 2179 363 CircleF
1063 | 0.500 UP
1064 | 1.000 UL
1065 | LT0
1066 | 0.00 0.38 0.68 C 2179 363 Circle
1067 | LCw setrgbcolor
1068 | 0.400 UP
1069 | 2426 363 CircleF
1070 | 0.500 UP
1071 | 1.000 UL
1072 | LT0
1073 | 0.00 0.38 0.68 C 2426 363 Circle
1074 | LCw setrgbcolor
1075 | 0.400 UP
1076 | 2672 363 CircleF
1077 | 0.500 UP
1078 | 1.000 UL
1079 | LT0
1080 | 0.00 0.38 0.68 C 2672 363 Circle
1081 | LCw setrgbcolor
1082 | 0.400 UP
1083 | 2918 363 CircleF
1084 | 0.500 UP
1085 | 1.000 UL
1086 | LT0
1087 | 0.00 0.38 0.68 C 2918 363 Circle
1088 | LCw setrgbcolor
1089 | 0.400 UP
1090 | 3165 363 CircleF
1091 | 0.500 UP
1092 | 1.000 UL
1093 | LT0
1094 | 0.00 0.38 0.68 C 3165 363 Circle
1095 | LCw setrgbcolor
1096 | 0.400 UP
1097 | 3411 363 CircleF
1098 | 0.500 UP
1099 | 1.000 UL
1100 | LT0
1101 | 0.00 0.38 0.68 C 3411 363 Circle
1102 | LCw setrgbcolor
1103 | 0.400 UP
1104 | 3450 363 CircleF
1105 | 0.500 UP
1106 | 1.000 UL
1107 | LT0
1108 | 0.00 0.38 0.68 C 3450 363 Circle
1109 | LCw setrgbcolor
1110 | 0.400 UP
1111 | 3549 363 CircleF
1112 | 0.500 UP
1113 | 1.000 UL
1114 | LT0
1115 | 0.00 0.38 0.68 C 3549 363 Circle
1116 | LCw setrgbcolor
1117 | 0.400 UP
1118 | 3574 363 CircleF
1119 | 0.500 UP
1120 | 1.000 UL
1121 | LT0
1122 | 0.00 0.38 0.68 C 3574 363 Circle
1123 | LCw setrgbcolor
1124 | 0.400 UP
1125 | 3597 367 CircleF
1126 | 0.500 UP
1127 | 1.000 UL
1128 | LT0
1129 | 0.00 0.38 0.68 C 3597 367 Circle
1130 | LCw setrgbcolor
1131 | 0.400 UP
1132 | 3621 425 CircleF
1133 | 0.500 UP
1134 | 1.000 UL
1135 | LT0
1136 | 0.00 0.38 0.68 C 3621 425 Circle
1137 | LCw setrgbcolor
1138 | 0.400 UP
1139 | 3638 600 CircleF
1140 | 0.500 UP
1141 | 1.000 UL
1142 | LT0
1143 | 0.00 0.38 0.68 C 3638 600 Circle
1144 | LCw setrgbcolor
1145 | 0.400 UP
1146 | 3654 958 CircleF
1147 | 0.500 UP
1148 | 1.000 UL
1149 | LT0
1150 | 0.00 0.38 0.68 C 3654 958 Circle
1151 | LCw setrgbcolor
1152 | 0.400 UP
1153 | 3669 1373 CircleF
1154 | 0.500 UP
1155 | 1.000 UL
1156 | LT0
1157 | 0.00 0.38 0.68 C 3669 1373 Circle
1158 | LCw setrgbcolor
1159 | 0.400 UP
1160 | 3684 1720 CircleF
1161 | 0.500 UP
1162 | 1.000 UL
1163 | LT0
1164 | 0.00 0.38 0.68 C 3684 1720 Circle
1165 | LCw setrgbcolor
1166 | 0.400 UP
1167 | 3700 1928 CircleF
1168 | 0.500 UP
1169 | 1.000 UL
1170 | LT0
1171 | 0.00 0.38 0.68 C 3700 1928 Circle
1172 | LCw setrgbcolor
1173 | 0.400 UP
1174 | 3716 2000 CircleF
1175 | 0.500 UP
1176 | 1.000 UL
1177 | LT0
1178 | 0.00 0.38 0.68 C 3716 2000 Circle
1179 | LCw setrgbcolor
1180 | 0.400 UP
1181 | 3737 2016 CircleF
1182 | 0.500 UP
1183 | 1.000 UL
1184 | LT0
1185 | 0.00 0.38 0.68 C 3737 2016 Circle
1186 | LCw setrgbcolor
1187 | 0.400 UP
1188 | 3760 2017 CircleF
1189 | 0.500 UP
1190 | 1.000 UL
1191 | LT0
1192 | 0.00 0.38 0.68 C 3760 2017 Circle
1193 | LCw setrgbcolor
1194 | 0.400 UP
1195 | 3791 2017 CircleF
1196 | 0.500 UP
1197 | 1.000 UL
1198 | LT0
1199 | 0.00 0.38 0.68 C 3791 2017 Circle
1200 | LCw setrgbcolor
1201 | 0.400 UP
1202 | 3859 2017 CircleF
1203 | 0.500 UP
1204 | 1.000 UL
1205 | LT0
1206 | 0.00 0.38 0.68 C 3859 2017 Circle
1207 | LCw setrgbcolor
1208 | 0.400 UP
1209 | 4064 2017 CircleF
1210 | 0.500 UP
1211 | 1.000 UL
1212 | LT0
1213 | 0.00 0.38 0.68 C 4064 2017 Circle
1214 | LCw setrgbcolor
1215 | 0.400 UP
1216 | 4311 2017 CircleF
1217 | 0.500 UP
1218 | 1.000 UL
1219 | LT0
1220 | 0.00 0.38 0.68 C 4311 2017 Circle
1221 | LCw setrgbcolor
1222 | 0.400 UP
1223 | 4557 2017 CircleF
1224 | 0.500 UP
1225 | 1.000 UL
1226 | LT0
1227 | 0.00 0.38 0.68 C 4557 2017 Circle
1228 | LCw setrgbcolor
1229 | 0.400 UP
1230 | 4803 2017 CircleF
1231 | 0.500 UP
1232 | 1.000 UL
1233 | LT0
1234 | 0.00 0.38 0.68 C 4803 2017 Circle
1235 | LCw setrgbcolor
1236 | 0.400 UP
1237 | 5050 2017 CircleF
1238 | 0.500 UP
1239 | 1.000 UL
1240 | LT0
1241 | 0.00 0.38 0.68 C 5050 2017 Circle
1242 | LCw setrgbcolor
1243 | 0.400 UP
1244 | 5296 2017 CircleF
1245 | 0.500 UP
1246 | 1.000 UL
1247 | LT0
1248 | 0.00 0.38 0.68 C 5296 2017 Circle
1249 | LCw setrgbcolor
1250 | 0.400 UP
1251 | 5542 2017 CircleF
1252 | 0.500 UP
1253 | 1.000 UL
1254 | LT0
1255 | 0.00 0.38 0.68 C 5542 2017 Circle
1256 | LCw setrgbcolor
1257 | 0.400 UP
1258 | 5789 2017 CircleF
1259 | 0.500 UP
1260 | 1.000 UL
1261 | LT0
1262 | 0.00 0.38 0.68 C 5789 2017 Circle
1263 | LCw setrgbcolor
1264 | 0.400 UP
1265 | 6035 2017 CircleF
1266 | 0.500 UP
1267 | 1.000 UL
1268 | LT0
1269 | 0.00 0.38 0.68 C 6035 2017 Circle
1270 | LCw setrgbcolor
1271 | 0.400 UP
1272 | 6281 2017 CircleF
1273 | 0.500 UP
1274 | 1.000 UL
1275 | LT0
1276 | 0.00 0.38 0.68 C 6281 2017 Circle
1277 | LCw setrgbcolor
1278 | 0.400 UP
1279 | 6528 2017 CircleF
1280 | 0.500 UP
1281 | 1.000 UL
1282 | LT0
1283 | 0.00 0.38 0.68 C 6528 2017 Circle
1284 | LCw setrgbcolor
1285 | 0.400 UP
1286 | 6774 2017 CircleF
1287 | 0.500 UP
1288 | 1.000 UL
1289 | LT0
1290 | 0.00 0.38 0.68 C 6774 2017 Circle
1291 | LCw setrgbcolor
1292 | 0.400 UP
1293 | 6947 2017 CircleF
1294 | 0.500 UP
1295 | 1.000 UL
1296 | LT0
1297 | 0.00 0.38 0.68 C 6947 2017 Circle
1298 | % End plot #1
1299 | 1.000 UL
1300 | LTb
1301 | 378 2100 N
1302 | 378 280 L
1303 | 6569 0 V
1304 | 0 1820 V
1305 | -6569 0 V
1306 | Z stroke
1307 | 1.000 UP
1308 | 1.000 UL
1309 | LTb
1310 | 1.000 UL
1311 | LTb
1312 | 1.000 UL
1313 | LTa
1314 | 378 2883 M
1315 | 6569 0 V
1316 | stroke
1317 | LTb
1318 | 378 2883 M
1319 | 63 0 V
1320 | 6506 0 R
1321 | -63 0 V
1322 | /Verdana findfont 80 scalefont setfont
1323 | /vshift -26 def
1324 | -6590 0 R
1325 | (-1) Rshow
1326 | /Helvetica findfont 140 scalefont setfont
1327 | /vshift -46 def
1328 | 1.000 UL
1329 | LTb
1330 | 1.000 UL
1331 | LTa
1332 | 378 3710 M
1333 | 6569 0 V
1334 | stroke
1335 | LTb
1336 | 378 3710 M
1337 | 63 0 V
1338 | 6506 0 R
1339 | -63 0 V
1340 | /Verdana findfont 80 scalefont setfont
1341 | /vshift -26 def
1342 | -6590 0 R
1343 | ( 0) Rshow
1344 | /Helvetica findfont 140 scalefont setfont
1345 | /vshift -46 def
1346 | 1.000 UL
1347 | LTb
1348 | 1.000 UL
1349 | LTa
1350 | 378 4536 M
1351 | 6569 0 V
1352 | stroke
1353 | LTb
1354 | 378 4536 M
1355 | 63 0 V
1356 | 6506 0 R
1357 | -63 0 V
1358 | /Verdana findfont 80 scalefont setfont
1359 | /vshift -26 def
1360 | -6590 0 R
1361 | ( 1) Rshow
1362 | /Helvetica findfont 140 scalefont setfont
1363 | /vshift -46 def
1364 | 1.000 UL
1365 | LTb
1366 | 1.000 UL
1367 | LTa
1368 | 378 2800 M
1369 | 0 1819 V
1370 | stroke
1371 | LTb
1372 | 378 2800 M
1373 | 0 63 V
1374 | 0 1756 R
1375 | 0 -63 V
1376 | /Verdana findfont 80 scalefont setfont
1377 | /vshift -26 def
1378 | 0 -1896 R
1379 | (-10) Cshow
1380 | /Helvetica findfont 140 scalefont setfont
1381 | /vshift -46 def
1382 | 1.000 UL
1383 | LTb
1384 | 1.000 UL
1385 | LTa
1386 | 706 2800 M
1387 | 0 1819 V
1388 | stroke
1389 | LTb
1390 | 706 2800 M
1391 | 0 63 V
1392 | 0 1756 R
1393 | 0 -63 V
1394 | /Verdana findfont 80 scalefont setfont
1395 | /vshift -26 def
1396 | 0 -1896 R
1397 | (-9) Cshow
1398 | /Helvetica findfont 140 scalefont setfont
1399 | /vshift -46 def
1400 | 1.000 UL
1401 | LTb
1402 | 1.000 UL
1403 | LTa
1404 | 1035 2800 M
1405 | 0 1819 V
1406 | stroke
1407 | LTb
1408 | 1035 2800 M
1409 | 0 63 V
1410 | 0 1756 R
1411 | 0 -63 V
1412 | /Verdana findfont 80 scalefont setfont
1413 | /vshift -26 def
1414 | 0 -1896 R
1415 | (-8) Cshow
1416 | /Helvetica findfont 140 scalefont setfont
1417 | /vshift -46 def
1418 | 1.000 UL
1419 | LTb
1420 | 1.000 UL
1421 | LTa
1422 | 1363 2800 M
1423 | 0 1819 V
1424 | stroke
1425 | LTb
1426 | 1363 2800 M
1427 | 0 63 V
1428 | 0 1756 R
1429 | 0 -63 V
1430 | /Verdana findfont 80 scalefont setfont
1431 | /vshift -26 def
1432 | 0 -1896 R
1433 | (-7) Cshow
1434 | /Helvetica findfont 140 scalefont setfont
1435 | /vshift -46 def
1436 | 1.000 UL
1437 | LTb
1438 | 1.000 UL
1439 | LTa
1440 | 1692 2800 M
1441 | 0 1819 V
1442 | stroke
1443 | LTb
1444 | 1692 2800 M
1445 | 0 63 V
1446 | 0 1756 R
1447 | 0 -63 V
1448 | /Verdana findfont 80 scalefont setfont
1449 | /vshift -26 def
1450 | 0 -1896 R
1451 | (-6) Cshow
1452 | /Helvetica findfont 140 scalefont setfont
1453 | /vshift -46 def
1454 | 1.000 UL
1455 | LTb
1456 | 1.000 UL
1457 | LTa
1458 | 2020 2800 M
1459 | 0 1819 V
1460 | stroke
1461 | LTb
1462 | 2020 2800 M
1463 | 0 63 V
1464 | 0 1756 R
1465 | 0 -63 V
1466 | /Verdana findfont 80 scalefont setfont
1467 | /vshift -26 def
1468 | 0 -1896 R
1469 | (-5) Cshow
1470 | /Helvetica findfont 140 scalefont setfont
1471 | /vshift -46 def
1472 | 1.000 UL
1473 | LTb
1474 | 1.000 UL
1475 | LTa
1476 | 2349 2800 M
1477 | 0 1819 V
1478 | stroke
1479 | LTb
1480 | 2349 2800 M
1481 | 0 63 V
1482 | 0 1756 R
1483 | 0 -63 V
1484 | /Verdana findfont 80 scalefont setfont
1485 | /vshift -26 def
1486 | 0 -1896 R
1487 | (-4) Cshow
1488 | /Helvetica findfont 140 scalefont setfont
1489 | /vshift -46 def
1490 | 1.000 UL
1491 | LTb
1492 | 1.000 UL
1493 | LTa
1494 | 2677 2800 M
1495 | 0 1819 V
1496 | stroke
1497 | LTb
1498 | 2677 2800 M
1499 | 0 63 V
1500 | 0 1756 R
1501 | 0 -63 V
1502 | /Verdana findfont 80 scalefont setfont
1503 | /vshift -26 def
1504 | 0 -1896 R
1505 | (-3) Cshow
1506 | /Helvetica findfont 140 scalefont setfont
1507 | /vshift -46 def
1508 | 1.000 UL
1509 | LTb
1510 | 1.000 UL
1511 | LTa
1512 | 3006 2800 M
1513 | 0 1819 V
1514 | stroke
1515 | LTb
1516 | 3006 2800 M
1517 | 0 63 V
1518 | 0 1756 R
1519 | 0 -63 V
1520 | /Verdana findfont 80 scalefont setfont
1521 | /vshift -26 def
1522 | 0 -1896 R
1523 | (-2) Cshow
1524 | /Helvetica findfont 140 scalefont setfont
1525 | /vshift -46 def
1526 | 1.000 UL
1527 | LTb
1528 | 1.000 UL
1529 | LTa
1530 | 3334 2800 M
1531 | 0 1819 V
1532 | stroke
1533 | LTb
1534 | 3334 2800 M
1535 | 0 63 V
1536 | 0 1756 R
1537 | 0 -63 V
1538 | /Verdana findfont 80 scalefont setfont
1539 | /vshift -26 def
1540 | 0 -1896 R
1541 | (-1) Cshow
1542 | /Helvetica findfont 140 scalefont setfont
1543 | /vshift -46 def
1544 | 1.000 UL
1545 | LTb
1546 | 1.000 UL
1547 | LTa
1548 | 3663 2800 M
1549 | 0 1819 V
1550 | stroke
1551 | LTb
1552 | 3663 2800 M
1553 | 0 63 V
1554 | 0 1756 R
1555 | 0 -63 V
1556 | /Verdana findfont 80 scalefont setfont
1557 | /vshift -26 def
1558 | 0 -1896 R
1559 | ( 0) Cshow
1560 | /Helvetica findfont 140 scalefont setfont
1561 | /vshift -46 def
1562 | 1.000 UL
1563 | LTb
1564 | 1.000 UL
1565 | LTa
1566 | 3991 2800 M
1567 | 0 1819 V
1568 | stroke
1569 | LTb
1570 | 3991 2800 M
1571 | 0 63 V
1572 | 0 1756 R
1573 | 0 -63 V
1574 | /Verdana findfont 80 scalefont setfont
1575 | /vshift -26 def
1576 | 0 -1896 R
1577 | ( 1) Cshow
1578 | /Helvetica findfont 140 scalefont setfont
1579 | /vshift -46 def
1580 | 1.000 UL
1581 | LTb
1582 | 1.000 UL
1583 | LTa
1584 | 4319 2800 M
1585 | 0 1819 V
1586 | stroke
1587 | LTb
1588 | 4319 2800 M
1589 | 0 63 V
1590 | 0 1756 R
1591 | 0 -63 V
1592 | /Verdana findfont 80 scalefont setfont
1593 | /vshift -26 def
1594 | 0 -1896 R
1595 | ( 2) Cshow
1596 | /Helvetica findfont 140 scalefont setfont
1597 | /vshift -46 def
1598 | 1.000 UL
1599 | LTb
1600 | 1.000 UL
1601 | LTa
1602 | 4648 2800 M
1603 | 0 1819 V
1604 | stroke
1605 | LTb
1606 | 4648 2800 M
1607 | 0 63 V
1608 | 0 1756 R
1609 | 0 -63 V
1610 | /Verdana findfont 80 scalefont setfont
1611 | /vshift -26 def
1612 | 0 -1896 R
1613 | ( 3) Cshow
1614 | /Helvetica findfont 140 scalefont setfont
1615 | /vshift -46 def
1616 | 1.000 UL
1617 | LTb
1618 | 1.000 UL
1619 | LTa
1620 | 4976 2800 M
1621 | 0 1819 V
1622 | stroke
1623 | LTb
1624 | 4976 2800 M
1625 | 0 63 V
1626 | 0 1756 R
1627 | 0 -63 V
1628 | /Verdana findfont 80 scalefont setfont
1629 | /vshift -26 def
1630 | 0 -1896 R
1631 | ( 4) Cshow
1632 | /Helvetica findfont 140 scalefont setfont
1633 | /vshift -46 def
1634 | 1.000 UL
1635 | LTb
1636 | 1.000 UL
1637 | LTa
1638 | 5305 2800 M
1639 | 0 1819 V
1640 | stroke
1641 | LTb
1642 | 5305 2800 M
1643 | 0 63 V
1644 | 0 1756 R
1645 | 0 -63 V
1646 | /Verdana findfont 80 scalefont setfont
1647 | /vshift -26 def
1648 | 0 -1896 R
1649 | ( 5) Cshow
1650 | /Helvetica findfont 140 scalefont setfont
1651 | /vshift -46 def
1652 | 1.000 UL
1653 | LTb
1654 | 1.000 UL
1655 | LTa
1656 | 5633 2800 M
1657 | 0 1819 V
1658 | stroke
1659 | LTb
1660 | 5633 2800 M
1661 | 0 63 V
1662 | 0 1756 R
1663 | 0 -63 V
1664 | /Verdana findfont 80 scalefont setfont
1665 | /vshift -26 def
1666 | 0 -1896 R
1667 | ( 6) Cshow
1668 | /Helvetica findfont 140 scalefont setfont
1669 | /vshift -46 def
1670 | 1.000 UL
1671 | LTb
1672 | 1.000 UL
1673 | LTa
1674 | 5962 2800 M
1675 | 0 1819 V
1676 | stroke
1677 | LTb
1678 | 5962 2800 M
1679 | 0 63 V
1680 | 0 1756 R
1681 | 0 -63 V
1682 | /Verdana findfont 80 scalefont setfont
1683 | /vshift -26 def
1684 | 0 -1896 R
1685 | ( 7) Cshow
1686 | /Helvetica findfont 140 scalefont setfont
1687 | /vshift -46 def
1688 | 1.000 UL
1689 | LTb
1690 | 1.000 UL
1691 | LTa
1692 | 6290 2800 M
1693 | 0 1819 V
1694 | stroke
1695 | LTb
1696 | 6290 2800 M
1697 | 0 63 V
1698 | 0 1756 R
1699 | 0 -63 V
1700 | /Verdana findfont 80 scalefont setfont
1701 | /vshift -26 def
1702 | 0 -1896 R
1703 | ( 8) Cshow
1704 | /Helvetica findfont 140 scalefont setfont
1705 | /vshift -46 def
1706 | 1.000 UL
1707 | LTb
1708 | 1.000 UL
1709 | LTa
1710 | 6619 2800 M
1711 | 0 1819 V
1712 | stroke
1713 | LTb
1714 | 6619 2800 M
1715 | 0 63 V
1716 | 0 1756 R
1717 | 0 -63 V
1718 | /Verdana findfont 80 scalefont setfont
1719 | /vshift -26 def
1720 | 0 -1896 R
1721 | ( 9) Cshow
1722 | /Helvetica findfont 140 scalefont setfont
1723 | /vshift -46 def
1724 | 1.000 UL
1725 | LTb
1726 | 1.000 UL
1727 | LTa
1728 | 6947 2800 M
1729 | 0 1819 V
1730 | stroke
1731 | LTb
1732 | 6947 2800 M
1733 | 0 63 V
1734 | 0 1756 R
1735 | 0 -63 V
1736 | /Verdana findfont 80 scalefont setfont
1737 | /vshift -26 def
1738 | 0 -1896 R
1739 | ( 10) Cshow
1740 | /Helvetica findfont 140 scalefont setfont
1741 | /vshift -46 def
1742 | 1.000 UL
1743 | LTb
1744 | 1.000 UL
1745 | LTb
1746 | 378 4619 N
1747 | 0 -1819 V
1748 | 6569 0 V
1749 | 0 1819 V
1750 | -6569 0 V
1751 | Z stroke
1752 | 3662 4829 M
1753 | (Fourth Order Runge-Kutta \(RK4\)) Cshow
1754 | 1.000 UP
1755 | 1.000 UL
1756 | LTb
1757 | % Begin plot #1
1758 | 0.500 UP
1759 | 1.000 UL
1760 | LT0
1761 | 0.00 0.38 0.68 C /Helvetica findfont 140 scalefont setfont
1762 | 378 2883 M
1763 | 33 0 V
1764 | 33 0 V
1765 | 33 0 V
1766 | 32 0 V
1767 | 33 0 V
1768 | 33 0 V
1769 | 33 0 V
1770 | 33 0 V
1771 | 33 0 V
1772 | 32 0 V
1773 | 33 0 V
1774 | 33 0 V
1775 | 33 0 V
1776 | 33 0 V
1777 | 33 0 V
1778 | 33 0 V
1779 | 32 0 V
1780 | 33 0 V
1781 | 33 0 V
1782 | 33 0 V
1783 | 33 0 V
1784 | 33 0 V
1785 | 32 0 V
1786 | 33 0 V
1787 | 33 0 V
1788 | 33 0 V
1789 | 33 0 V
1790 | 33 0 V
1791 | 33 0 V
1792 | 32 0 V
1793 | 33 0 V
1794 | 33 0 V
1795 | 33 0 V
1796 | 33 0 V
1797 | 33 0 V
1798 | 32 0 V
1799 | 33 0 V
1800 | 33 0 V
1801 | 33 0 V
1802 | 33 0 V
1803 | 33 0 V
1804 | 32 0 V
1805 | 33 0 V
1806 | 33 0 V
1807 | 33 0 V
1808 | 33 0 V
1809 | 33 0 V
1810 | 33 0 V
1811 | 32 0 V
1812 | 33 0 V
1813 | 33 0 V
1814 | 33 0 V
1815 | 33 0 V
1816 | 33 0 V
1817 | 32 0 V
1818 | 33 0 V
1819 | 33 0 V
1820 | 33 0 V
1821 | 33 0 V
1822 | 33 0 V
1823 | 33 0 V
1824 | 32 0 V
1825 | 33 0 V
1826 | 33 0 V
1827 | 33 0 V
1828 | 33 0 V
1829 | 33 0 V
1830 | 32 0 V
1831 | 33 0 V
1832 | 33 0 V
1833 | 33 0 V
1834 | 33 0 V
1835 | 33 0 V
1836 | 33 0 V
1837 | 32 0 V
1838 | 33 0 V
1839 | 33 0 V
1840 | 33 0 V
1841 | 33 0 V
1842 | 33 0 V
1843 | 32 0 V
1844 | 33 0 V
1845 | 33 0 V
1846 | 33 0 V
1847 | 33 0 V
1848 | 33 0 V
1849 | 33 0 V
1850 | 32 0 V
1851 | 33 0 V
1852 | 33 0 V
1853 | 33 0 V
1854 | 33 0 V
1855 | 33 0 V
1856 | 32 0 V
1857 | 33 0 V
1858 | 33 0 V
1859 | 33 0 V
1860 | 33 4 V
1861 | 33 125 V
1862 | 32 697 V
1863 | 33 698 V
1864 | 33 125 V
1865 | 33 4 V
1866 | 33 0 V
1867 | stroke 3794 4536 M
1868 | 33 0 V
1869 | 33 0 V
1870 | 32 0 V
1871 | 33 0 V
1872 | 33 0 V
1873 | 33 0 V
1874 | 33 0 V
1875 | 33 0 V
1876 | 32 0 V
1877 | 33 0 V
1878 | 33 0 V
1879 | 33 0 V
1880 | 33 0 V
1881 | 33 0 V
1882 | 33 0 V
1883 | 32 0 V
1884 | 33 0 V
1885 | 33 0 V
1886 | 33 0 V
1887 | 33 0 V
1888 | 33 0 V
1889 | 32 0 V
1890 | 33 0 V
1891 | 33 0 V
1892 | 33 0 V
1893 | 33 0 V
1894 | 33 0 V
1895 | 33 0 V
1896 | 32 0 V
1897 | 33 0 V
1898 | 33 0 V
1899 | 33 0 V
1900 | 33 0 V
1901 | 33 0 V
1902 | 32 0 V
1903 | 33 0 V
1904 | 33 0 V
1905 | 33 0 V
1906 | 33 0 V
1907 | 33 0 V
1908 | 33 0 V
1909 | 32 0 V
1910 | 33 0 V
1911 | 33 0 V
1912 | 33 0 V
1913 | 33 0 V
1914 | 33 0 V
1915 | 32 0 V
1916 | 33 0 V
1917 | 33 0 V
1918 | 33 0 V
1919 | 33 0 V
1920 | 33 0 V
1921 | 33 0 V
1922 | 32 0 V
1923 | 33 0 V
1924 | 33 0 V
1925 | 33 0 V
1926 | 33 0 V
1927 | 33 0 V
1928 | 32 0 V
1929 | 33 0 V
1930 | 33 0 V
1931 | 33 0 V
1932 | 33 0 V
1933 | 33 0 V
1934 | 32 0 V
1935 | 33 0 V
1936 | 33 0 V
1937 | 33 0 V
1938 | 33 0 V
1939 | 33 0 V
1940 | 33 0 V
1941 | 32 0 V
1942 | 33 0 V
1943 | 33 0 V
1944 | 33 0 V
1945 | 33 0 V
1946 | 33 0 V
1947 | 32 0 V
1948 | 33 0 V
1949 | 33 0 V
1950 | 33 0 V
1951 | 33 0 V
1952 | 33 0 V
1953 | 33 0 V
1954 | 32 0 V
1955 | 33 0 V
1956 | 33 0 V
1957 | 33 0 V
1958 | 33 0 V
1959 | 33 0 V
1960 | 32 0 V
1961 | 33 0 V
1962 | 33 0 V
1963 | stroke
1964 | LCw setrgbcolor
1965 | 0.400 UP
1966 | 378 2883 CircleF
1967 | 0.500 UP
1968 | 1.000 UL
1969 | LT0
1970 | 0.00 0.38 0.68 C 378 2883 Circle
1971 | LCw setrgbcolor
1972 | 0.400 UP
1973 | 378 2883 CircleF
1974 | 0.500 UP
1975 | 1.000 UL
1976 | LT0
1977 | 0.00 0.38 0.68 C 378 2883 Circle
1978 | LCw setrgbcolor
1979 | 0.400 UP
1980 | 411 2883 CircleF
1981 | 0.500 UP
1982 | 1.000 UL
1983 | LT0
1984 | 0.00 0.38 0.68 C 411 2883 Circle
1985 | LCw setrgbcolor
1986 | 0.400 UP
1987 | 444 2883 CircleF
1988 | 0.500 UP
1989 | 1.000 UL
1990 | LT0
1991 | 0.00 0.38 0.68 C 444 2883 Circle
1992 | LCw setrgbcolor
1993 | 0.400 UP
1994 | 477 2883 CircleF
1995 | 0.500 UP
1996 | 1.000 UL
1997 | LT0
1998 | 0.00 0.38 0.68 C 477 2883 Circle
1999 | LCw setrgbcolor
2000 | 0.400 UP
2001 | 509 2883 CircleF
2002 | 0.500 UP
2003 | 1.000 UL
2004 | LT0
2005 | 0.00 0.38 0.68 C 509 2883 Circle
2006 | LCw setrgbcolor
2007 | 0.400 UP
2008 | 542 2883 CircleF
2009 | 0.500 UP
2010 | 1.000 UL
2011 | LT0
2012 | 0.00 0.38 0.68 C 542 2883 Circle
2013 | LCw setrgbcolor
2014 | 0.400 UP
2015 | 575 2883 CircleF
2016 | 0.500 UP
2017 | 1.000 UL
2018 | LT0
2019 | 0.00 0.38 0.68 C 575 2883 Circle
2020 | LCw setrgbcolor
2021 | 0.400 UP
2022 | 608 2883 CircleF
2023 | 0.500 UP
2024 | 1.000 UL
2025 | LT0
2026 | 0.00 0.38 0.68 C 608 2883 Circle
2027 | LCw setrgbcolor
2028 | 0.400 UP
2029 | 641 2883 CircleF
2030 | 0.500 UP
2031 | 1.000 UL
2032 | LT0
2033 | 0.00 0.38 0.68 C 641 2883 Circle
2034 | LCw setrgbcolor
2035 | 0.400 UP
2036 | 674 2883 CircleF
2037 | 0.500 UP
2038 | 1.000 UL
2039 | LT0
2040 | 0.00 0.38 0.68 C 674 2883 Circle
2041 | LCw setrgbcolor
2042 | 0.400 UP
2043 | 706 2883 CircleF
2044 | 0.500 UP
2045 | 1.000 UL
2046 | LT0
2047 | 0.00 0.38 0.68 C 706 2883 Circle
2048 | LCw setrgbcolor
2049 | 0.400 UP
2050 | 739 2883 CircleF
2051 | 0.500 UP
2052 | 1.000 UL
2053 | LT0
2054 | 0.00 0.38 0.68 C 739 2883 Circle
2055 | LCw setrgbcolor
2056 | 0.400 UP
2057 | 772 2883 CircleF
2058 | 0.500 UP
2059 | 1.000 UL
2060 | LT0
2061 | 0.00 0.38 0.68 C 772 2883 Circle
2062 | LCw setrgbcolor
2063 | 0.400 UP
2064 | 805 2883 CircleF
2065 | 0.500 UP
2066 | 1.000 UL
2067 | LT0
2068 | 0.00 0.38 0.68 C 805 2883 Circle
2069 | LCw setrgbcolor
2070 | 0.400 UP
2071 | 838 2883 CircleF
2072 | 0.500 UP
2073 | 1.000 UL
2074 | LT0
2075 | 0.00 0.38 0.68 C 838 2883 Circle
2076 | LCw setrgbcolor
2077 | 0.400 UP
2078 | 871 2883 CircleF
2079 | 0.500 UP
2080 | 1.000 UL
2081 | LT0
2082 | 0.00 0.38 0.68 C 871 2883 Circle
2083 | LCw setrgbcolor
2084 | 0.400 UP
2085 | 904 2883 CircleF
2086 | 0.500 UP
2087 | 1.000 UL
2088 | LT0
2089 | 0.00 0.38 0.68 C 904 2883 Circle
2090 | LCw setrgbcolor
2091 | 0.400 UP
2092 | 936 2883 CircleF
2093 | 0.500 UP
2094 | 1.000 UL
2095 | LT0
2096 | 0.00 0.38 0.68 C 936 2883 Circle
2097 | LCw setrgbcolor
2098 | 0.400 UP
2099 | 969 2883 CircleF
2100 | 0.500 UP
2101 | 1.000 UL
2102 | LT0
2103 | 0.00 0.38 0.68 C 969 2883 Circle
2104 | LCw setrgbcolor
2105 | 0.400 UP
2106 | 1002 2883 CircleF
2107 | 0.500 UP
2108 | 1.000 UL
2109 | LT0
2110 | 0.00 0.38 0.68 C 1002 2883 Circle
2111 | LCw setrgbcolor
2112 | 0.400 UP
2113 | 1035 2883 CircleF
2114 | 0.500 UP
2115 | 1.000 UL
2116 | LT0
2117 | 0.00 0.38 0.68 C 1035 2883 Circle
2118 | LCw setrgbcolor
2119 | 0.400 UP
2120 | 1068 2883 CircleF
2121 | 0.500 UP
2122 | 1.000 UL
2123 | LT0
2124 | 0.00 0.38 0.68 C 1068 2883 Circle
2125 | LCw setrgbcolor
2126 | 0.400 UP
2127 | 1101 2883 CircleF
2128 | 0.500 UP
2129 | 1.000 UL
2130 | LT0
2131 | 0.00 0.38 0.68 C 1101 2883 Circle
2132 | LCw setrgbcolor
2133 | 0.400 UP
2134 | 1133 2883 CircleF
2135 | 0.500 UP
2136 | 1.000 UL
2137 | LT0
2138 | 0.00 0.38 0.68 C 1133 2883 Circle
2139 | LCw setrgbcolor
2140 | 0.400 UP
2141 | 1166 2883 CircleF
2142 | 0.500 UP
2143 | 1.000 UL
2144 | LT0
2145 | 0.00 0.38 0.68 C 1166 2883 Circle
2146 | LCw setrgbcolor
2147 | 0.400 UP
2148 | 1199 2883 CircleF
2149 | 0.500 UP
2150 | 1.000 UL
2151 | LT0
2152 | 0.00 0.38 0.68 C 1199 2883 Circle
2153 | LCw setrgbcolor
2154 | 0.400 UP
2155 | 1232 2883 CircleF
2156 | 0.500 UP
2157 | 1.000 UL
2158 | LT0
2159 | 0.00 0.38 0.68 C 1232 2883 Circle
2160 | LCw setrgbcolor
2161 | 0.400 UP
2162 | 1265 2883 CircleF
2163 | 0.500 UP
2164 | 1.000 UL
2165 | LT0
2166 | 0.00 0.38 0.68 C 1265 2883 Circle
2167 | LCw setrgbcolor
2168 | 0.400 UP
2169 | 1298 2883 CircleF
2170 | 0.500 UP
2171 | 1.000 UL
2172 | LT0
2173 | 0.00 0.38 0.68 C 1298 2883 Circle
2174 | LCw setrgbcolor
2175 | 0.400 UP
2176 | 1331 2883 CircleF
2177 | 0.500 UP
2178 | 1.000 UL
2179 | LT0
2180 | 0.00 0.38 0.68 C 1331 2883 Circle
2181 | LCw setrgbcolor
2182 | 0.400 UP
2183 | 1363 2883 CircleF
2184 | 0.500 UP
2185 | 1.000 UL
2186 | LT0
2187 | 0.00 0.38 0.68 C 1363 2883 Circle
2188 | LCw setrgbcolor
2189 | 0.400 UP
2190 | 1396 2883 CircleF
2191 | 0.500 UP
2192 | 1.000 UL
2193 | LT0
2194 | 0.00 0.38 0.68 C 1396 2883 Circle
2195 | LCw setrgbcolor
2196 | 0.400 UP
2197 | 1429 2883 CircleF
2198 | 0.500 UP
2199 | 1.000 UL
2200 | LT0
2201 | 0.00 0.38 0.68 C 1429 2883 Circle
2202 | LCw setrgbcolor
2203 | 0.400 UP
2204 | 1462 2883 CircleF
2205 | 0.500 UP
2206 | 1.000 UL
2207 | LT0
2208 | 0.00 0.38 0.68 C 1462 2883 Circle
2209 | LCw setrgbcolor
2210 | 0.400 UP
2211 | 1495 2883 CircleF
2212 | 0.500 UP
2213 | 1.000 UL
2214 | LT0
2215 | 0.00 0.38 0.68 C 1495 2883 Circle
2216 | LCw setrgbcolor
2217 | 0.400 UP
2218 | 1528 2883 CircleF
2219 | 0.500 UP
2220 | 1.000 UL
2221 | LT0
2222 | 0.00 0.38 0.68 C 1528 2883 Circle
2223 | LCw setrgbcolor
2224 | 0.400 UP
2225 | 1560 2883 CircleF
2226 | 0.500 UP
2227 | 1.000 UL
2228 | LT0
2229 | 0.00 0.38 0.68 C 1560 2883 Circle
2230 | LCw setrgbcolor
2231 | 0.400 UP
2232 | 1593 2883 CircleF
2233 | 0.500 UP
2234 | 1.000 UL
2235 | LT0
2236 | 0.00 0.38 0.68 C 1593 2883 Circle
2237 | LCw setrgbcolor
2238 | 0.400 UP
2239 | 1626 2883 CircleF
2240 | 0.500 UP
2241 | 1.000 UL
2242 | LT0
2243 | 0.00 0.38 0.68 C 1626 2883 Circle
2244 | LCw setrgbcolor
2245 | 0.400 UP
2246 | 1659 2883 CircleF
2247 | 0.500 UP
2248 | 1.000 UL
2249 | LT0
2250 | 0.00 0.38 0.68 C 1659 2883 Circle
2251 | LCw setrgbcolor
2252 | 0.400 UP
2253 | 1692 2883 CircleF
2254 | 0.500 UP
2255 | 1.000 UL
2256 | LT0
2257 | 0.00 0.38 0.68 C 1692 2883 Circle
2258 | LCw setrgbcolor
2259 | 0.400 UP
2260 | 1725 2883 CircleF
2261 | 0.500 UP
2262 | 1.000 UL
2263 | LT0
2264 | 0.00 0.38 0.68 C 1725 2883 Circle
2265 | LCw setrgbcolor
2266 | 0.400 UP
2267 | 1757 2883 CircleF
2268 | 0.500 UP
2269 | 1.000 UL
2270 | LT0
2271 | 0.00 0.38 0.68 C 1757 2883 Circle
2272 | LCw setrgbcolor
2273 | 0.400 UP
2274 | 1790 2883 CircleF
2275 | 0.500 UP
2276 | 1.000 UL
2277 | LT0
2278 | 0.00 0.38 0.68 C 1790 2883 Circle
2279 | LCw setrgbcolor
2280 | 0.400 UP
2281 | 1823 2883 CircleF
2282 | 0.500 UP
2283 | 1.000 UL
2284 | LT0
2285 | 0.00 0.38 0.68 C 1823 2883 Circle
2286 | LCw setrgbcolor
2287 | 0.400 UP
2288 | 1856 2883 CircleF
2289 | 0.500 UP
2290 | 1.000 UL
2291 | LT0
2292 | 0.00 0.38 0.68 C 1856 2883 Circle
2293 | LCw setrgbcolor
2294 | 0.400 UP
2295 | 1889 2883 CircleF
2296 | 0.500 UP
2297 | 1.000 UL
2298 | LT0
2299 | 0.00 0.38 0.68 C 1889 2883 Circle
2300 | LCw setrgbcolor
2301 | 0.400 UP
2302 | 1922 2883 CircleF
2303 | 0.500 UP
2304 | 1.000 UL
2305 | LT0
2306 | 0.00 0.38 0.68 C 1922 2883 Circle
2307 | LCw setrgbcolor
2308 | 0.400 UP
2309 | 1955 2883 CircleF
2310 | 0.500 UP
2311 | 1.000 UL
2312 | LT0
2313 | 0.00 0.38 0.68 C 1955 2883 Circle
2314 | LCw setrgbcolor
2315 | 0.400 UP
2316 | 1987 2883 CircleF
2317 | 0.500 UP
2318 | 1.000 UL
2319 | LT0
2320 | 0.00 0.38 0.68 C 1987 2883 Circle
2321 | LCw setrgbcolor
2322 | 0.400 UP
2323 | 2020 2883 CircleF
2324 | 0.500 UP
2325 | 1.000 UL
2326 | LT0
2327 | 0.00 0.38 0.68 C 2020 2883 Circle
2328 | LCw setrgbcolor
2329 | 0.400 UP
2330 | 2053 2883 CircleF
2331 | 0.500 UP
2332 | 1.000 UL
2333 | LT0
2334 | 0.00 0.38 0.68 C 2053 2883 Circle
2335 | LCw setrgbcolor
2336 | 0.400 UP
2337 | 2086 2883 CircleF
2338 | 0.500 UP
2339 | 1.000 UL
2340 | LT0
2341 | 0.00 0.38 0.68 C 2086 2883 Circle
2342 | LCw setrgbcolor
2343 | 0.400 UP
2344 | 2119 2883 CircleF
2345 | 0.500 UP
2346 | 1.000 UL
2347 | LT0
2348 | 0.00 0.38 0.68 C 2119 2883 Circle
2349 | LCw setrgbcolor
2350 | 0.400 UP
2351 | 2152 2883 CircleF
2352 | 0.500 UP
2353 | 1.000 UL
2354 | LT0
2355 | 0.00 0.38 0.68 C 2152 2883 Circle
2356 | LCw setrgbcolor
2357 | 0.400 UP
2358 | 2184 2883 CircleF
2359 | 0.500 UP
2360 | 1.000 UL
2361 | LT0
2362 | 0.00 0.38 0.68 C 2184 2883 Circle
2363 | LCw setrgbcolor
2364 | 0.400 UP
2365 | 2217 2883 CircleF
2366 | 0.500 UP
2367 | 1.000 UL
2368 | LT0
2369 | 0.00 0.38 0.68 C 2217 2883 Circle
2370 | LCw setrgbcolor
2371 | 0.400 UP
2372 | 2250 2883 CircleF
2373 | 0.500 UP
2374 | 1.000 UL
2375 | LT0
2376 | 0.00 0.38 0.68 C 2250 2883 Circle
2377 | LCw setrgbcolor
2378 | 0.400 UP
2379 | 2283 2883 CircleF
2380 | 0.500 UP
2381 | 1.000 UL
2382 | LT0
2383 | 0.00 0.38 0.68 C 2283 2883 Circle
2384 | LCw setrgbcolor
2385 | 0.400 UP
2386 | 2316 2883 CircleF
2387 | 0.500 UP
2388 | 1.000 UL
2389 | LT0
2390 | 0.00 0.38 0.68 C 2316 2883 Circle
2391 | LCw setrgbcolor
2392 | 0.400 UP
2393 | 2349 2883 CircleF
2394 | 0.500 UP
2395 | 1.000 UL
2396 | LT0
2397 | 0.00 0.38 0.68 C 2349 2883 Circle
2398 | LCw setrgbcolor
2399 | 0.400 UP
2400 | 2382 2883 CircleF
2401 | 0.500 UP
2402 | 1.000 UL
2403 | LT0
2404 | 0.00 0.38 0.68 C 2382 2883 Circle
2405 | LCw setrgbcolor
2406 | 0.400 UP
2407 | 2414 2883 CircleF
2408 | 0.500 UP
2409 | 1.000 UL
2410 | LT0
2411 | 0.00 0.38 0.68 C 2414 2883 Circle
2412 | LCw setrgbcolor
2413 | 0.400 UP
2414 | 2447 2883 CircleF
2415 | 0.500 UP
2416 | 1.000 UL
2417 | LT0
2418 | 0.00 0.38 0.68 C 2447 2883 Circle
2419 | LCw setrgbcolor
2420 | 0.400 UP
2421 | 2480 2883 CircleF
2422 | 0.500 UP
2423 | 1.000 UL
2424 | LT0
2425 | 0.00 0.38 0.68 C 2480 2883 Circle
2426 | LCw setrgbcolor
2427 | 0.400 UP
2428 | 2513 2883 CircleF
2429 | 0.500 UP
2430 | 1.000 UL
2431 | LT0
2432 | 0.00 0.38 0.68 C 2513 2883 Circle
2433 | LCw setrgbcolor
2434 | 0.400 UP
2435 | 2546 2883 CircleF
2436 | 0.500 UP
2437 | 1.000 UL
2438 | LT0
2439 | 0.00 0.38 0.68 C 2546 2883 Circle
2440 | LCw setrgbcolor
2441 | 0.400 UP
2442 | 2579 2883 CircleF
2443 | 0.500 UP
2444 | 1.000 UL
2445 | LT0
2446 | 0.00 0.38 0.68 C 2579 2883 Circle
2447 | LCw setrgbcolor
2448 | 0.400 UP
2449 | 2611 2883 CircleF
2450 | 0.500 UP
2451 | 1.000 UL
2452 | LT0
2453 | 0.00 0.38 0.68 C 2611 2883 Circle
2454 | LCw setrgbcolor
2455 | 0.400 UP
2456 | 2644 2883 CircleF
2457 | 0.500 UP
2458 | 1.000 UL
2459 | LT0
2460 | 0.00 0.38 0.68 C 2644 2883 Circle
2461 | LCw setrgbcolor
2462 | 0.400 UP
2463 | 2677 2883 CircleF
2464 | 0.500 UP
2465 | 1.000 UL
2466 | LT0
2467 | 0.00 0.38 0.68 C 2677 2883 Circle
2468 | LCw setrgbcolor
2469 | 0.400 UP
2470 | 2710 2883 CircleF
2471 | 0.500 UP
2472 | 1.000 UL
2473 | LT0
2474 | 0.00 0.38 0.68 C 2710 2883 Circle
2475 | LCw setrgbcolor
2476 | 0.400 UP
2477 | 2743 2883 CircleF
2478 | 0.500 UP
2479 | 1.000 UL
2480 | LT0
2481 | 0.00 0.38 0.68 C 2743 2883 Circle
2482 | LCw setrgbcolor
2483 | 0.400 UP
2484 | 2776 2883 CircleF
2485 | 0.500 UP
2486 | 1.000 UL
2487 | LT0
2488 | 0.00 0.38 0.68 C 2776 2883 Circle
2489 | LCw setrgbcolor
2490 | 0.400 UP
2491 | 2809 2883 CircleF
2492 | 0.500 UP
2493 | 1.000 UL
2494 | LT0
2495 | 0.00 0.38 0.68 C 2809 2883 Circle
2496 | LCw setrgbcolor
2497 | 0.400 UP
2498 | 2841 2883 CircleF
2499 | 0.500 UP
2500 | 1.000 UL
2501 | LT0
2502 | 0.00 0.38 0.68 C 2841 2883 Circle
2503 | LCw setrgbcolor
2504 | 0.400 UP
2505 | 2874 2883 CircleF
2506 | 0.500 UP
2507 | 1.000 UL
2508 | LT0
2509 | 0.00 0.38 0.68 C 2874 2883 Circle
2510 | LCw setrgbcolor
2511 | 0.400 UP
2512 | 2907 2883 CircleF
2513 | 0.500 UP
2514 | 1.000 UL
2515 | LT0
2516 | 0.00 0.38 0.68 C 2907 2883 Circle
2517 | LCw setrgbcolor
2518 | 0.400 UP
2519 | 2940 2883 CircleF
2520 | 0.500 UP
2521 | 1.000 UL
2522 | LT0
2523 | 0.00 0.38 0.68 C 2940 2883 Circle
2524 | LCw setrgbcolor
2525 | 0.400 UP
2526 | 2973 2883 CircleF
2527 | 0.500 UP
2528 | 1.000 UL
2529 | LT0
2530 | 0.00 0.38 0.68 C 2973 2883 Circle
2531 | LCw setrgbcolor
2532 | 0.400 UP
2533 | 3006 2883 CircleF
2534 | 0.500 UP
2535 | 1.000 UL
2536 | LT0
2537 | 0.00 0.38 0.68 C 3006 2883 Circle
2538 | LCw setrgbcolor
2539 | 0.400 UP
2540 | 3038 2883 CircleF
2541 | 0.500 UP
2542 | 1.000 UL
2543 | LT0
2544 | 0.00 0.38 0.68 C 3038 2883 Circle
2545 | LCw setrgbcolor
2546 | 0.400 UP
2547 | 3071 2883 CircleF
2548 | 0.500 UP
2549 | 1.000 UL
2550 | LT0
2551 | 0.00 0.38 0.68 C 3071 2883 Circle
2552 | LCw setrgbcolor
2553 | 0.400 UP
2554 | 3104 2883 CircleF
2555 | 0.500 UP
2556 | 1.000 UL
2557 | LT0
2558 | 0.00 0.38 0.68 C 3104 2883 Circle
2559 | LCw setrgbcolor
2560 | 0.400 UP
2561 | 3137 2883 CircleF
2562 | 0.500 UP
2563 | 1.000 UL
2564 | LT0
2565 | 0.00 0.38 0.68 C 3137 2883 Circle
2566 | LCw setrgbcolor
2567 | 0.400 UP
2568 | 3170 2883 CircleF
2569 | 0.500 UP
2570 | 1.000 UL
2571 | LT0
2572 | 0.00 0.38 0.68 C 3170 2883 Circle
2573 | LCw setrgbcolor
2574 | 0.400 UP
2575 | 3203 2883 CircleF
2576 | 0.500 UP
2577 | 1.000 UL
2578 | LT0
2579 | 0.00 0.38 0.68 C 3203 2883 Circle
2580 | LCw setrgbcolor
2581 | 0.400 UP
2582 | 3236 2883 CircleF
2583 | 0.500 UP
2584 | 1.000 UL
2585 | LT0
2586 | 0.00 0.38 0.68 C 3236 2883 Circle
2587 | LCw setrgbcolor
2588 | 0.400 UP
2589 | 3268 2883 CircleF
2590 | 0.500 UP
2591 | 1.000 UL
2592 | LT0
2593 | 0.00 0.38 0.68 C 3268 2883 Circle
2594 | LCw setrgbcolor
2595 | 0.400 UP
2596 | 3301 2883 CircleF
2597 | 0.500 UP
2598 | 1.000 UL
2599 | LT0
2600 | 0.00 0.38 0.68 C 3301 2883 Circle
2601 | LCw setrgbcolor
2602 | 0.400 UP
2603 | 3334 2883 CircleF
2604 | 0.500 UP
2605 | 1.000 UL
2606 | LT0
2607 | 0.00 0.38 0.68 C 3334 2883 Circle
2608 | LCw setrgbcolor
2609 | 0.400 UP
2610 | 3367 2883 CircleF
2611 | 0.500 UP
2612 | 1.000 UL
2613 | LT0
2614 | 0.00 0.38 0.68 C 3367 2883 Circle
2615 | LCw setrgbcolor
2616 | 0.400 UP
2617 | 3400 2883 CircleF
2618 | 0.500 UP
2619 | 1.000 UL
2620 | LT0
2621 | 0.00 0.38 0.68 C 3400 2883 Circle
2622 | LCw setrgbcolor
2623 | 0.400 UP
2624 | 3433 2883 CircleF
2625 | 0.500 UP
2626 | 1.000 UL
2627 | LT0
2628 | 0.00 0.38 0.68 C 3433 2883 Circle
2629 | LCw setrgbcolor
2630 | 0.400 UP
2631 | 3465 2883 CircleF
2632 | 0.500 UP
2633 | 1.000 UL
2634 | LT0
2635 | 0.00 0.38 0.68 C 3465 2883 Circle
2636 | LCw setrgbcolor
2637 | 0.400 UP
2638 | 3498 2883 CircleF
2639 | 0.500 UP
2640 | 1.000 UL
2641 | LT0
2642 | 0.00 0.38 0.68 C 3498 2883 Circle
2643 | LCw setrgbcolor
2644 | 0.400 UP
2645 | 3531 2883 CircleF
2646 | 0.500 UP
2647 | 1.000 UL
2648 | LT0
2649 | 0.00 0.38 0.68 C 3531 2883 Circle
2650 | LCw setrgbcolor
2651 | 0.400 UP
2652 | 3564 2883 CircleF
2653 | 0.500 UP
2654 | 1.000 UL
2655 | LT0
2656 | 0.00 0.38 0.68 C 3564 2883 Circle
2657 | LCw setrgbcolor
2658 | 0.400 UP
2659 | 3597 2887 CircleF
2660 | 0.500 UP
2661 | 1.000 UL
2662 | LT0
2663 | 0.00 0.38 0.68 C 3597 2887 Circle
2664 | LCw setrgbcolor
2665 | 0.400 UP
2666 | 3630 3012 CircleF
2667 | 0.500 UP
2668 | 1.000 UL
2669 | LT0
2670 | 0.00 0.38 0.68 C 3630 3012 Circle
2671 | LCw setrgbcolor
2672 | 0.400 UP
2673 | 3662 3709 CircleF
2674 | 0.500 UP
2675 | 1.000 UL
2676 | LT0
2677 | 0.00 0.38 0.68 C 3662 3709 Circle
2678 | LCw setrgbcolor
2679 | 0.400 UP
2680 | 3695 4407 CircleF
2681 | 0.500 UP
2682 | 1.000 UL
2683 | LT0
2684 | 0.00 0.38 0.68 C 3695 4407 Circle
2685 | LCw setrgbcolor
2686 | 0.400 UP
2687 | 3728 4532 CircleF
2688 | 0.500 UP
2689 | 1.000 UL
2690 | LT0
2691 | 0.00 0.38 0.68 C 3728 4532 Circle
2692 | LCw setrgbcolor
2693 | 0.400 UP
2694 | 3761 4536 CircleF
2695 | 0.500 UP
2696 | 1.000 UL
2697 | LT0
2698 | 0.00 0.38 0.68 C 3761 4536 Circle
2699 | LCw setrgbcolor
2700 | 0.400 UP
2701 | 3794 4536 CircleF
2702 | 0.500 UP
2703 | 1.000 UL
2704 | LT0
2705 | 0.00 0.38 0.68 C 3794 4536 Circle
2706 | LCw setrgbcolor
2707 | 0.400 UP
2708 | 3827 4536 CircleF
2709 | 0.500 UP
2710 | 1.000 UL
2711 | LT0
2712 | 0.00 0.38 0.68 C 3827 4536 Circle
2713 | LCw setrgbcolor
2714 | 0.400 UP
2715 | 3860 4536 CircleF
2716 | 0.500 UP
2717 | 1.000 UL
2718 | LT0
2719 | 0.00 0.38 0.68 C 3860 4536 Circle
2720 | LCw setrgbcolor
2721 | 0.400 UP
2722 | 3892 4536 CircleF
2723 | 0.500 UP
2724 | 1.000 UL
2725 | LT0
2726 | 0.00 0.38 0.68 C 3892 4536 Circle
2727 | LCw setrgbcolor
2728 | 0.400 UP
2729 | 3925 4536 CircleF
2730 | 0.500 UP
2731 | 1.000 UL
2732 | LT0
2733 | 0.00 0.38 0.68 C 3925 4536 Circle
2734 | LCw setrgbcolor
2735 | 0.400 UP
2736 | 3958 4536 CircleF
2737 | 0.500 UP
2738 | 1.000 UL
2739 | LT0
2740 | 0.00 0.38 0.68 C 3958 4536 Circle
2741 | LCw setrgbcolor
2742 | 0.400 UP
2743 | 3991 4536 CircleF
2744 | 0.500 UP
2745 | 1.000 UL
2746 | LT0
2747 | 0.00 0.38 0.68 C 3991 4536 Circle
2748 | LCw setrgbcolor
2749 | 0.400 UP
2750 | 4024 4536 CircleF
2751 | 0.500 UP
2752 | 1.000 UL
2753 | LT0
2754 | 0.00 0.38 0.68 C 4024 4536 Circle
2755 | LCw setrgbcolor
2756 | 0.400 UP
2757 | 4057 4536 CircleF
2758 | 0.500 UP
2759 | 1.000 UL
2760 | LT0
2761 | 0.00 0.38 0.68 C 4057 4536 Circle
2762 | LCw setrgbcolor
2763 | 0.400 UP
2764 | 4089 4536 CircleF
2765 | 0.500 UP
2766 | 1.000 UL
2767 | LT0
2768 | 0.00 0.38 0.68 C 4089 4536 Circle
2769 | LCw setrgbcolor
2770 | 0.400 UP
2771 | 4122 4536 CircleF
2772 | 0.500 UP
2773 | 1.000 UL
2774 | LT0
2775 | 0.00 0.38 0.68 C 4122 4536 Circle
2776 | LCw setrgbcolor
2777 | 0.400 UP
2778 | 4155 4536 CircleF
2779 | 0.500 UP
2780 | 1.000 UL
2781 | LT0
2782 | 0.00 0.38 0.68 C 4155 4536 Circle
2783 | LCw setrgbcolor
2784 | 0.400 UP
2785 | 4188 4536 CircleF
2786 | 0.500 UP
2787 | 1.000 UL
2788 | LT0
2789 | 0.00 0.38 0.68 C 4188 4536 Circle
2790 | LCw setrgbcolor
2791 | 0.400 UP
2792 | 4221 4536 CircleF
2793 | 0.500 UP
2794 | 1.000 UL
2795 | LT0
2796 | 0.00 0.38 0.68 C 4221 4536 Circle
2797 | LCw setrgbcolor
2798 | 0.400 UP
2799 | 4254 4536 CircleF
2800 | 0.500 UP
2801 | 1.000 UL
2802 | LT0
2803 | 0.00 0.38 0.68 C 4254 4536 Circle
2804 | LCw setrgbcolor
2805 | 0.400 UP
2806 | 4287 4536 CircleF
2807 | 0.500 UP
2808 | 1.000 UL
2809 | LT0
2810 | 0.00 0.38 0.68 C 4287 4536 Circle
2811 | LCw setrgbcolor
2812 | 0.400 UP
2813 | 4319 4536 CircleF
2814 | 0.500 UP
2815 | 1.000 UL
2816 | LT0
2817 | 0.00 0.38 0.68 C 4319 4536 Circle
2818 | LCw setrgbcolor
2819 | 0.400 UP
2820 | 4352 4536 CircleF
2821 | 0.500 UP
2822 | 1.000 UL
2823 | LT0
2824 | 0.00 0.38 0.68 C 4352 4536 Circle
2825 | LCw setrgbcolor
2826 | 0.400 UP
2827 | 4385 4536 CircleF
2828 | 0.500 UP
2829 | 1.000 UL
2830 | LT0
2831 | 0.00 0.38 0.68 C 4385 4536 Circle
2832 | LCw setrgbcolor
2833 | 0.400 UP
2834 | 4418 4536 CircleF
2835 | 0.500 UP
2836 | 1.000 UL
2837 | LT0
2838 | 0.00 0.38 0.68 C 4418 4536 Circle
2839 | LCw setrgbcolor
2840 | 0.400 UP
2841 | 4451 4536 CircleF
2842 | 0.500 UP
2843 | 1.000 UL
2844 | LT0
2845 | 0.00 0.38 0.68 C 4451 4536 Circle
2846 | LCw setrgbcolor
2847 | 0.400 UP
2848 | 4484 4536 CircleF
2849 | 0.500 UP
2850 | 1.000 UL
2851 | LT0
2852 | 0.00 0.38 0.68 C 4484 4536 Circle
2853 | LCw setrgbcolor
2854 | 0.400 UP
2855 | 4516 4536 CircleF
2856 | 0.500 UP
2857 | 1.000 UL
2858 | LT0
2859 | 0.00 0.38 0.68 C 4516 4536 Circle
2860 | LCw setrgbcolor
2861 | 0.400 UP
2862 | 4549 4536 CircleF
2863 | 0.500 UP
2864 | 1.000 UL
2865 | LT0
2866 | 0.00 0.38 0.68 C 4549 4536 Circle
2867 | LCw setrgbcolor
2868 | 0.400 UP
2869 | 4582 4536 CircleF
2870 | 0.500 UP
2871 | 1.000 UL
2872 | LT0
2873 | 0.00 0.38 0.68 C 4582 4536 Circle
2874 | LCw setrgbcolor
2875 | 0.400 UP
2876 | 4615 4536 CircleF
2877 | 0.500 UP
2878 | 1.000 UL
2879 | LT0
2880 | 0.00 0.38 0.68 C 4615 4536 Circle
2881 | LCw setrgbcolor
2882 | 0.400 UP
2883 | 4648 4536 CircleF
2884 | 0.500 UP
2885 | 1.000 UL
2886 | LT0
2887 | 0.00 0.38 0.68 C 4648 4536 Circle
2888 | LCw setrgbcolor
2889 | 0.400 UP
2890 | 4681 4536 CircleF
2891 | 0.500 UP
2892 | 1.000 UL
2893 | LT0
2894 | 0.00 0.38 0.68 C 4681 4536 Circle
2895 | LCw setrgbcolor
2896 | 0.400 UP
2897 | 4714 4536 CircleF
2898 | 0.500 UP
2899 | 1.000 UL
2900 | LT0
2901 | 0.00 0.38 0.68 C 4714 4536 Circle
2902 | LCw setrgbcolor
2903 | 0.400 UP
2904 | 4746 4536 CircleF
2905 | 0.500 UP
2906 | 1.000 UL
2907 | LT0
2908 | 0.00 0.38 0.68 C 4746 4536 Circle
2909 | LCw setrgbcolor
2910 | 0.400 UP
2911 | 4779 4536 CircleF
2912 | 0.500 UP
2913 | 1.000 UL
2914 | LT0
2915 | 0.00 0.38 0.68 C 4779 4536 Circle
2916 | LCw setrgbcolor
2917 | 0.400 UP
2918 | 4812 4536 CircleF
2919 | 0.500 UP
2920 | 1.000 UL
2921 | LT0
2922 | 0.00 0.38 0.68 C 4812 4536 Circle
2923 | LCw setrgbcolor
2924 | 0.400 UP
2925 | 4845 4536 CircleF
2926 | 0.500 UP
2927 | 1.000 UL
2928 | LT0
2929 | 0.00 0.38 0.68 C 4845 4536 Circle
2930 | LCw setrgbcolor
2931 | 0.400 UP
2932 | 4878 4536 CircleF
2933 | 0.500 UP
2934 | 1.000 UL
2935 | LT0
2936 | 0.00 0.38 0.68 C 4878 4536 Circle
2937 | LCw setrgbcolor
2938 | 0.400 UP
2939 | 4911 4536 CircleF
2940 | 0.500 UP
2941 | 1.000 UL
2942 | LT0
2943 | 0.00 0.38 0.68 C 4911 4536 Circle
2944 | LCw setrgbcolor
2945 | 0.400 UP
2946 | 4943 4536 CircleF
2947 | 0.500 UP
2948 | 1.000 UL
2949 | LT0
2950 | 0.00 0.38 0.68 C 4943 4536 Circle
2951 | LCw setrgbcolor
2952 | 0.400 UP
2953 | 4976 4536 CircleF
2954 | 0.500 UP
2955 | 1.000 UL
2956 | LT0
2957 | 0.00 0.38 0.68 C 4976 4536 Circle
2958 | LCw setrgbcolor
2959 | 0.400 UP
2960 | 5009 4536 CircleF
2961 | 0.500 UP
2962 | 1.000 UL
2963 | LT0
2964 | 0.00 0.38 0.68 C 5009 4536 Circle
2965 | LCw setrgbcolor
2966 | 0.400 UP
2967 | 5042 4536 CircleF
2968 | 0.500 UP
2969 | 1.000 UL
2970 | LT0
2971 | 0.00 0.38 0.68 C 5042 4536 Circle
2972 | LCw setrgbcolor
2973 | 0.400 UP
2974 | 5075 4536 CircleF
2975 | 0.500 UP
2976 | 1.000 UL
2977 | LT0
2978 | 0.00 0.38 0.68 C 5075 4536 Circle
2979 | LCw setrgbcolor
2980 | 0.400 UP
2981 | 5108 4536 CircleF
2982 | 0.500 UP
2983 | 1.000 UL
2984 | LT0
2985 | 0.00 0.38 0.68 C 5108 4536 Circle
2986 | LCw setrgbcolor
2987 | 0.400 UP
2988 | 5141 4536 CircleF
2989 | 0.500 UP
2990 | 1.000 UL
2991 | LT0
2992 | 0.00 0.38 0.68 C 5141 4536 Circle
2993 | LCw setrgbcolor
2994 | 0.400 UP
2995 | 5173 4536 CircleF
2996 | 0.500 UP
2997 | 1.000 UL
2998 | LT0
2999 | 0.00 0.38 0.68 C 5173 4536 Circle
3000 | LCw setrgbcolor
3001 | 0.400 UP
3002 | 5206 4536 CircleF
3003 | 0.500 UP
3004 | 1.000 UL
3005 | LT0
3006 | 0.00 0.38 0.68 C 5206 4536 Circle
3007 | LCw setrgbcolor
3008 | 0.400 UP
3009 | 5239 4536 CircleF
3010 | 0.500 UP
3011 | 1.000 UL
3012 | LT0
3013 | 0.00 0.38 0.68 C 5239 4536 Circle
3014 | LCw setrgbcolor
3015 | 0.400 UP
3016 | 5272 4536 CircleF
3017 | 0.500 UP
3018 | 1.000 UL
3019 | LT0
3020 | 0.00 0.38 0.68 C 5272 4536 Circle
3021 | LCw setrgbcolor
3022 | 0.400 UP
3023 | 5305 4536 CircleF
3024 | 0.500 UP
3025 | 1.000 UL
3026 | LT0
3027 | 0.00 0.38 0.68 C 5305 4536 Circle
3028 | LCw setrgbcolor
3029 | 0.400 UP
3030 | 5338 4536 CircleF
3031 | 0.500 UP
3032 | 1.000 UL
3033 | LT0
3034 | 0.00 0.38 0.68 C 5338 4536 Circle
3035 | LCw setrgbcolor
3036 | 0.400 UP
3037 | 5370 4536 CircleF
3038 | 0.500 UP
3039 | 1.000 UL
3040 | LT0
3041 | 0.00 0.38 0.68 C 5370 4536 Circle
3042 | LCw setrgbcolor
3043 | 0.400 UP
3044 | 5403 4536 CircleF
3045 | 0.500 UP
3046 | 1.000 UL
3047 | LT0
3048 | 0.00 0.38 0.68 C 5403 4536 Circle
3049 | LCw setrgbcolor
3050 | 0.400 UP
3051 | 5436 4536 CircleF
3052 | 0.500 UP
3053 | 1.000 UL
3054 | LT0
3055 | 0.00 0.38 0.68 C 5436 4536 Circle
3056 | LCw setrgbcolor
3057 | 0.400 UP
3058 | 5469 4536 CircleF
3059 | 0.500 UP
3060 | 1.000 UL
3061 | LT0
3062 | 0.00 0.38 0.68 C 5469 4536 Circle
3063 | LCw setrgbcolor
3064 | 0.400 UP
3065 | 5502 4536 CircleF
3066 | 0.500 UP
3067 | 1.000 UL
3068 | LT0
3069 | 0.00 0.38 0.68 C 5502 4536 Circle
3070 | LCw setrgbcolor
3071 | 0.400 UP
3072 | 5535 4536 CircleF
3073 | 0.500 UP
3074 | 1.000 UL
3075 | LT0
3076 | 0.00 0.38 0.68 C 5535 4536 Circle
3077 | LCw setrgbcolor
3078 | 0.400 UP
3079 | 5568 4536 CircleF
3080 | 0.500 UP
3081 | 1.000 UL
3082 | LT0
3083 | 0.00 0.38 0.68 C 5568 4536 Circle
3084 | LCw setrgbcolor
3085 | 0.400 UP
3086 | 5600 4536 CircleF
3087 | 0.500 UP
3088 | 1.000 UL
3089 | LT0
3090 | 0.00 0.38 0.68 C 5600 4536 Circle
3091 | LCw setrgbcolor
3092 | 0.400 UP
3093 | 5633 4536 CircleF
3094 | 0.500 UP
3095 | 1.000 UL
3096 | LT0
3097 | 0.00 0.38 0.68 C 5633 4536 Circle
3098 | LCw setrgbcolor
3099 | 0.400 UP
3100 | 5666 4536 CircleF
3101 | 0.500 UP
3102 | 1.000 UL
3103 | LT0
3104 | 0.00 0.38 0.68 C 5666 4536 Circle
3105 | LCw setrgbcolor
3106 | 0.400 UP
3107 | 5699 4536 CircleF
3108 | 0.500 UP
3109 | 1.000 UL
3110 | LT0
3111 | 0.00 0.38 0.68 C 5699 4536 Circle
3112 | LCw setrgbcolor
3113 | 0.400 UP
3114 | 5732 4536 CircleF
3115 | 0.500 UP
3116 | 1.000 UL
3117 | LT0
3118 | 0.00 0.38 0.68 C 5732 4536 Circle
3119 | LCw setrgbcolor
3120 | 0.400 UP
3121 | 5765 4536 CircleF
3122 | 0.500 UP
3123 | 1.000 UL
3124 | LT0
3125 | 0.00 0.38 0.68 C 5765 4536 Circle
3126 | LCw setrgbcolor
3127 | 0.400 UP
3128 | 5797 4536 CircleF
3129 | 0.500 UP
3130 | 1.000 UL
3131 | LT0
3132 | 0.00 0.38 0.68 C 5797 4536 Circle
3133 | LCw setrgbcolor
3134 | 0.400 UP
3135 | 5830 4536 CircleF
3136 | 0.500 UP
3137 | 1.000 UL
3138 | LT0
3139 | 0.00 0.38 0.68 C 5830 4536 Circle
3140 | LCw setrgbcolor
3141 | 0.400 UP
3142 | 5863 4536 CircleF
3143 | 0.500 UP
3144 | 1.000 UL
3145 | LT0
3146 | 0.00 0.38 0.68 C 5863 4536 Circle
3147 | LCw setrgbcolor
3148 | 0.400 UP
3149 | 5896 4536 CircleF
3150 | 0.500 UP
3151 | 1.000 UL
3152 | LT0
3153 | 0.00 0.38 0.68 C 5896 4536 Circle
3154 | LCw setrgbcolor
3155 | 0.400 UP
3156 | 5929 4536 CircleF
3157 | 0.500 UP
3158 | 1.000 UL
3159 | LT0
3160 | 0.00 0.38 0.68 C 5929 4536 Circle
3161 | LCw setrgbcolor
3162 | 0.400 UP
3163 | 5962 4536 CircleF
3164 | 0.500 UP
3165 | 1.000 UL
3166 | LT0
3167 | 0.00 0.38 0.68 C 5962 4536 Circle
3168 | LCw setrgbcolor
3169 | 0.400 UP
3170 | 5994 4536 CircleF
3171 | 0.500 UP
3172 | 1.000 UL
3173 | LT0
3174 | 0.00 0.38 0.68 C 5994 4536 Circle
3175 | LCw setrgbcolor
3176 | 0.400 UP
3177 | 6027 4536 CircleF
3178 | 0.500 UP
3179 | 1.000 UL
3180 | LT0
3181 | 0.00 0.38 0.68 C 6027 4536 Circle
3182 | LCw setrgbcolor
3183 | 0.400 UP
3184 | 6060 4536 CircleF
3185 | 0.500 UP
3186 | 1.000 UL
3187 | LT0
3188 | 0.00 0.38 0.68 C 6060 4536 Circle
3189 | LCw setrgbcolor
3190 | 0.400 UP
3191 | 6093 4536 CircleF
3192 | 0.500 UP
3193 | 1.000 UL
3194 | LT0
3195 | 0.00 0.38 0.68 C 6093 4536 Circle
3196 | LCw setrgbcolor
3197 | 0.400 UP
3198 | 6126 4536 CircleF
3199 | 0.500 UP
3200 | 1.000 UL
3201 | LT0
3202 | 0.00 0.38 0.68 C 6126 4536 Circle
3203 | LCw setrgbcolor
3204 | 0.400 UP
3205 | 6159 4536 CircleF
3206 | 0.500 UP
3207 | 1.000 UL
3208 | LT0
3209 | 0.00 0.38 0.68 C 6159 4536 Circle
3210 | LCw setrgbcolor
3211 | 0.400 UP
3212 | 6192 4536 CircleF
3213 | 0.500 UP
3214 | 1.000 UL
3215 | LT0
3216 | 0.00 0.38 0.68 C 6192 4536 Circle
3217 | LCw setrgbcolor
3218 | 0.400 UP
3219 | 6224 4536 CircleF
3220 | 0.500 UP
3221 | 1.000 UL
3222 | LT0
3223 | 0.00 0.38 0.68 C 6224 4536 Circle
3224 | LCw setrgbcolor
3225 | 0.400 UP
3226 | 6257 4536 CircleF
3227 | 0.500 UP
3228 | 1.000 UL
3229 | LT0
3230 | 0.00 0.38 0.68 C 6257 4536 Circle
3231 | LCw setrgbcolor
3232 | 0.400 UP
3233 | 6290 4536 CircleF
3234 | 0.500 UP
3235 | 1.000 UL
3236 | LT0
3237 | 0.00 0.38 0.68 C 6290 4536 Circle
3238 | LCw setrgbcolor
3239 | 0.400 UP
3240 | 6323 4536 CircleF
3241 | 0.500 UP
3242 | 1.000 UL
3243 | LT0
3244 | 0.00 0.38 0.68 C 6323 4536 Circle
3245 | LCw setrgbcolor
3246 | 0.400 UP
3247 | 6356 4536 CircleF
3248 | 0.500 UP
3249 | 1.000 UL
3250 | LT0
3251 | 0.00 0.38 0.68 C 6356 4536 Circle
3252 | LCw setrgbcolor
3253 | 0.400 UP
3254 | 6389 4536 CircleF
3255 | 0.500 UP
3256 | 1.000 UL
3257 | LT0
3258 | 0.00 0.38 0.68 C 6389 4536 Circle
3259 | LCw setrgbcolor
3260 | 0.400 UP
3261 | 6421 4536 CircleF
3262 | 0.500 UP
3263 | 1.000 UL
3264 | LT0
3265 | 0.00 0.38 0.68 C 6421 4536 Circle
3266 | LCw setrgbcolor
3267 | 0.400 UP
3268 | 6454 4536 CircleF
3269 | 0.500 UP
3270 | 1.000 UL
3271 | LT0
3272 | 0.00 0.38 0.68 C 6454 4536 Circle
3273 | LCw setrgbcolor
3274 | 0.400 UP
3275 | 6487 4536 CircleF
3276 | 0.500 UP
3277 | 1.000 UL
3278 | LT0
3279 | 0.00 0.38 0.68 C 6487 4536 Circle
3280 | LCw setrgbcolor
3281 | 0.400 UP
3282 | 6520 4536 CircleF
3283 | 0.500 UP
3284 | 1.000 UL
3285 | LT0
3286 | 0.00 0.38 0.68 C 6520 4536 Circle
3287 | LCw setrgbcolor
3288 | 0.400 UP
3289 | 6553 4536 CircleF
3290 | 0.500 UP
3291 | 1.000 UL
3292 | LT0
3293 | 0.00 0.38 0.68 C 6553 4536 Circle
3294 | LCw setrgbcolor
3295 | 0.400 UP
3296 | 6586 4536 CircleF
3297 | 0.500 UP
3298 | 1.000 UL
3299 | LT0
3300 | 0.00 0.38 0.68 C 6586 4536 Circle
3301 | LCw setrgbcolor
3302 | 0.400 UP
3303 | 6619 4536 CircleF
3304 | 0.500 UP
3305 | 1.000 UL
3306 | LT0
3307 | 0.00 0.38 0.68 C 6619 4536 Circle
3308 | LCw setrgbcolor
3309 | 0.400 UP
3310 | 6651 4536 CircleF
3311 | 0.500 UP
3312 | 1.000 UL
3313 | LT0
3314 | 0.00 0.38 0.68 C 6651 4536 Circle
3315 | LCw setrgbcolor
3316 | 0.400 UP
3317 | 6684 4536 CircleF
3318 | 0.500 UP
3319 | 1.000 UL
3320 | LT0
3321 | 0.00 0.38 0.68 C 6684 4536 Circle
3322 | LCw setrgbcolor
3323 | 0.400 UP
3324 | 6717 4536 CircleF
3325 | 0.500 UP
3326 | 1.000 UL
3327 | LT0
3328 | 0.00 0.38 0.68 C 6717 4536 Circle
3329 | LCw setrgbcolor
3330 | 0.400 UP
3331 | 6750 4536 CircleF
3332 | 0.500 UP
3333 | 1.000 UL
3334 | LT0
3335 | 0.00 0.38 0.68 C 6750 4536 Circle
3336 | LCw setrgbcolor
3337 | 0.400 UP
3338 | 6783 4536 CircleF
3339 | 0.500 UP
3340 | 1.000 UL
3341 | LT0
3342 | 0.00 0.38 0.68 C 6783 4536 Circle
3343 | LCw setrgbcolor
3344 | 0.400 UP
3345 | 6816 4536 CircleF
3346 | 0.500 UP
3347 | 1.000 UL
3348 | LT0
3349 | 0.00 0.38 0.68 C 6816 4536 Circle
3350 | LCw setrgbcolor
3351 | 0.400 UP
3352 | 6848 4536 CircleF
3353 | 0.500 UP
3354 | 1.000 UL
3355 | LT0
3356 | 0.00 0.38 0.68 C 6848 4536 Circle
3357 | LCw setrgbcolor
3358 | 0.400 UP
3359 | 6881 4536 CircleF
3360 | 0.500 UP
3361 | 1.000 UL
3362 | LT0
3363 | 0.00 0.38 0.68 C 6881 4536 Circle
3364 | LCw setrgbcolor
3365 | 0.400 UP
3366 | 6914 4536 CircleF
3367 | 0.500 UP
3368 | 1.000 UL
3369 | LT0
3370 | 0.00 0.38 0.68 C 6914 4536 Circle
3371 | % End plot #1
3372 | 1.000 UL
3373 | LTb
3374 | 378 4619 N
3375 | 0 -1819 V
3376 | 6569 0 V
3377 | 0 1819 V
3378 | -6569 0 V
3379 | Z stroke
3380 | 1.000 UP
3381 | 1.000 UL
3382 | LTb
3383 | stroke
3384 | grestore
3385 | end
3386 | showpage
3387 | %%Trailer
3388 | %%DocumentFonts: Verdana Helvetica
3389 | %%Pages: 1
3390 |
--------------------------------------------------------------------------------