Академический Документы
Профессиональный Документы
Культура Документы
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
= 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
2u 2u
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.
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.