To follow up from my comments, for which I can't easily find any references.
If you have a Linux box, a Mac, or a VM of either, you can try a Lorenz system simulation using GNU bc.
define void output (x, y, z, t) { print x, " ", y, " ", z, " ", t, " _ _ _ 0.0\n" }
define horner (n, j[], h) {
auto i, s
for (i = n; i > -1; i--) s = s * h + j[i]
return s
}
define mul (u[], v[], k) {
auto j, p
for (j = 0; j < k + 1; j++) p += u[j] * v[k - j]
return p
}
scale=15; n=12; h=0.01; steps=10000; x=-15.8; y=-18.48; z=35.64; sigma=10; rho=28; beta=8.0/3.0
output(x, y, z, 0.0)
for (step = 1; step < steps + 1; step++) {
x[0] = x; y[0] = y; z[0] = z
for (k = 0; k < n; k++) {
x[k + 1] = sigma * (y[k] - x[k]) / (k + 1)
y[k + 1] = (rho * x[k] - mul(x[], z[], k) - y[k]) / (k + 1)
z[k + 1] = (mul(x[], y[], k) - beta * z[k]) / (k + 1)
}
x = horner(n, x[], h); y = horner(n, y[], h); z = horner(n, z[], h)
output(x, y, z, h * step)
}
quit
Copy this to a file called lorenz.bc, then run:
BC_LINE_LENGTH=0 /usr/bin/bc lorenz.bc
The parameter "n" is the order of the Taylor series, experiment with it!
Note that all derivatives are calculated, not approximated - step size is not used at all in the derivative calculations (the "k" loop), only the final "integration" step (like an Euler step, but using Horner's method).
The "scale" parameter determines precision (in decimal places), and like "n" can be set to arbitrary values.