{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 19 "Relaxation Methods " }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 33 "with(LinearAlgebra):\nwith(plots):" }}{PARA 7 "" 1 " " {TEXT -1 50 "Warning, the name changecoords has been redefined\n" }} }{SECT 0 {PARA 3 "" 0 "" {TEXT -1 19 "1D Poisson Equation" }}{PARA 0 " " 0 "" {TEXT -1 42 " Number of unknowns: n+2 for n inner nodes" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "n := 8;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"nG\"\")" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 20 "\nV ector of unknowns:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 29 "unkn := [seq( u[i], i=1..n)];\n" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%%unknG7*&%\"uG6 #\"\"\"&F'6#\"\"#&F'6#\"\"$&F'6#\"\"%&F'6#\"\"&&F'6#\"\"'&F'6#\"\"(&F' 6#\"\")" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 52 "We can one linear equa tion for each of the unknowns:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 67 "s le := [u[1]=0, seq( u[i]-(u[i-1]+u[i+1])/2= 0, i=2..n-1), u[n]=0];" }} {PARA 12 "" 1 "" {XPPMATH 20 "6#>%$sleG7*/&%\"uG6#\"\"\"\"\"!/,(&F(6# \"\"#F**&#F*F0F*F'F*!\"\"*&#F*F0F*&F(6#\"\"$F*F3F+/,(F6F**&#F*F0F*F.F* F3*&#F*F0F*&F(6#\"\"%F*F3F+/,(F?F**&#F*F0F*F6F*F3*&#F*F0F*&F(6#\"\"&F* F3F+/,(FHF**&#F*F0F*F?F*F3*&#F*F0F*&F(6#\"\"'F*F3F+/,(FQF**&#F*F0F*FHF *F3*&#F*F0F*&F(6#\"\"(F*F3F+/,(FZF**&#F*F0F*FQF*F3*&#F*F0F*&F(6#\"\")F *F3F+/F]oF+" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 19 "Using the function " }{TEXT 0 14 "GenerateMatrix" }{TEXT -1 17 " (defined in the " } {TEXT 0 13 "LinearAlgebra" }{TEXT -1 97 " package) we can generate the system matrix and the right hand side from the system of equations:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "A,b := GenerateMatrix(sle, unkn); \n" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>6$%\"AG%\"bG6$-%'RTABLEG6$\"*O& >n8-%'MATRIXG6#7*7*\"\"\"\"\"!F2F2F2F2F2F27*#!\"\"\"\"#F1F4F2F2F2F2F27 *F2F4F1F4F2F2F2F27*F2F2F4F1F4F2F2F27*F2F2F2F4F1F4F2F27*F2F2F2F2F4F1F4F 27*F2F2F2F2F2F4F1F47*F2F2F2F2F2F2F2F1-F)6$\"*?'Gn8-F-6#7*7#F2FCFCFCFCF CFCFC" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 47 "Note that the zero funct ion solves our problem:" }{MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "z := Vector(n,0);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6# >%\"zG-%'RTABLEG6$\"*o(4p8-%'MATRIXG6#7*7#\"\"!F-F-F-F-F-F-F-" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "Equal(A.z, b);" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#%%trueG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 17 "Jacobi-Relaxation" }} {EXCHG {PARA 0 "" 0 "" {TEXT -1 77 "Define the jacobi relaxation (line wise computation of the new approximation):" }{MPLTEXT 1 0 0 "" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 272 "jacobi := proc(A::Matrix, b::Vecto r,x::Vector,n::posint)\n local i,j,xnew;\n xnew := Vector(x);\n \+ for i from 1 to n do\n xnew[i] := ( b[i] - add(A[i,j]*x[j], j=1.. i-1) \n - add(A[i,j]*x[j], j=i+1..n) )/A[i,i]; \n end do;\nreturn xnew;\nend proc;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%'jacobiGR6&'%\"AG%'MatrixG'%\"bG%'VectorG'%\"xGF,'%\"nG%'posintG6 %%\"iG%\"jG%%xnewG6\"F6C%>8&-F,6#9&?(8$\"\"\"F?9'%%trueG>&F96#F>*&,(&9 %FDF?-%$addG6$*&&9$6$F>8%F?&F<6#FPF?/FP;F?,&F>F?F?!\"\"FV-FJ6$FL/FP;,& F>F?F?F?F@FVF?&FN6$F>F>FVOF9F6F6F6" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 43 "Define a sine mode as the initial solution:" }{MPLTEXT 1 0 0 " " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 220 "sinemode := proc(k::posint, n: :posint)\n# returns a list x of initial solution\n# sine mode with wav e number k is taken as the initial solution\n return Vector( [evalf( seq( sin((i-1)*k*Pi/(n-1)), i=1..n ) )] );\nend proc;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%)sinemodeGR6$'%\"kG%'posintG'%\"nGF)6\"F,F,O-%'V ectorG6#7#-%&evalfG6#-%$seqG6$-%$sinG6#*&*(,&%\"iG\"\"\"F?!\"\"F?9$F?% #PiGF?F?,&9%F?F?F@F@/F>;F?FDF,F,F," }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 120 "Prepare a plot ofthe error norms (note that the approximation \+ are equal to the error, beacause the exact solution is 0):" }{MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 279 "jacobiplot := proc(A::M atrix, b::Vector, x0::Vector,n::posint,iter::posint)\n local norms,x ,i;\n x := Vector(x0);\n norms[0] := Norm(x);\n for i from 1 to \+ iter do\n x := jacobi(A,b,x,n);\n norms[i] := Norm(x);\n e nd do;\n return [seq(norms[i],i=0..iter)];\nend proc;" }}{PARA 12 " " 1 "" {XPPMATH 20 "6#>%+jacobiplotGR6''%\"AG%'MatrixG'%\"bG%'VectorG' %#x0GF,'%\"nG%'posintG'%%iterGF16%%&normsG%\"xG%\"iG6\"F8C&>8%-F,6#9&> &8$6#\"\"!-_%.LinearAlgebraG%%NormG6#F;?(8&\"\"\"FK9(%%trueGC$>F;-%'ja cobiG6&9$9%F;9'>&FA6#FJFDO7#-%$seqG6$FW/FJ;FCFLF8F8F8" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "iter := 50;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%%iterG\"#]" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 29 "er ror plot for sine mode k=1:" }{MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "x0 := sinemode(1,n);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#x0G-%'RTABLEG6$\"*'>Z*Q\"-%'MATRIXG6#7*7#$\"\"!F/7#$\"+$RP)QV!#5 7#$\"+D[J=yF37#$\"+B\"z#\\(*F3F7F4F0F-" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 54 "errors := jacobiplot(A,b,x0,n,iter):\nlistplot(errors );" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 45 "error plots for sine modes \+ k=1, k=3, and k=5:" }{MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 256 "display( listplot( jacobiplot(A,b,sinemode(1,n),n,iter), color= red, legend=\"k=1\" ),\n listplot( jacobiplot(A,b,sinemode(3,n ),n,iter), color=green, legend=\"k=3\" ),\n listplot( jacobipl ot(A,b,sinemode(5,n),n,iter), color=blue, legend=\"k=5\" ) );" }}}} {SECT 0 {PARA 3 "" 0 "" {TEXT -1 23 "Gauss-Seidel Relaxation" }} {EXCHG {PARA 0 "" 0 "" {TEXT -1 83 "Define the Gauss-Seidel relaxation (linewise computation of the new approximation):" }{MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 237 "gseidel := proc(A::Matrix, b::Ve ctor,x::Vector,n::posint)\n local i,j;\n for i from 1 to n do\n \+ x[i] := ( b[i] - add(A[i,j]*x[j], j=1..i-1) \n \+ - add(A[i,j]*x[j], j=i+1..n) )/A[i,i];\n end do;\nreturn x;\nend pro c;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%(gseidelGR6&'%\"AG%'MatrixG'% \"bG%'VectorG'%\"xGF,'%\"nG%'posintG6$%\"iG%\"jG6\"F5C$?(8$\"\"\"F99'% %trueG>&9&6#F8*&,(&9%F?F9-%$addG6$*&&9$6$F88%F9&F>6#FKF9/FK;F9,&F8F9F9 !\"\"FQ-FE6$FG/FK;,&F8F9F9F9F:FQF9&FI6$F8F8FQOF>F5F5F5" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 71 "Prepare a plot of the error norms (depen ding on number of iterations):" }{MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 " " {MPLTEXT 1 0 281 "gseidelplot := proc(A::Matrix, b::Vector, x0::Vect or,n::posint,iter::posint)\n local norms,x,i;\n x := Vector(x0);\n norms[0] := Norm(x);\n for i from 1 to iter do\n x := gseide l(A,b,x,n);\n norms[i] := Norm(x);\n end do;\n return [seq(no rms[i],i=0..iter)];\nend proc;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%,g seidelplotGR6''%\"AG%'MatrixG'%\"bG%'VectorG'%#x0GF,'%\"nG%'posintG'%% iterGF16%%&normsG%\"xG%\"iG6\"F8C&>8%-F,6#9&>&8$6#\"\"!-_%.LinearAlgeb raG%%NormG6#F;?(8&\"\"\"FK9(%%trueGC$>F;-%(gseidelG6&9$9%F;9'>&FA6#FJF DO7#-%$seqG6$FW/FJ;FCFLF8F8F8" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "iter := 50;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%%iterG\"#]" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 29 "error plot for sine mode k=1:" } {MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 55 "errors := gseid elplot(A,b,x0,n,iter):\nlistplot(errors);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 45 "error plots for sine modes k=1, k=3, and k=5:" }{MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 259 "display( listplot( gsei delplot(A,b,sinemode(1,n),n,iter), color=red, legend=\"k=1\" ),\n \+ listplot( gseidelplot(A,b,sinemode(3,n),n,iter), color=green, lege nd=\"k=3\" ),\n listplot( gseidelplot(A,b,sinemode(5,n),n,iter ), color=blue, legend=\"k=5\" ) );" }}}{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 }{RTABLE_HANDLES 136719536 136728620 136909768 138947196 }{RTABLE M6R0 I6RTABLE_SAVE/136719536X,%)anythingG6"6"][[[[[p[o")")"""#!""""#""!F+F+F+F+F+F+F 'F(F+F+F+F+F+F+F(F'F(F+F+F+F+F+F+F(F'F(F+F+F+F+F+F+F(F'F(F+F+F+F+F+F+F(F'F(F+F+ F+F+F+F+F(F'F+F+F+F+F+F+F+F(F'F& } {RTABLE M6R0 I6RTABLE_SAVE/136728620X*%)anythingG6"6"\[[[[[t)")""!F'F'F'F'F'F'F'F& } {RTABLE M6R0 I6RTABLE_SAVE/136909768X*%)anythingG6"6"\[[[[[t)")""!F'F'F'F'F'F'F'F& } {RTABLE M6R0 I6RTABLE_SAVE/138947196X*%)anythingG6"6"\[[[[[t)")$""!F($"+$RP)QV!#5$"+D[J=yF+$ "+B"z#\(*F+F.F,F)F'F& }