Вы находитесь на странице: 1из 5

Soluci

on de Pr
actica 2
1. Este ejercicio consiste en aplicar el metodo de Crank-Nicholson al problema:
u
2u
k 2 = 0,
x [0, 1] , t > 0
t
x
u(0, t) = 1,
u(1, t) = 1,
u(x, 0) = cos(2x).
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 constantes
u=zeros(n+1,m+1);
h=1/n;
x=0:h:1;
s=k*dt/(2*h^2);
% Datos iniciales y condiciones de borde
u(:,1)=cos(2*pi*x);
u(1,:)=1;
u(n+1,:)=1;
%matrices del algoritmo
b=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];
% Algoritmo
for j=1:m
t(j)=(j-1)*dt;
u(2:n,j+1)=B*((eye(n-1)+s*A)*u(2:n,j)+C);
end
t(m+1)=m*dt;
% Grafica
plot(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 gr
aficas:

T=0.5

T=1.0

T=1.5

0.95

0.9

0.9
0.8
0.85
0.7
0.8
0.6
0.75
0.5
0.7
0.4

0.4

0.6

0.8

0.65

0.2

0.4

0.6

0.8

0.2

0.4

0.6

0.8

3. Que relacion entre paso de tiempo y espacio es suficiente para que el metodo converja. Por
que.
El par
ametro s est
a definido por:

kdt
.
2h2
Manteniendo fijo dt = 0.01 y h = 1/50 y variando k podemos observar si se produce alg
un
fen
omeno de no estabilidad.
s=

En efecto, tomando distintos valores de k, podemos observar que el metodo es muy estable
ya que tiende a la soluci
on estacionaria, u 1, seg
un k es m
as grande. Sin embargo a partir
de s 10 se producen unas peque
nas oscilaciones en los bordes que provocan que el metodo
pueda diverger. Tras aplicar crank(50,150,0.01,0.9) resulta la siguiente gr
afica:

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

4. Representar graficamente la dependencia del mnimo de la aproximacion del problema con respecto 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 seg
un avanza el tiempo la soluci
on tiende a la funci
on identicamente igual a
1 que va a ser la soluci
on estacionaria del problema. As, seg
un tomamos k mayor antes
alcanzamos la soluci
on estacionaria. Esto lo observamos en la siguiente gr
afica donde representamos los mnimos de u(:,m+1) de la soluci
on obtenida mediante crank(50,m,dt,k)
manteniendo la relaci
on con s<10.
2

10

10

10

10

10

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


problema:
u 1 2 u

= xet ,
x [0, 1] , t > 0
t
2 x2
u(0, t) = et ,
u(1, t) = et ,
u(x, 0) = cos(x).
1. Presentar el codigo para aproximar la solucion de la ecuacion. Definimos la siguiente funci
on
para aplicar las funciones preprogramadas de Matlab de Runge-Kutta.
function fuente=sist(t,y)
%matrices del algoritmo
n=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;
% Fuente
fuente=s*(A*y+C)+D;
As, obtenemos los datos que luego representamos:
n=100;
x=0:1/n:1;
% Datos iniciales
y0=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 borde
u(1,1:m)=exp(-t);
u(n+1,1:m)=-exp(-t);
% incorporamos los valores u calculados
u(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

Tiempo=0.25

Tiempo=0.5
1
0.5
0
0.5

0.2

0.4

0.6

0.8

0.2

Tiempo=0.75

0.4

0.6

0.8

0.8

Tiempo=1.0
0.4
0.2
0
0.2

0.2

0.4

0.6

0.8

0.4

0.2

0.4

0.6

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


Depende del metodo Rung-Kutta utilizado y del n
umero de pasos espaciales utilizado. En mi
caso ha sido de m
as de 2000 pasos temporales, no siendo ellos del mismo tama
no.
3. Resuelve mediante el metodo de diferencias finitas (modificando adecuadamente el codigo que
presentamos en el tercer captulo de los apuntes de las practicas), el problema con condiciones de
borde tipo Dirichlet
(O)

2u 2u

= cos(t) , x [0, 1] , t > 0


t2
x2
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 orden
u=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 inicial
for i=1:n+1
f(i)=(1-x(i))^2;
g(i)=1;
end
for i=1:n+1
u(i,1)=f(i);
v(i,1)=dt*g(i);
end
% Condiciones de borde
u(1,:)=1;
4

u(n+1,:)=0;
% Funcion fuente
f=cos(pi*t(1));
% Calculo del primer paso temporal
for i=2:n
u(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 temporales
for j=2:m
f=cos(pi*t(j));
for i=2:n
u(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;
end
end
plot(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.


Tiempo=0.2

Tiempo=0

Tiempo=0.4

1.5

1.5

0.5

0.5

0
0.4

0.6

0.8

0
0

0.2

Tiempo=0.6

0.4

0.6

0.8

0.6

0.2

Tiempo=0.8

0.8

0.4

0.6

0.8

0.8

Tiempo=

1.5

1.5

0.5

0.5

0
0.4

0
0

0.2

0.4

0.6

0.8

0.2

0.4

0.6

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

1
yh=
.
200
50

3. Indicar y mostrar que relacion entre paso de tiempo y de espacio es necesario para el metodo
converja.
Tomando distintos valores de m en ondas(50,m) vemos cuando cuando el metodo es estable

o no y esto ocurre de pasar de m = 157 a m = 156. Por lo tanto el metodo no estable cuando
s > 1.

Вам также может понравиться