Beruflich Dokumente
Kultur Dokumente
Math 712
Assignment 3
Problem 1
Consider the following initial value problem
ut = ux , 0 < x < 2π, t>0
u(x, 0) = sin(x)
u(0, t) = u(2π, t)
Notation:
vjn = u(xj , tn )
k = ∆t
h = ∆x
λ = hk
(a) The exact solution to this problem is u(x, t) = u0 (x + t) = sin(x + t) (figure 1). Three numerical
1
(b) For all three schemes with λ > 1 we can observe an instability such as in figure 2, whereas for λ < 1,
all three methods are stable. For λ = 1 all three also appear stable, even though (according to the text)
Leap Frog should not be
(c) The next four figures show the exact solution (in blue) and three numerical solutions (red, green and
black) at four different times (computed with λ = 0.9 using 101 spatial nodes). Notice how the error
propagates from right to the left (which demonstrates a wave traveling from the right to the left). It
takes time = 2 ∗ π for the error to propagate through the whole interval (which demonstrates the speed
of the traveling wave =1). The question remains (and I do not know the answer to this) why is there an
error at the right endpoint? Its location suggests that it might be due to the boundary conditions, but I
implemented them using the same method as in the interior nodes.
2
Figure 5: t=1 Figure 6: t=2π
(d) In order to compute the order of accuracy of each method, a relative l2 error was used (computed at
t = 2π for successively decreasing (halved) values of k, while λ was held constant. In the table we can
k lf uw lw
0.050265482 6.468230633 7.207733750 6.434407102
0.025132741 3.194120693 3.661412223 3.183507851
0.012566371 1.585770992 1.844733852 1.582493879
0.006283185 0.789699788 0.925650435 0.788705573
0.003141593 0.393935880 0.463552334 0.393648608
0.001570796 0.196713247 0.231922525 0.196626404
see that the relative error (approximately) halves as the time step halves. This suggests a first order of
accuracy, even though we expect second order for Lax-Wendorf and Leap Frog.
The following figure shows relative l2 error against grid spacing k. Note that the two lines corresponding
3
Listing of the Matlab code that I used:
%% a d v e c t i o n e q u a t i o n on [ 0 , 2 p i ]
% i n i t i a l c o n d i t i o n u ( x ,0)= s i n ( x )
% p e r i o d i c boundary c o n d i t i o n s
clear
% f i n a l time
T=2∗ p i ;
% number o f s p a t i a l i n t e r v a l s
N=400;
% s p a t i a l step
h=2∗ p i /N;
% step ratio
lambda = 0 . 8 ;
% time s t e p
k=lambda ∗h ;
% number o f time i n t e r v a l s
M=round (T/k ) ;
%% e x a c t s o l u t i o n
u=z e r o s (M+1,N+1);
% e x a c t s o l u t i o n u ( x , t )= u 0 ( x+t )
f o r j =1:N+1 %s p a c e
f o r n=1:M+1 %time
u ( n , j )=rem ( s i n ( ( j −1)∗h+(n−1)∗k ) , 2 ∗ p i ) ;
end
end
% s p a t i a l nodes
x=0:h : 2 ∗ p i ;
% time nodes
t =0:k :M∗k ;
% plot
s u r f c ( x , t , u , ’ EdgeColor ’ , ’ none ’ )
%s h a d i n g i n t e r p
%% l e a p f r o g method
% solution
v l f=z e r o s (M+1,N+1);
% i n i t i a l condition
f o r j =1:N+1 %s p a c e
v l f ( 1 , j )= s i n ( ( j −1)∗h ) ;
end
% f i r s t time s t e p u s i n g upwind
f o r j =1:N %s p a c e
v l f ( 2 , j )= v l f ( 1 , j )+lambda ∗ ( v l f ( 1 , j +1)− v l f ( 1 , j ) ) ;
end
% l a s t p o i n t u s e s p e r i o d i c boundary c o n d i t i o n
v l f ( 2 ,N+1)= v l f ( 1 ,N+1)+lambda ∗ ( v l f (1 ,1) − v l f ( 1 ,N+ 1 ) ) ;
4
f o r n=3:M+1 %time
f o r j =2:N %s p a c e
v l f ( n , j )= v l f ( n−2, j )+lambda ∗ ( v l f ( n−1, j +1)− v l f ( n−1, j − 1 ) ) ;
end
% l a s t p o i n t has t o u s e t h e p e r i o d i c boundary c o n d i t i o n
v l f ( n ,N+1)= v l f ( n−2,N+1)+lambda ∗ ( v l f ( n−1,1)− v l f ( n−1,N ) ) ;
% f i r s t p o i n t a l s o u s e s p e r i o d i c BCs
v l f ( n ,1)= v l f ( n−2,1)+ lambda ∗ ( v l f ( n−1,2)− v l f ( n−1,N+ 1 ) ) ;
end
% plot
figure ;
s u r f c ( x , t , v l f , ’ EdgeColor ’ , ’ none ’ )
%% upwind
% solution
v uw=z e r o s (M+1,N+1);
% i n i t i a l condition
f o r j =1:N+1 %s p a c e
v uw ( 1 , j )= s i n ( ( j −1)∗h ) ;
end
f o r n=2:M+1 %time
f o r j =1:N %s p a c e
v uw ( n , j )=v uw ( n−1, j )+lambda ∗ ( v uw ( n−1, j +1)−v uw ( n−1, j ) ) ;
end
% l a s t p o i n t has t o u s e t h e p e r i o d i c boundary c o n d i t i o n
v uw ( n ,N+1)=v uw ( n−1,N+1)+lambda ∗ ( v uw ( n−1,1)−v uw ( n−1,N+ 1 ) ) ;
end
% plot
figure ;
s u r f c ( x , t , v uw , ’ EdgeColor ’ , ’ none ’ )
%% Lax−Wendroff
% solution
v l w=z e r o s (M+1,N+1);
% i n i t i a l condition
f o r j =1:N+1 %s p a c e
v l w ( 1 , j )= s i n ( ( j −1)∗h ) ;
end
f o r n=2:M+1 %time
f o r j =2:N %s p a c e
v l w ( n , j )= v l w ( n−1, j )+lambda ∗ ( v l w ( n−1, j +1)−v l w ( n−1, j − 1 ) ) / 2 + . . .
+(lambda ˆ 2 ) ∗ ( v l w ( n−1, j +1)−2∗ v l w ( n−1, j )+ v l w ( n−1, j − 1 ) ) / 2 ;
end
% l a s t p o i n t has t o u s e t h e p e r i o d i c boundary c o n d i t i o n
v l w ( n ,N+1)=v l w ( n−1,N+1)+lambda ∗ ( v l w ( n−1,1)− v l w ( n−1,N) ) / 2 + . . .
5
+(lambda ˆ 2 ) ∗ ( v l w ( n−1 ,1) −2∗ v l w ( n−1,N+1)+v l w ( n−1,N) ) / 2 ;
% f i r s t p o i n t a l s o u s e s p e r i o d i c BCs
v l w ( n ,1)= v l w ( n−1,1)+ lambda ∗ ( v l w ( n−1,2)− v l w ( n−1,N+ 1 ) ) / 2 + . . .
+(lambda ˆ 2 ) ∗ ( v l w ( n−1 ,2) −2∗ v l w ( n−1,1)+ v l w ( n−1,N+ 1 ) ) / 2 ;
end
% plot
figure ;
s u r f c ( x , t , v lw , ’ EdgeColor ’ , ’ none ’ )
%% time p l o t s
% t =0.1
tau=round ( 0 . 1 / k ) ;
p l o t ( x , u ( tau , : ) )
h o l d on
p l o t ( x , v l f ( tau , : ) , ’ r ’ )
p l o t ( x , v uw ( tau , : ) , ’ g ’ )
p l o t ( x , v l w ( tau , : ) , ’ k ’ )
hold o f f
% t =0.5
figure
tau=round ( 0 . 5 / k ) ;
p l o t ( x , u ( tau , : ) )
h o l d on
p l o t ( x , v l f ( tau , : ) , ’ r ’ )
p l o t ( x , v uw ( tau , : ) , ’ g ’ )
p l o t ( x , v l w ( tau , : ) , ’ k ’ )
hold o f f
% t=1
figure
tau=round ( 1 / k ) ;
p l o t ( x , u ( tau , : ) )
h o l d on
p l o t ( x , v l f ( tau , : ) , ’ r ’ )
p l o t ( x , v uw ( tau , : ) , ’ g ’ )
p l o t ( x , v l w ( tau , : ) , ’ k ’ )
hold o f f
% t =2∗ p i
figure
tau=round ( 2 ∗ p i /k )
p l o t ( x , u (M+ 1 , : ) )
h o l d on
p l o t ( x , v l f (M+ 1 , : ) , ’ r ’ )
p l o t ( x , v uw (M+ 1 , : ) , ’ g ’ )
p l o t ( x , v l w (M+ 1 , : ) , ’ k ’ )
hold o f f
%% e r r o r s
e l f =100∗norm ( v l f (M+1 ,:) −u (M+ 1 , : ) ) / norm ( u (M+ 1 , : ) ) ;
e uw =100∗norm ( v uw (M+1 ,:) −u (M+ 1 , : ) ) / norm ( u (M+ 1 , : ) ) ;
6
e l w =100∗norm ( v l w (M+1 ,:) −u (M+ 1 , : ) ) / norm ( u (M+ 1 , : ) ) ;
e =[k , e l f , e uw , e l w ]
% r e l a t i v e e r r o r s computed by r u n n i n g t h e program s e v e r a l t i m e s
% with d e c r e a s i n g s t e p s i z e
k p =[0.050265482 ,0.025132741 ,0.012566371 ,0.006283185 ,0.003141593 ,0.001570796]
l f p =[6.468230633 ,3.194120693 ,1.585770992 ,0.789699788 ,0.39393588 ,0.196713247]
uw p = [ 7 . 2 0 7 7 3 3 7 5 , 3 . 6 6 1 4 1 2 2 2 3 , 1 . 8 4 4 7 3 3 8 5 2 , 0 . 9 2 5 6 5 0 4 3 5 , 0 . 4 6 3 5 5 2 3 3 4 , 0 . 2 3 1 9 2 2 5 2 5 ]
lw p = [ 6 . 4 3 4 4 0 7 1 0 2 , 3 . 1 8 3 5 0 7 8 5 1 , 1 . 5 8 2 4 9 3 8 7 9 , 0 . 7 8 8 7 0 5 5 7 3 , 0 . 3 9 3 6 4 8 6 0 8 , 0 . 1 9 6 6 2 6 4 0 4 ]