soluci¶on de pr¶actica 2 - uam.es · tiempo=0.6p 0 0.2 0.4 0.6 0.8 1 0 0.5 1 1.5 tiempo=0.8p 0...

5

Click here to load reader

Upload: ngodien

Post on 28-Sep-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Soluci¶on de Pr¶actica 2 - uam.es · Tiempo=0.6p 0 0.2 0.4 0.6 0.8 1 0 0.5 1 1.5 Tiempo=0.8p 0 0.2 0.4 0.6 0.8 1 0 0.5 1 1.5 Tiempo=p

Solucion de Practica 2

1. Este ejercicio consiste en aplicar el metodo de Crank-Nicholson al problema:

∂u

∂t− k

∂2u

∂x2= 0, x ∈ [0, 1] , t > 0

u(0, t) = 1, u(1, t) = 1,

u(x, 0) = cos(2πx).

1. Presentar el codigo para resolver la ecuacion.

function [u,x,t]=crank(n,m,dt,k)%% Funcion que resuelve mediante diferencias finitas% la ecuacion del calor mediante Crank-Nicolson% n numero de pasos espaciales% m numero de pasos temporales% dt paso temporal% k constante de la ecuacion%% Variables, incognitas, pasos y constantesu=zeros(n+1,m+1);h=1/n;x=0:h:1;s=k*dt/(2*h^2);% Datos iniciales y condiciones de bordeu(:,1)=cos(2*pi*x);u(1,:)=1;u(n+1,:)=1;%matrices del algoritmob=ones(n-2,1);A=-2*eye(n-1)+diag(b,-1)+diag(b,1);B=inv(eye(n-1)-s*A);C=s*[2 zeros(1,n-3) 2];% Algoritmofor j=1:m

t(j)=(j-1)*dt;u(2:n,j+1)=B*((eye(n-1)+s*A)*u(2:n,j)+C’);

endt(m+1)=m*dt;% Graficaplot(x(1:n+1),u(1:n+1,m));

2. Representar graficamente la aproximacion del problema para k = 1/10 en los tiempos 0.5,1.0 y 1.5. Indicar el paso de tiempo y el paso de espacio utilizado.

Hemos utilizado el anterior programa con los siguientes valores:

[u,x,t]=crank(50,150,0.01,0.1)

de lo que hemos obtenido las siguientes graficas:

1

Page 2: Soluci¶on de Pr¶actica 2 - uam.es · Tiempo=0.6p 0 0.2 0.4 0.6 0.8 1 0 0.5 1 1.5 Tiempo=0.8p 0 0.2 0.4 0.6 0.8 1 0 0.5 1 1.5 Tiempo=p

0.4 0.6 0.8 1

T=0.5

0 0.2 0.4 0.6 0.8 1

0.4

0.5

0.6

0.7

0.8

0.9

1T=1.0

0 0.2 0.4 0.6 0.8 1

0.65

0.7

0.75

0.8

0.85

0.9

0.95

1T=1.5

3. Que relacion entre paso de tiempo y espacio es suficiente para que el metodo converja. Porque.

El parametro s esta definido por:

s =kdt

2h2.

Manteniendo fijo dt = 0.01 y h = 1/50 y variando k podemos observar si se produce algunfenomeno de no estabilidad.

En efecto, tomando distintos valores de k, podemos observar que el metodo es muy estableya que tiende a la solucion estacionaria, u ≡ 1, segun k es mas grande. Sin embargo a partirde s ≥ 10 se producen unas pequenas oscilaciones en los bordes que provocan que el metodopueda diverger. Tras aplicar crank(50,150,0.01,0.9) resulta la siguiente grafica:

0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

4. Representar graficamente la dependencia del mınimo de la aproximacion del problema con re-specto el parametro k. Evaluar, por ejemplo, en los valores k = 10n con n = −2,−1, 0, 1, 2, 3.Que dependencia tiene respecto a k?

Notemos que segun avanza el tiempo la solucion tiende a la funcion identicamente igual a1 que va a ser la solucion estacionaria del problema. Ası, segun tomamos k mayor antesalcanzamos la solucion estacionaria. Esto lo observamos en la siguiente grafica donde rep-resentamos los mınimos de u(:,m+1) de la solucion obtenida mediante crank(50,m,dt,k)manteniendo la relacion con s<10.

2

Page 3: Soluci¶on de Pr¶actica 2 - uam.es · Tiempo=0.6p 0 0.2 0.4 0.6 0.8 1 0 0.5 1 1.5 Tiempo=0.8p 0 0.2 0.4 0.6 0.8 1 0 0.5 1 1.5 Tiempo=p

10−1

100

101

102

103

k

2. Este ejercicio consiste en aplicar un metodo de Runge-Kutta preprogramado de Matlab alproblema:

∂u

∂t− 1

2∂2u

∂x2= xe−t, x ∈ [0, 1] , t > 0

u(0, t) = e−t, u(1, t) = −e−t,

u(x, 0) = cos(πx).

1. Presentar el codigo para aproximar la solucion de la ecuacion. Definimos la siguiente funcionpara aplicar las funciones preprogramadas de Matlab de Runge-Kutta.

function fuente=sist(t,y)%matrices del algoritmon=100;h=1/n;s=1/(2*h^2);x=h:h:1-h;b=ones(n-2,1);A=-2*eye(n-1)+diag(b,-1)+diag(b,1);C=[exp(-t) zeros(1,n-3) -exp(-t)];D=exp(-t)*x;% Fuentefuente=s*(A*y+C’)+D’;

Ası, obtenemos los datos que luego representamos:

n=100;x=0:1/n:1;% Datos inicialesy0=cos(pi*x(2:n));[t,y]=ode23s(’sist’,[0,0.25,0.5,0.75,1],y0);m=size(t);u=zeros(n+1,m);% incorporamos las condiciones de bordeu(1,1:m)=exp(-t);u(n+1,1:m)=-exp(-t);% incorporamos los valores u calculadosu(2:n,1:m)=y’;

2. Representar graficamente la aproximacion del problema en los tiempos 0.25, 0.5, 0.75 y 1.0.Indicar el paso de espacio utilizado y los distinto pasos de tiempo.

3

Page 4: Soluci¶on de Pr¶actica 2 - uam.es · Tiempo=0.6p 0 0.2 0.4 0.6 0.8 1 0 0.5 1 1.5 Tiempo=0.8p 0 0.2 0.4 0.6 0.8 1 0 0.5 1 1.5 Tiempo=p

0.2 0.4 0.6 0.8 1

Tiempo=0.25

0 0.2 0.4 0.6 0.8 1−1

−0.5

0

0.5

1Tiempo=0.5

0.2 0.4 0.6 0.8 1

Tiempo=0.75

0 0.2 0.4 0.6 0.8 1−0.4

−0.2

0

0.2

0.4Tiempo=1.0

3. Que relacion entre paso de tiempo y espacio se tiene.

Depende del metodo Rung-Kutta utilizado y del numero de pasos espaciales utilizado. En micaso ha sido de mas de 2000 pasos temporales, no siendo ellos del mismo tamano.

3. Resuelve mediante el metodo de diferencias finitas (modificando adecuadamente el codigo quepresentamos en el tercer capıtulo de los apuntes de las practicas), el problema con condiciones deborde tipo Dirichlet

(O)∂2u

∂t2− ∂2u

∂x2= cos(πt) , x ∈ [0, 1] , t > 0

u(0, t) = 1,

u(1, t) = 0,

u(x, 0) = u0(x) = (1− x)2,ut(x, 0) = 1.

1. Presentar el codigo para aproximar la solucion de la ecuacion.

function [u,x,t]=ondas(n,m)%Resuelve mediante un esquema explicito de segundo ordenu=zeros(n+1,m+1);h=1/n;x=[0:h:1];dt=pi/m;t=0:dt:pi;s=dt*dt/h^2% Dato inicialfor i=1:n+1f(i)=(1-x(i))^2;g(i)=1;endfor i=1:n+1u(i,1)=f(i);v(i,1)=dt*g(i);end% Condiciones de bordeu(1,:)=1;

4

Page 5: Soluci¶on de Pr¶actica 2 - uam.es · Tiempo=0.6p 0 0.2 0.4 0.6 0.8 1 0 0.5 1 1.5 Tiempo=0.8p 0 0.2 0.4 0.6 0.8 1 0 0.5 1 1.5 Tiempo=p

u(n+1,:)=0;% Funcion fuentef=cos(pi*t(1));% Calculo del primer paso temporalfor i=2:nu(i,2)=u(i,1)+v(i)+s*(u(i+1,1)+u(i-1,1)-2*u(i,1))/2+dt^2*f/2;end% Iteracion para el resto de pasos temporalesfor j=2:m

f=cos(pi*t(j));for i=2:nu(i,j+1)=2*u(i,j)-u(i,j-1)+s*(u(i+1,j)+u(i-1,j)-2*u(i,j))+dt^2*f;endendplot(x,u(:,m+1));

2. Representar la solucion hallada numericamente para

t

π= 0, 0.2, 0.4, 0.6, 0.8, 1.

Indicar el paso de tiempo y de espacio utilizado.

0.4 0.6 0.8 1

Tiempo=0

0 0.2 0.4 0.6 0.8 1

0

0.5

1

1.5

Tiempo=0.2π

0 0.2 0.4 0.6 0.8 1

0

0.5

1

1.5

Tiempo=0.4π

0.4 0.6 0.8 1

Tiempo=0.6π

0 0.2 0.4 0.6 0.8 1

0

0.5

1

1.5

Tiempo=0.8π

0 0.2 0.4 0.6 0.8 1

0

0.5

1

1.5

Tiempo=π

Hemos utilizado el programa ondas(50,200) por lo que los pasos de tiempo utilizados son

dt =π

200y h =

150

.

3. Indicar y mostrar que relacion entre paso de tiempo y de espacio es necesario para el metodoconverja.

Tomando distintos valores de m en ondas(50,m) vemos cuando cuando el metodo es estableo no y esto ocurre de pasar de m = 157 a m = 156. Por lo tanto el metodo no estable cuandos > 1.

5