You are on page 1of 2

Método de diferencias finitas

// Ut+rUx=sUxx
// 0<x<1
// 0<t<T
// Y0=(20/(20+t))*exp(-((5+4*t)^2)/10*(t+20)) y Y1=(20/(20+t))*exp(-(2(5+4*t)^2)/5*(t+20))
// SolucionAnalitica(x,t)= ((20/(20+t))^1/2)*exp(-((x-2-0.8*t)^2)/0.4*(t+20))
a=0.0; // Inicio dominio
c=1.0; // Fin dominio
M=10; // Partición
T=10; // Periodo
N=(M-2); // Nodos interiores
s=0.1; // constante1
r=0.8; // constante2
h=(c-a)/(M-1); // Incremento en la malla
for x=0 do
t=1:T
function y=LadoDerecho(x)
y=exp(-(x-2)^2)/8;
endfunction
Y0=((20/(20+t))^1/2)*exp(-((5+4*t)^2)/(10*(t+20))); // Condición inicial en el inicio del dominio
Y1=((20/(20+t))^1/2)*exp(-(2*(5+4*t)^2)/(5*(t+20))); // Condición inicial en el fin del dominio
function y=SolucionAnalitica(x,t)
y=((20/(20+t))^1/2)*exp(-((x-2-0.8*t)^2)/0.4*(t+20));
endfunction
end
A=zeros(N,N); // Matriz A
b=zeros(N); // Vector b
R=1/(h^2);
P=-2/(h^2);
Q=1/(h^2);
// Primer renglon de la matriz A y vector b
A(1,1)=P;
A(1,2)=Q;
b(1)=LadoDerecho(a)-Y0*R;
// Renglones intermedios de la matriz A y vector b
for i=2:N-1
A(i,i-1)=R;
A(i,i)=P;
A(i,i+1)=Q;
b(i)=LadoDerecho(a+h*(i-1));
end
// Relglon final de la matriz A y vector b
A(N,N-1)=R;
A(N,N)=P;
b(N)=LadoDerecho(a+h*N)-Y1*Q;
// Resuelve el sistema lineal Ax=b
x=inv(A)*b;

// Condición final // Grafica la solución de la Ecuación Diferencial Parcial en 1D plot2d(xx. end yy(M)=Y1.1). // Condición inicial for i=1:N yy(i+1)=x(i).// Prepara la graficación xx=zeros(M.1).t).zz]) endfunction end . zz(i)=SolucionAnalitica(xx(i). end yy=zeros(M. yy(1)=Y0.1). for i=1:M t=1:T xx(i)=a+h*(i-1). zz=zeros(M.[yy.