{VERSION 2 3 "IBM INTEL NT" "2.3" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 }{CSTYLE "" -1 256 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 257 "" 0 1 188 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 258 "" 0 1 164 0 62 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 259 "" 0 1 114 97 110 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 260 "" 0 1 114 97 110 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 261 "" 0 1 141 0 100 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 262 "" 0 1 105 109 97 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 263 "" 0 1 144 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 264 "" 0 1 32 32 32 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 265 "" 0 1 32 108 111 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 266 "" 0 1 0 0 22 0 0 1 0 0 0 0 0 0 0 } {CSTYLE "" -1 267 "" 0 1 0 0 22 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 268 "" 0 1 144 0 238 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 269 "" 0 1 44 32 208 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 270 "" 0 1 0 0 22 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 271 "" 0 1 109 101 44 0 0 1 0 0 0 0 0 0 0 } {CSTYLE "" -1 272 "" 0 1 139 0 176 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 273 "" 0 1 10 1 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 274 "" 0 1 142 0 20 0 0 1 0 0 0 0 0 0 0 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "" 0 1 2 0 66 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }} {SECT 0 {EXCHG {PARA 0 "" 0 "" {TEXT -1 72 "This worksheet implements \+ the integration package used in Chapter 15 of " }{TEXT 256 38 "Introdu ction to Scientific Programming" }{TEXT -1 22 " by Joseph L. Zachary. " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 24 "Creat e an empty package." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "integration := table();" }}}{EXCHG {PARA 0 "" 0 " " {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 68 "This animates how the r ectangular method converges as it integrages " }{TEXT 257 10 "integran d " }{TEXT -1 8 "between " }{TEXT 258 3 "lo " }{TEXT -1 4 "and " } {TEXT 259 2 "hi" }{TEXT -1 14 ". It creates " }{TEXT 260 8 "nframes \+ " }{TEXT -1 110 "frames. In the first there are two rectangles, and t he number of rectangles doubles in each subsequent frame." }}{PARA 0 " " 0 "" {TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 68 "integration[ animateRectangular] := proc (integrand, lo, hi, nframes)" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 14 " local frame," }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 13 " rect;" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 32 "This creates a plot showing how " }{TEXT 261 5 "func \+ " }{TEXT -1 60 "can be divided into rectangles. Each rectangle is of \+ width " }{TEXT 262 4 "step" }{TEXT -1 12 ", there are " }{TEXT 263 6 " steps " }{TEXT -1 48 "rectangles, and the range of interest goes from \+ " }{TEXT 264 3 "lo " }{TEXT -1 3 "to " }{TEXT 265 2 "hi" }{TEXT -1 1 " ." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 41 " rect := proc (func, step, steps, lo, hi)" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 23 " local n, x, onerect;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 99 " onerect := ( h, n, f, lo) -> ([lo+(n-1)*h, 0], [lo+(n-1)*h, f(lo + n*h)], [lo+n*h, \+ f(lo + n*h)]);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 17 " plot(\{func(x)," }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 76 " [seq(onerect(step, n, func, lo), n=1..steps) , [lo+steps*step, 0]]\}," }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 18 " \+ x=lo..hi);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 5 " end;" }}{PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 71 " plots[d isplay]([seq(rect(integrand, (hi-lo)/2^frame, 2^frame, lo, hi)," }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 35 " frame=1..nframes)], " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 32 " insequence=true ," }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 51 " title=`Rectang ular Approximation`);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 4 "end;" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 68 "Th is animates how the trapezoidal method converges as it integrages " } {TEXT 266 10 "integrand " }{TEXT -1 8 "between " }{TEXT 267 3 "lo " } {TEXT -1 4 "and " }{TEXT 268 2 "hi" }{TEXT -1 14 ". It creates " } {TEXT 269 8 "nframes " }{TEXT -1 110 "frames. In the first there are \+ two trapezoids, and the number of rectangles doubles in each subsequen t frame." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 68 "integration[animateTrapezoidal] := proc (integrand, l o, hi, nframes)" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 14 " local frame," }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 13 " trap;" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 32 "This creates a plot showi ng how " }{TEXT 270 5 "func " }{TEXT -1 60 "can be divided into trapez oids. Each trapezoid is of width " }{TEXT 271 4 "step" }{TEXT -1 12 " , there are " }{TEXT 272 6 "steps " }{TEXT -1 48 "trapezoids, and the \+ range of interest goes from " }{TEXT 273 3 "lo " }{TEXT -1 3 "to " } {TEXT 274 2 "hi" }{TEXT -1 1 "." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 42 " trap := proc (func, step, steps, \+ lo, hi)" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 24 " local n, x, onetrap;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 104 " onetrap := (h, n, f, lo) -> ([lo+(n-1)*h, 0], [lo+(n-1)*h, f(lo + (n-1)*h)], [lo +n*h, f(lo + n*h)]);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 18 " plot(\{func(x)," }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 77 " [seq(onetrap(step, n, func, lo), n=1..steps ), [lo+steps*step, 0]]\}," }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 19 " \+ x=lo..hi);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 8 " end;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 72 " plots[display]([seq(trap(integrand, (hi-lo)/2^frame, 2^frame, lo , hi)," }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 36 " frame=1. .nframes)]," }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 33 " ins equence=true," }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 53 " t itle= `Trapezoidal Approximation`);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 4 "end;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{MARK "0 4 0" 23 }{VIEWOPTS 1 1 0 1 1 1803 }