Está en la página 1de 7

Mtodo para Ecuaciones Diferenciales Parciales

Dentro de los mtodos ms usados para modelar EDPs de tipo


parablico (ecuaciones de difusin que implica que el tiempo
(parte temporal) es conocido mientras que la parte espacial es difusa
en el espacio), entonces las ecuaciones diferenciales parciales es de la
forma.

C (x ,t ) 2 C (x , t)
=
t x2

Condiciones de contorno:
C ( x ,0 )=f (x) , 0<x<L

C ( 0, t ) =g(t) , 0<x<L

Las condiciones iniciales


C ( x ,0 )=C ( 0, t )=0

Diferencias finitas
f ( x+ h )f (x )
f ' ( x )
h

Diferencias hacia adelante


f ( x )f (xh)
f ' ( x )
h

Diferencias centradas
f ( x+ h )f (xh)
f ' ( x )
2h
j+1 j
C (x ,t ) Ci C i

t k

k= es el espaciamiento de entre puntos del


tiempo
i = incremento del espacio o distancia
j= incremento del tiempo

2 j j j j j
C ( x , t ) C i+1C i Ci +12 Ci + Ci1
2
= 2
x h h

h= es el espaciamiento entre puntos de la


distancia

C ij +1C ij j
2C ij +C i1
j
C i+1
= ( )
k h2

k
2
Sea: h

Cij+1C ij=(C i+1


j
2C ij +C i1
j
)
Cij+1=C i+1
j
+(12)Cij +Ci1
j

i=1,2,3,4 n ; j=0,1,2 .. m
%Entrada de datos
Preguntas={
'Caudal en m^3/s'
'Area(m^2)'
'Longitud en km: '
'Numero de particiones en el tiempo n '
'Numero de particiones en x m'
'Coeficiente alfa'
'Funcion de Concentracion inicial'};
Titulo = 'Entrada de Datos (Metodo de
diferencias progresivas)';
Defecto = {' ',' ','1' , '40' , '10' ,
'1' , 'x*x'};
datos=inputdlg(Preguntas, Titulo, 1,
Defecto);
Q=str2num(datos{1});
A=str2num(datos{2});
l=str2num(datos{3});
N=str2num(datos{4});
m=str2num(datos{5});
alpha=str2num(datos{6});
f=datos{6};
x=sym('x');
%
%Inicializacion
V=Q/A; %velocidad del flujo de
concentracion
T=l/V;
h=l/m; % espacial
k=T/N; % temporal
lambda=((alpha^2)*k)/h^2;
W=[];
w=[];
%Obtencion de la solucion
for i=1:m-1
x=i*h;
w(1,i)=eval(f);
end
W=[W;w];
L=[];
u=[];
% resuelve una matriz tridiagonal
L(1)=1+2*lambda;
u(1)=-lambda/L(1);
for(i=2:m-2)
L(i)=1 + 2*lambda + lambda*u(i-1);
u(i)=-lambda/L(i);
end
L(m-1)=1 + 2*lambda + lambda*u(m-2);
for j=1:N
t=j*k;
z=[];
z(1)=w(1)/L(1);
for(i=2:m-1)
z(i)=(w(i) + lambda*z(i-1))/L(i);
end
w(m-1)=z(m-1);
for i=m-2:-1:1
w(i)=z(i) - u(i)*w(i+1);
end
W=[W;w];
end

%Grafica da la solucion
num_rows=size(W,1);
zeros_col=zeros(num_rows,1);
W=[zeros_col W zeros_col];
plot(W(1,:));
limites=axis;
maximo=limites(4);
% para que la grafica se animada
for a=2:size(W,1)
plot(W(a,:))
limites=[1 m+1 0 maximo];
axis(limites);
pause(0.02)
end
title('Concentracion vs. x')
ylabel('C(x)')
xlabel('x')
figure
surf(W)
title('Superficie de Distribucion de la
concentracin')
ylabel('tiempo(minutos)')
xlabel('distancia del rio')
zlabel('Concentracion(x,t)')
shading interp
colorbar

También podría gustarte