Professional Documents
Culture Documents
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
Diferencias finitas
f ( x+ h )f (x )
f ' ( x )
h
Diferencias centradas
f ( x+ h )f (xh)
f ' ( x )
2h
j+1 j
C (x ,t ) Ci C i
t k
2 j j j j j
C ( x , t ) C i+1C i Ci +12 Ci + Ci1
2
= 2
x h h
C ij +1C ij j
2C ij +C i1
j
C i+1
= ( )
k h2
k
2
Sea: h
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