{VERSION 3 0 "IBM INTEL NT" "3.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 }{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 -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 0 0 0 8 4 0 0 0 0 0 0 -1 0 }{PSTYLE "Heading 2" 3 4 1 {CSTYLE "" -1 -1 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 8 2 0 0 0 0 0 0 -1 0 }} {SECT 0 {EXCHG {PARA 3 "" 0 "" {TEXT -1 13 "\334bungsblatt 9" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 57 "Abgabe 20.01.1999, Martin Klossek, Matrikelnummer 1729843" }}}{EXCHG {PARA 4 "" 0 "" {TEXT -1 0 "" }} {PARA 4 "" 0 "" {TEXT -1 25 "9.1 Differenzenverfahren " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 551 "Zur n \344herungsweisen Berechnung der gegebenen Randwertaufgabe nach dem Di fferenzenverfahren habe ich die Funktion einzeldiff geschrieben, die m it verschiedenen Parametern beeinflu\337t werden kann. So sind a, alph a, b und beta f\374r die Startwerte des betrachteten Intervalls zust \344ndig. N ist die Anzahl der Intervallschritte und roh ist f\374r di e Erzeugung der Startwerte zust\344ndig. tmax schlie\337lich gibt die \+ maximale Anzahl der Iterationen an, die das Verfahren durchf\374hren k ann, erseidenn es bricht vorher durch das \334berschreiten der gegeben en Schranke ab." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 1334 "restart:\nwith (linalg):\n\neinzeldiff := pr oc (a::numeric, alpha::numeric, b::numeric, beta::numeric,N::numeric,r oh::numeric,tmax::numeric) \n local u, i, j, t, h, z, diffmax;\n\n \+ # Speicher f\374r die gewonnenen Werte anlegen\n u := array (1..tmax ,1..N+1);\n\n # Bestimmen der Anfangsn\344herung u(0) \n for j from 1 to tmax do \n u[j,1] := alpha;\n u[j,N+1] := beta;\n \+ od;\n\n h := (b-a) / N;\n\n for j from 1 to N-1 do\n z := (a+ j*h - a) / (b-a);\n u[1,j+1] := evalf(alpha + (beta-alpha)*z + ro h*z*(1-z));\n od:\n\n # Iteratives Bestimmen der L\366sung bis Abbr uchbedingung eintritt\n t := 2; diffmax := 1;\n while (t <= tmax) and (diffmax>=10^(-5)) do\n\n # n\344chsten Iterationsschritt ber echnen\n for j from 1 to N-1 do\n u[t,j+1] := evalf(1/2*( u[t-1,j+2] + u[t,j] - h^2*3/2* (u[t-1,j+1]^2) ));\n od:\n\n \+ # Supremumsnorm der Differenz zweier benachbarter N\344herungen berech nen\n diffmax := 0;\n for i from 1 to N+1 do\n if ab s(u[t,i]-u[t-1,i]) > diffmax then\n diffmax := abs(u[t,i]-u [t-1,i]); \n fi;\n od;\n\n # Protokollausgabe\n \+ if (t mod 10 = 0) or (t+1 > tmax) or (diffmax<10^(-5)) then\n \+ printf (\"t=%3d ||u(%3d)-u(%3d)||=%15.10f \\n\",t,t,t-1,diffmax);\n \+ fi;\n\n # Zum n\344chsten Iterationsschritt gehen\n t := t +1;\n od:\n\n u;\n\nend;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 73 "Hier die konkrete Definition der Sta rtwerte und ein Lauf des Algorithmus:" }}{PARA 0 "" 0 "" {TEXT -1 0 " " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 128 "a := 0: alpha := 4: \+ b := 1: beta := 1:\nN := 10: roh := 0: tmax := 100:\nu := einzeldif f ( a, alpha, b, beta, N, roh, tmax ):" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 150 "Im array u (mit Abmessun gen 1..tmax, 1..N) sind alle Iterationsschritte festgehalten. Im folge nden Plot wird die erste und letzte N\344herung ausgegeben." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 141 " p := plot( [seq( [a+(j-1)*(b-a)/N,u[1,j]], j=1..N+1)] ):\np91 := plot( [seq( [a+(j-1)*(b-a)/N,u[59,j]], j=1..N+1)] ):\nplots[display]([p,p91 ]);" }}}{EXCHG {PARA 4 "" 0 "" {TEXT -1 0 "" }}{PARA 4 "" 0 "" {TEXT -1 24 "9.2 Iterationsverfahren " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 330 "Analog zu Aufgabe 9.1 wird hier die n\344herungsweise Berechnung der gegebenen Randwertaufgabe vorgenomme n. Die Besetzung der Parameter ist dabei identisch, auch die Startwert e werden genauso erzeugt. Die eigentliche Berechnung der itertierten N \344herung erfolgt aber \374ber das Iterationsverfahren mit dem L\366s en eines Gleichungssystems." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1956 "iterat := proc (a::numeric , alpha::numeric, b::numeric, beta::numeric,N::numeric,roh::numeric,tm ax::numeric)\n local u, h, i, j, z, t, g, A, u_vec, u_res, diffmax; \n\n # Speicher f\374r die gewonnenen Werte anlegen\n u := array (0 ..tmax, 0..N);\n g := vector (N-1);\n u_vec := vector (N-1);\n u _res := vector (N-1);\n A := matrix (N-1,N-1);\n\n # Bestimmen der \+ (N-1)x(N-1) - Tridiagonalmatrix\n for j from 1 to N-1 do\n for \+ i from 1 to N-1 do\n A[i,j] := 0;\n od;\n od;\n A[1,1 ] := -2; A[1,2] := 1;\n A[N-1,N-2] := 1; A[N-1,N-1] := -2;\n for j from 2 to N-2 do\n A[j,j-1] := 1;\n A[j,j] := -2;\n \+ A[j,j+1] := 1;\n od;\n\n # Bestimmen der Anfangsn\344herung u(0) \n for j from 0 to tmax do \n u[j,0] := alpha;\n u[j,N] := beta;\n od;\n\n h := (b-a) / N;\n\n for j from 1 to N-1 do\n \+ z := (a+j*h - a) / (b-a);\n u[0,j] := evalf(alpha + (beta-alph a)*z + roh*z*(1-z));\n od:\n\n # L\366sung der Randwertaufgabe in m ehreren Schritten\n t := 0; diffmax := 1;\n \n while (t < tmax) a nd (diffmax>=10^(-5)) do \n\n # Bestimmen des g-Vektors\n g[1 ] := h*h * 3/2*u[t,1]^2 - alpha; \n g[N-1] := h*h * 3/2*u[t,N-1]^ 2 - beta; \n for j from 2 to N-2 do\n g[j] := h*h * 3/2*u [t,j]^2; \n od;\n \n # Bestimmen von u[t+1] mit Gleich ungssystem Au=g(u)\n u_res := linsolve (A,g);\n\n for j from 1 to N-1 do\n u[t+1,j] := u_res[j];\n od; \n\n # S upremumsnorm von u(t)-u(t-1) bestimmen\n if t>0 then\n di ffmax := 0;\n \n for j from 1 to N-1 do\n if a bs(u[t,j]-u[t-1,j]) > diffmax then\n diffmax := abs(u[t, j]-u[t-1,j]); \n fi;\n od;\n fi;\n\n # Pro tokollausgabe\n if (t mod 10 = 0 and t > 0) or (t+1 > tmax) or (d iffmax<10^(-5)) then\n printf (\"t=%3d ||u(%3d)-u(%3d)||=%15 .10f \\n\",t,t,t-1,diffmax);\n fi;\n\n # Zum n\344chsten Iter ationsschritt gehen\n t := t +1;\n\n od;\n \n u;\n\nend;" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 157 "D ie Anwendung des Verfahrens erfolgt hier mit den gleichen Intervallgre nzen aber N = 20 Intervallschritten und einer maximalen Iterationstief e von tmax = 50." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 123 "a := 0: alpha := 4: b := 1: beta := 1:\nN := 20: roh := 0: tmax := 50:\nu := iterat ( a, alpha, b, beta, N, r oh, tmax ):" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 " " {TEXT -1 55 "Auch hier wird die erste und letzte N\344herung geplott et:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 129 "p := plot( [seq( [a+j*(b-a)/N,u[0,j]], j=0..N)] ):\n p92 := plot( [seq( [a+j*(b-a)/N,u[23,j]], j=0..N)] ):\nplots[display]( [p,p92]);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 105 "Zum Vergleich noch der gemeinsame Ausdruck der N\344heru ng von 9.1, 9.2 und der gemeinsamen Anfangsn\344herung:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "plots[ display]([p,p91,p92]);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{MARK "0 0 0" 0 }{VIEWOPTS 1 1 0 1 1 1803 }