{VERSION 4 0 "IBM INTEL LINUX22" "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 Output" 2 20 "" 0 1 0 0 255 1 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 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Text Output" -1 2 1 {CSTYLE "" -1 -1 "Courier" 1 10 0 0 255 1 0 0 0 0 0 1 3 0 3 0 }1 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 0 }1 0 0 0 8 4 0 0 0 0 0 0 -1 0 } {PSTYLE "Warning" 2 7 1 {CSTYLE "" -1 -1 "" 0 1 0 0 255 1 0 0 0 0 0 0 1 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Maple Output" 0 11 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 3 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 11 12 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }1 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Title" 0 18 1 {CSTYLE "" -1 -1 "" 1 18 0 0 0 0 0 1 1 0 0 0 0 0 0 0 }3 0 0 -1 12 12 0 0 0 0 0 0 19 0 }} {SECT 0 {EXCHG {PARA 18 "" 0 "" {TEXT -1 18 "Multigrid Methods " }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "with(plots):" }}{PARA 7 "" 1 "" {TEXT -1 50 "Warning, the name changecoords has been redefined\n" }}}{SECT 0 {PARA 3 "" 0 " " {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "n := 8;" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"nG\"\")" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "b := array(0..n,[seq(0, i=0..n)]);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%\"bG-%&ARRAYG6$7#;\"\"!\"\")7+/6#F*F*/6#\"\"\"F* /6#\"\"#F*/6#\"\"$F*/6#\"\"%F*/6#\"\"&F*/6#\"\"'F*/6#\"\"(F*/6#F+F*" } }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 42 "Define a sine mode (for initial \+ solutions)" }{MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 218 "s inemode := proc(k::posint, n::posint)\n# returns a list x of initial s olution\n# sine mode with wave number k is taken as the initial soluti on\n return array(0..n, [evalf( seq( sin((i)*k*Pi/n), i=0..n ) )] ); \nend proc;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%)sinemodeGR6$'%\"kG%' posintG'%\"nGF)6\"F,F,O-%&arrayG6$;\"\"!9%7#-%&evalfG6#-%$seqG6$-%$sin G6#*&*(%\"iG\"\"\"9$FA%#PiGFAFAF3!\"\"/F@F1F,F,F," }}}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 19 "x := sinemode(1,n);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%\"xG-%&ARRAYG6$7#;\"\"!\"\")7+/6#F*$F*F*/6#\"\"\"$\"+ DV$o#Q!#5/6#\"\"#$\"+5y1rqF5/6#\"\"$$\"+D`zQ#*F5/6#\"\"%$F2F*/6#\"\"&F >/6#\"\"'F9/6#\"\"(F3/6#F+F/" }}}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 50 "Gauss-Seidel Relaxation for the 1D Poisson problem" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 83 "Define the Gauss-Seidel relaxation (linewise comp utation of the new approximation):" }{MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 152 "gseidel := proc(x::array,b::array,n::posint)\n \+ local i,j;\n for i from 1 to n-1 do\n x[i] := ( b[i]/n^2 - x[ i-1] - x[i+1])/2;\n end do;\nend proc;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%(gseidelGR6%'%\"xG%&arrayG'%\"bGF)'%\"nG%'posintG6$%\"iG%\"jG6 \"F2?(8$\"\"\"F5,&9&F5F5!\"\"%%trueG>&9$6#F4,(*&&9%F=F5*$)F7\"\"#F5F8# F5FD*&#F5FDF5&F<6#,&F4F5F5F8F5F8*&#F5FDF5&F<6#,&F4F5F5F5F5F8F2F2F2" }} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 233 "residual := proc(x::array, b::array, n::posint)\n local r,i;\n r := array(0..n);\n r[0] := 0;\n for i from 1 to n-1 do\n r[i] := eval( b[i] - ( -x[i-1] + 2*x[i] - x[i+1])*n^2 );\n end do;\n r[n] := 0;\n return r;\nend proc;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%)residualGR6%'%\"xG%&array G'%\"bGF)'%\"nG%'posintG6$%\"rG%\"iG6\"F2C'>8$-F)6#;\"\"!9&>&F56#F9F9? (8%\"\"\"F@,&F:F@F@!\"\"%%trueG>&F56#F?-%%evalG6#,&&9%FFF@*&,(&9$6#,&F ?F@F@FBFB*&\"\"#F@&FPFFF@F@&FP6#,&F?F@F@F@FBF@)F:FTF@FB>&F56#F:F9OF5F2 F2F2" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 17 "Multigrid V-Cycle" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 24 "Restriction by injection" } {MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 163 "restriction := proc(r::array,n::numeric)\n local rr,i;\n rr := array(0..n/2);\n \+ for i from 0 to n/2 do\n rr[i] := r[2*i];\n end do;\n retur n rr;\nend proc;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%,restrictionGR6$ '%\"rG%&arrayG'%\"nG%(numericG6$%#rrG%\"iG6\"F0C%>8$-F)6#;\"\"!,$9%#\" \"\"\"\"#?(8%F7F;F8%%trueG>&F36#F>&9$6#,$F>F " 0 "" {MPLTEXT 1 0 315 "interpolate := proc(e::array, n::p osint)\n # n number of unknowns of the fine grid!\n local ei, i;\n ei := array(0..n, [seq(0,i=0..n)]);\n for i from 0 by 2 to n do\n ei[i] := e[i/2]; \n end do;\n for i from 1 by 2 to n-1 do\n \+ ei[i] := ( e[(i-1)/2] + e[(i+1)/2] )/2;\n end do;\n return ei ;\nend proc;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%,interpolateGR6$'%\" eG%&arrayG'%\"nG%'posintG6$%#eiG%\"iG6\"F0C&>8$-F)6$;\"\"!9%7#-%$seqG6 $F7/8%F6?(F>F7\"\"#F8%%trueG>&F36#F>&9$6#,$F>#\"\"\"F@?(F>FJF@,&F8FJFJ !\"\"FA>FC,&&FF6#,&F>FI#FJF@FMFI*&FIFJ&FF6#,&F>FIFIFJFJFJOF3F0F0F0" }} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 755 "vcycle := proc(x::array, b ::array, n::numeric)\n # remove comment before \"option trace\" to g et single step mode\n # option trace;\n local i,r,rr,e,ei; \n # \+ pre-smoothing\n for i from 1 to 2 do gseidel(x,b,n); end do;\n # o n the coarsest grid, pre-smoothing will be everything that's needed:\n if n <= 2 then return x; end if;\n # compute and restrict the res idual\n r := residual(x,b,n);\n rr := restriction(r,n);\n # solv e coarse grid system\n e := array(0..n/2, [seq(0, j=0..n/2)]);\n v cycle(e,rr,n/2);\n # interpolate and correct solution\n ei := inte rpolate(e,n);\n for i from 0 to n do\n x[i] := x[i] + ei[i];\n \+ end do;\n # post-smoothing\n for i from 1 to 2 do gseidel(x,b,n) ; end do;\n # return result\n return x;\nend proc;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%'vcycleGR6%'%\"xG%&arrayG'%\"bGF)'%\"nG%(numeric G6'%\"iG%\"rG%#rrG%\"eG%#eiG6\"F5C,?(8$\"\"\"F9\"\"#%%trueG-%(gseidelG 6%9$9%9&@$1FAF:OF?>8%-%)residualGF>>8&-%,restrictionG6$FFFA>8'-F)6$;\" \"!,$FA#F9F:7#-%$seqG6$FS/%\"jGFR-F$6%FOFJFT>8(-%,interpolateG6$FOFA?( F8FSF9FAF;>&F?6#F8,&F_oF9&FinF`oF9?(F8F9F9F:F;F " 0 "" {MPLTEXT 1 0 8 "eval(x);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#-%&ARRAYG6$7#;\"\"!\"\")7+/6#F($F(F(/6#\"\"\"$\"+DV$o#Q !#5/6#\"\"#$\"+5y1rqF3/6#\"\"$$\"+D`zQ#*F3/6#\"\"%$F0F(/6#\"\"&F " 0 "" {MPLTEXT 1 0 23 "v cycle(x,b,n): eval(x);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#-%&ARRAYG6$7 #;\"\"!\"\")7+/6#F($F(F(/6#\"\"\"$!+6f()*R#!#6/6#\"\"#$!+M\\JfDF3/6#\" \"$$\"+Hfp9QF3/6#\"\"%$\"+Yc2#Q$F3/6#\"\"&$!*3.sx$F3/6#\"\"'$!+Ng)zn%! #7/6#\"\"($\"+=I**QBFM/6#F)F-" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "vcycle(x,b,n): eval(x);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#-%&AR RAYG6$7#;\"\"!\"\")7+/6#F($F(F(/6#\"\"\"$!+IKA\\V!#7/6#\"\"#$!++YaebF3 /6#\"\"$$\"+US\\V]F3/6#\"\"%$\"+GP?.CF3/6#\"\"&$!+gZ$o^%!#8/6#\"\"'$!+ gX<\"\\\"FH/6#\"\"($\"++G(eX(!#9/6#F)F-" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}}{MARK "0 1 0" 8 }{VIEWOPTS 1 1 0 3 2 1804 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }