Está en la página 1de 4

Alvaro

Briz Red
on
Problema 7
En este problema tenemos la ecuacion ut + cux = 0 (para c = 1). Si partimos de u(x, t) =
e , k, w R, e imponemos que cumpla la ecuacion:

iwt ikx

ut = cux = iweiwt eikx = cikeiwt eikx = w = ck


Utilizando
esta relacion entre k y w tenemos u(x, t) = eik(xct) . As, una posible solucion
P
sera k=1 ck eik(xct) .
Ademas, queremos que u(x, t) verifique la condicon inicial u(x, 0) = u0 (x), para P
una funcion
ikx
u0 (x) dada. Si podemos obtener el desarrollo de Fourier de esta funcion, u0 (x)
,
k=1 bk e
entonces para que u(x, 0) = u0 (x) necesariamente ck = bk y la solucion del problema sera
P

ik(xct)
= u0 (x ct).
k=1 bk e
De esta forma, como c = 1, la solucion para u0 (x) = cos(x) es cos((x + t)). Para t = 2
tenemos cos((x + 2)) = cos(x) y para t = 3 cos((x + 3)) = cos(x + ). Estas seran sus
graficas:

Figure 1: Solucion en t = 2

Figure 2: Solucion en t = 3

Para u0 (x) = [0.5,0.5] , que tambien es de periodo 2, las graficas seran:

Figure 3: Solucion en t = 2

Figure 4: Solucion en t = 3

Aproximamos la solucion de la ecuacion ut + cux = 0 mediante los metodos Lax-Friedrichs,


upwind y Lax-Wendroff. La condicion de estabilidad en estos tres metodos es | ct
| 1. Como
h
c = 1 en nuestro problema, esta condicion equivale a t h. Si escogemos t = h, que
cumple la condicion, los tres metodos coinciden, siendo simplemente un+1
= unj1 . De este
j
modo, para poder ver las diferencias entre los metodos tomamos t = h/2. Como h = 2/N ,
N = 100 o N = 200, necesitamos hacer 2(N + N/2) para llegar a t = 3.
Con todo esto, hemos realizado los siguientes programas:
Lax-Friedrichs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

function [x , u ]= problema7laxfriedrichs (N , f )
h =2/ N ;
x = linspace ( -1 ,1 , N +1);
% Valor para t =0
for i =1: N +1
u (i ,1)= f ( x ( i ));
end
d = h /2; % Elegimos el incremento de t
for t =1:2*( N + N /2)
for i =1: N -1
u ( i +1 , t +1)=0.5*( u (i , t )+ u ( i +2 , t ))+( d /(2* h ))*( u ( i +2 , t ) - u (i , t ));
end
u (1 , t +1)= u (N , t +1);
u ( N +1 , t +1)= u (2 , t +1);
end
end
Upwind

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

function [x , u ]= problema7upwind (N , f )
h =2/ N ;
x = linspace ( -1 ,1 , N +1);
% Valor para t =0
for i =1: N +1
u (i ,1)= f ( x ( i ));
end
d = h /2; % Elegimos el incremento de t
for t =1:2*( N + N /2)
for i =1: N -1
u ( i +1 , t +1)= u ( i +1 , t ) -( d / h )*( u ( i +2 , t ) - u ( i +1 , t ));
end
u (1 , t +1)= u (N , t +1);
u ( N +1 , t +1)= u (2 , t +1);
end
end

Lax-Wendroff
1 f u n c t i o n [ x , u]= p r o b l e m a 7 l a x w e n d r o f f (N, f )
2 h=2/N;
3 x=l i n s p a c e ( 1 ,1 ,N+1);
4 % Valor para t =0
5 f o r i =1:N+1
6 u ( i ,1)= f ( x ( i ) ) ;
7 end
8 d=h / 2 ; % E l e g i m o s e l i n c r e m e n t o de t
9 f o r t =1 :2(N+N/ 2 )
10
f o r i =1:N1
11
u ( i +1 , t +1)=u ( i +1 , t )+(d / ( 2 h ) ) ( u ( i +2 , t )u ( i , t ) )
12
u ( i +1 , t +1)=u ( i +1 , t +1)+(0.5( d/h ) 2 ) ( u ( i +2 , t )2u ( i +1 , t )+u ( i , t ) ) ;
13
end
14
u ( 1 , t +1)=u (N, t +1);
15
u (N+1 , t +1)=u ( 2 , t +1);
16 end
17 end

A partir de estos programas obtenemos las siguientes graficas:


Aproximaciones en t = 2:

Figure 5: Condicion (1), N = 100

Figure 6: Condicion (1), N = 200

Figure 7: Condicion (2), N = 100

Figure 8: Condicion (2), N = 200

Aproximaciones en t = 3:

Figure 9: Condicion (1), N = 100

Figure 10: Condicion (1), N = 200

Figure 11: Condicion (2), N = 100

Figure 12: Condicion (2), N = 200

Para la condicion inicial u0 (x) = cos(x) vemos que el metodo de Lax-Wendroff es el que
menos error comete, siendo el error realmente peque
no para N = 200. Por su parte, LaxFriedrichs resulta ser el peor metodo en este caso. Ademas, observamos que los tres metodos
mejoran al aumentar la N .
Para la segunda condicion inicial la situacion es distinta. Los metodos de Lax-Friedrichs y
upwind aproximan la solucion de manera uniforme (Lax-Friedrichs presenta ligeras oscilaciones),
siendo mejor el metodo de upwind.
Por su parte, la aproximacion del metodo de Lax-Wendroff sufre oscilaciones importantes
en las zonas donde la solucion tiene discontinuidades (-0.5 y 0.5). Realmente la oscilacion se
produce por la derecha del punto de discontinuidad.
En resumen, Lax-Wendroff realiza la mejor aproximacion salvo en un entorno a la derecha
de los puntos donde la solucion es discontinua. En estos entornos el metodo upwind es el mejor.
Por u
ltimo, destacar que en este caso al aumentar N la mejora es menor que para la primera
condicion. Para Lax-Wendroff aumenta el n
umero de oscilaciones, pero al ser de menor amplitud
se reduce el error en las zonas problematicas.

También podría gustarte