{VERSION 4 0 "SUN SPARC SOLARIS" "4.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 1 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 1 }{CSTYLE "2D Comment" 2 18 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 } {PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Heading 1" 0 3 1 {CSTYLE "" -1 -1 "" 1 18 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }1 0 0 0 8 4 0 0 0 0 0 0 -1 0 }{PSTYLE "" 3 256 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 3 257 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }} {SECT 0 {PARA 256 "" 0 "" {TEXT -1 36 "Section 8.4 - The Runge-Kutta M ethod" }}{PARA 257 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 84 "Here is a procedure for using the Runge-Kutta method. It takes as input a function " }{XPPEDIT 18 0 "f(t,y);" "6#-%\"fG6$%\"tG%\"yG" } {TEXT -1 0 "" }{TEXT -1 19 ", an initial value " }{XPPEDIT 18 0 "y[0]; " "6#&%\"yG6#\"\"!" }{TEXT -1 0 "" }{TEXT -1 5 " for " }{XPPEDIT 18 0 "y;" "6#%\"yG" }{TEXT -1 0 "" }{TEXT -1 18 ", an initial time " } {XPPEDIT 18 0 "t[0];" "6#&%\"tG6#\"\"!" }{TEXT -1 0 "" }{TEXT -1 5 " ( so " }{XPPEDIT 18 0 "y(t[0]) = y[0];" "6#/-%\"yG6#&%\"tG6#\"\"!&F%6#F* " }{TEXT -1 0 "" }{TEXT -1 16 "), a final time " }{XPPEDIT 18 0 "t[1]; " "6#&%\"tG6#\"\"\"" }{TEXT -1 0 "" }{TEXT -1 14 ", an interval " } {XPPEDIT 18 0 "L;" "6#%\"LG" }{TEXT -1 0 "" }{TEXT -1 87 " for the dis tance between\npoints at which you want to know the results and a step size " }{XPPEDIT 18 0 "h;" "6#%\"hG" }{TEXT -1 0 "" }{TEXT -1 1 "." } }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 43 "runge_kutta_method := proc( f,y0,t0,t1,L,h);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 18 " n := (t1-t0) /h;" }}{PARA 0 "" 0 "" {XPPEDIT 18 0 "n;" "6#%\"nG" }{TEXT -1 0 "" } {TEXT -1 30 " is the total number of steps." }{TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 19 " m := round(L/h);" }}{PARA 0 "" 0 "" {TEXT -1 22 "The results should be " }{TEXT -1 14 "printed every " } {XPPEDIT 18 0 "m;" "6#%\"mG" }{TEXT -1 7 " steps." }}{PARA 0 "> " 0 " " {MPLTEXT 1 0 15 " y(t0) := y0;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 14 " t(0) := t0;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 21 " for i from 1 to n " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 8 " do" }}{PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 24 " t(i) := t0+i*h;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 35 " k1 := f(t(i-1),y(t(i-1)));" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 50 " k2 := f(t(i-1)+0.5*h,y(t(i-1))+0.5*h*k1 );" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 50 " k3 := f(t(i-1)+0.5*h ,y(t(i-1))+0.5*h*k2);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 38 " k 4 := f(t(i),y(t(i-1))+h*k3);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 52 " \+ y(t(i)):= y(t(i-1))+h*(k1+2*k2+2*k3+k4)/6; " }}{PARA 0 "> " 0 " " {MPLTEXT 1 0 66 " if type (i/m,integer)='true' then print(t( i),y(t(i))) fi;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 10 " od;" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 4 "end;" }}}{PARA 0 "" 0 "" {TEXT -1 50 "Let's try it on the function in Problem 1, p. 438." }{TEXT -1 0 " " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "f := (t,y) -> 2*y-1;" }} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 35 "runge_kutta_method(f,1,0,.4 ,.1,.1);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "runge_kutta_met hod(f,1,0,.4,.1,.05);" }}}{PARA 0 "" 0 "" {TEXT -1 27 "Here is the exa ct solution." }{TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 51 "sol := dsolv e(\{diff(y(t),t)=2*y(t)-1,y(0)=1\},y(t));" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 25 "Y := unapply(rhs(sol),t);" }}}{PARA 0 "" 0 "" {TEXT -1 66 "Here it is evaluated at the same points as the Runge Kutt a method." }{TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 " evalf(Y(.1));" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "evalf(Y(.2 )); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "evalf(Y(.3));" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "evalf(Y(.4));" }}}{PARA 0 " " 0 "" {TEXT -1 23 "The error is less than " }{XPPEDIT 18 0 "5*10^(-6) ;" "6#*&\"\"&\"\"\")\"#5,$\"\"'!\"\"F%" }{TEXT -1 27 " with a step siz e of .05. " }{MPLTEXT 1 0 1 " " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{MARK "19" 0 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 } {PAGENUMBERS 0 1 2 33 1 1 }