Posted to tcl by emiliano at Tue Mar 02 13:43:00 GMT 2010view pretty
--- calculus.tcl.orig 2010-03-02 10:26:56.000000000 -0300
+++ calculus.tcl 2010-03-02 10:41:43.000000000 -0300
@@ -305,7 +305,8 @@
#
proc ::math::calculus::eulerStep { t tstep xvec func } {
- set xderiv [uplevel 1 $func $t [list $xvec]]
+ set funq [uplevel 1 namespace which -command $func]
+ set xderiv [$funcq $t $xvec]
set result {}
foreach xv $xvec dx $xderiv {
set xnew [expr {$xv+$tstep*$dx}]
@@ -373,10 +374,10 @@
#
# Four steps:
# - k1 = tstep*func(t,x0)
- # - k2 = tstep*func(t+0.5*tstep,x0+0.5*k1)
- # - k3 = tstep*func(t+0.5*tstep,x0+0.5*k2)
- # - k4 = tstep*func(t+ tstep,x0+ k3)
- # - x1 = x0 + (k1+2*k2+2*k3+k4)/6
+ # - k2 = tstep*func(t+0.5*tstep,x0+0.5*tstep*k1)
+ # - k3 = tstep*func(t+0.5*tstep,x0+0.5*tstep*k2)
+ # - k4 = tstep*func(t+ tstep,x0+ tstep*k3)
+ # - x1 = x0 + tstep*(k1+2*k2+2*k3+k4)/6
#
set tstep2 [expr {$tstep/2.0}]
set tstep6 [expr {$tstep/6.0}]