D-MAVT FS 14 K. Nipp A. Hiltebrand NUMERISCHE MATHEMATIK Beispiellösung Serie 1. a) Trapezmethode gemäss Skript S. 93: h = 1, s = 1 (f() + f(1)) =.68394, T = s h =.68394 h 1 = 1/, s 1 = s + f(1/) = 1.467, T 1 = s 1 h 1 =.73137 h = 1/4, s = s 1 + f(1/4) + f(3/4) =.9719, T = s h =.7498 b) Romberg-Verfahren: Setze (gemäss Skript S. 98) R j, = T j, j =, 1, und berechne R 1,1 = R 1, 4 R, 1 4 =.747184 R,1 = R, 4 R 1, 1 4 =.7468553 R, = R,1 4 R 1,1 1 4 =.746861 Bitte wenden!
. a=; b=1; f=@(x) exp(-x.^); TOL=1e-8; MaxIter=1; % attention: % all indices shifted: Skript :MaxIter, Matlab 1:MaxIter+1 S=zeros(1,MaxIter+1); T=zeros(1,MaxIter+1); R=zeros(MaxIter+1, MaxIter+1); h=b-a; S(1)=(f(a)+f(b))/; T(1)=S(1)*h; N=1; R(1,1)=T(1); for j=1:maxiter % Trapezoidal method, page 93 h=h/; S(j+1)=S(j)+sum(f(a+(*(1:N)-1)*h)); T(j+1)=h*S(j+1); N=*N; % Romberg iteration, page 98 R(j+1,1)=T(j+1); for k=1:j R(j+1,k+1)=(R(j+1,k)-R(j,k)*4^(-k))/(1-4^(-k)); end if abs(r(j+1,j+1)-r(j+1,j)) < abs(r(j+1,j+1))*tol+tol; break; end end niter=j Integral=R(j+1,j+1) % PLOT CONVERGENCE %exact result with Matlabs quadrature routine: MatlabQuad=quad(f,a,b,1e-1); relerrorromberg=... Siehe nächstes Blatt!
abs( (diag(r(1:niter+1,1:niter+1)) - MatlabQuad)/MatlabQuad ); relerrortrapezoidal=abs( (T(1:nIter+1) - MatlabQuad)/MatlabQuad ); semilogy(:niter, relerrorromberg, o--,... :niter, relerrortrapezoidal, kx-- ); legend( Romberg R, Trapezoidal T ); xlabel( Iteration ); ylabel( relative Error ); title( Convergence of Relative Error ); Für f(x) = e x aus Aufgabe 1 gilt niter = 4 Integral =.746841339594 Wir schreiben die ersten drei Zeilen wie folgt um: a=; b=3; f=@(x) sin(x).*exp(x); Dies ergibt: niter = 5 Integral = 11.8595988916 1 Convergence of Relative Error Romberg R Trapezoidal T 1 1 4 relative Error 1 6 1 8 1 1.5 1 1.5.5 3 3.5 4 4.5 5 Iteration Bitte wenden!
3. Teile a)-d): format long f=@(x) 1./(1+cos(x).^); I_exact=pi/sqrt(); %nodes and weights on [-1,1] x=[-.9617985 -.53846931.53846931.9617985]; w=[.369689.4786867.56888889....4786867.369689]; %% QUADRATURE PART (a): 5 points xx = (x+1) * pi/; %nodes on [,pi] fx=f(xx); %values of f in the nodes I_a= fx * w *pi/; %% QUADRATURE PART (b): 3 subdomains with 5 points each I_b = f(pi/6+pi/6*x) * w * pi/6... + f(pi/+pi/6*x) * w * pi/6... + f(5*pi/6+pi/6*x) * w * pi/6; %% QUADRATURE PART (c): 15 points [xc,wc] = lgwt(15,,pi); I_c = wc * f(xc) ; %% PART (d): comparison disp( Exact 5 points 3x5 points 15 points ) values=[i_exact, I_a, I_b, I_c] errors=[, abs(i_exact-i_a),... abs(i_exact-i_b),abs(i_exact-i_c)] Betrachten Sie s_3.m für einen Plot der Knoten. a) π. f(x) dx = π 1 f( π + π x)dx π 5 f( π + π x i)w i =.3353745751 i=1 Siehe nächstes Blatt!
b) π f(x) dx = = π 6 π 6 π/3 1 5 i=1 f(x) dx + π/3 π/3 f(x) dx + π π/3 ( π f 6 + π ) ( π 6 x + f + π ) 6 x + f f(x) dx ( 5π 6 + π 6 x ) dx ( π f( 6 + π ) π 6 x i + f( + π ) 5π 6 x i + f( 6 + π i) ) 6 x w i =.14443675468. c) [x,w]= lgwt(15,,pi); π 15 f(x) dx f(x j ) w j =.144174386815. j=1 d) Die exakte Lösung lautet π/ =.144146979183..., also hat c) 7 exakte Stellen gegenüber 6 exakte Stellen in b) und exakte Stellen in a). e) f=@(x,y) y.*cos(x.*y/); I_exact=8; x_min=-1; x_max=1; y_min=; y_max=pi; % Non-smooth f % f=@(x,y) min(1-abs(x), 1-abs(y/pi)); % I_exact=4*pi/3; % x_min=-1; x_max=1; y_min=-pi; y_max=pi; k_max=1; % maximal order of gauss quadrature err=zeros(1,k_max); for k=1:k_max [x,wx] = lgwt(k,x_min,x_max); [y,wy] = lgwt(k,y_min,y_max); [xx,yy]=meshgrid(x,y); I=sum(sum(f(xx,yy).* (wy*wx ))); err(k)=abs(i-i_exact); end QuadratureIntegral=I Error=err(k_max) % Error convergence plot and plot of f clf; subplot(1,,1); semilogy(err, -* ); Bitte wenden!
xlabel( Number of Gauss points ); ylabel( Error ); subplot(1,,); surf(xx,yy,f(xx,yy)); title( f(x,y) ); axis equal; Dies liefert für I = 1 π y cos x y dy dx: QuadratureIntegral = 7.999999999999996 Error = 3.55713678851e-15 für I = 1 π min{1 x, 1 y } dy dx: π π QuadratureIntegral = 4.5131386344381 Error =.65365845799 Betrachten Sie die Matlab-Datei s_3e.m. f) Der Fehler in Abhängigkeit von k ist in Abbildung 1 dargestellt. Wenn der Integrand nicht glatt ist, so ist die Konvergenz viel langsamer. (Man beachte die unterschiedlichen Skalen der Fehler in den Diagrammen.) 4. Multiple Choice. Online abzugeben. a) Die Trapezmethode ist ein Verfahren der Ordnung (i) 1 (iii) 3 (ii) (iv) 4 (v) 5 (vi) 6 Die Trapezmethode ist ein Verfahren der Ordnung (siehe Skript Seite 9). b) Bei jedem Schritt der Trapezmethode, d. h. bei einer Verdoppelung der Anzahl Teilintervalle, wird der Fehler (ungefähr) mit dem folgenden Faktor multipliziert (sofern der Integrand genügend glatt ist und die Teilintervalle genügend klein sind): (i) 1/ (ii) 1/3 (iii) 1/4 (iv) 1/6 (v) 1/8 (vi) 1/16 Siehe nächstes Blatt!
1 5 f(x,y) 3 Error 1 1 5.5 1.5 1.5 1 3 1 5 4 6 8 1 Number of Gauss points 1.5.5 f C 1 1 f(x,y) 1.8.6.4. Error 1 3 1 3.5.5 1 4 6 8 1 Number of Gauss points f nicht differenzierbar Abbildung 1: Aufgabe 3 f): Konvergenzplot und f(x, y). Bitte wenden!
Der Fehler genügt der Formel I T (h) M 1 (b a)h. Bei einer Halbierung von h ergibt sich eine Vierteilung des Fehlers. c) Die Simpson-Methode ist ein Verfahren der Ordnung (i) 1 (ii) (iii) 3 (v) 5 (iv) 4 (vi) 6 Die Simpson-Methode ist ein Verfahren der Ordnung 4 (siehe Skript Seite 95). d) Bei jedem Schritt der Simpsonmethode, d. h. bei einer Verdoppelung der Anzahl Teilintervalle, wird der Fehler (ungefähr) mit dem folgenden Faktor multipliziert (sofern der Integrand genügend glatt ist und die Teilintervalle genügend klein sind): (i) 1/ (ii) 1/3 (iii) 1/4 (iv) 1/6 (v) 1/8 (vi) 1/16 Der Fehler genügt der Formel I S(h) M 18 (b a)h4. Bei einer Halbierung von h wird der Fehler mit dem Faktor 1 4 = 1 16 multipliziert. e) Wir betrachten das folgende Rombergschema: -.5 -.55 -.566666666666667 -.5655883594118 -.577843137549 -.57158835941 -.5694944745545 -.57796519354 -.57797476944 a Was muss anstelle von a stehen? (i) -.577989188937 (ii) -.5777959598513 (iii) -.57797884789 Nach Skipt S. 98 gilt R 3,3 = R 3, 4 3 R, 1 4 3 =.577989188937, wobei R 3, =.57797476944 und R, =.57158835941. Nebenbei: Dieses Schema entsteht bei der Näherung von 1 x dx. x +1 f) Wie viele Funktionsauswertungen wurden für das Schema aus e) benötigt? Siehe nächstes Blatt!
(i) 8 (iii) 1 (ii) 9 (iv) 13 (v) 16 (vi) 17 Die Anzahl Teilintervalle wird in jedem Schritt verdoppelt, wir haben also N = 3 Teilintervalle. Die Funktion muss für die Trapezmethode (und damit für die Romberg- Methode) an allen Teilintervallgrenzen ausgewertet werden, insgesamt werden somit 3 + 1 = 9 Funktionsauswertungen benötigt. g) Das Integral π π cos(x )dx geht durch Substitution in das Integral 1 π cos(( πx + 3π ) )dx über. (i) Richtig. (ii) Falsch. Wir verwenden die folgende Substitution (siehe Skript S. 1): Damit erhalten wir: π π t = b a x + a + b, a = π und b = π. cos(t )dt = π π = 1 ( (π π cos x + π + π ) ) dx ( (π x + 3π ) ) dx. 1 π cos h) Wir möchten das Integral π/ x a e x dx berechnen, wobei a (, π/) liegt. Was ist zu bevorzugen? (i) eine Gauss-Quadraturformel auf dem Intervall [, π/] (ii) je eine Gauss-Quadraturformel auf dem Intervall [, a] und [a, π/] Das Problem ist hier, dass der Integrand bei a nicht differenzierbar ist. Quadratur über das gesamte Integral ist also nicht zu empfehlen und wird zu einer sehr langsamen Konvergenz führen. Viel besser ist, das Integral aufzuteilen und auf jedes Teilintervall eine (Gauss-)Quadraturformel anzuwenden. Hier also π/ x a e x dx = a x a e x dx + π/ a x a e x dx. Das bedingt natürlich, dass man weiss, wo die Singularitäten des Integranden sind.