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}]