Este documento describe el método de Crank-Nicholson para resolver la ecuación de difusión de calor en una dimensión. Presenta la implementación numérica del método incluyendo la discretización espacial y temporal, y las condiciones de contorno. Finalmente, grafica la solución para diferentes pasos de tiempo.
0 calificaciones0% encontró este documento útil (0 votos)
14 vistas4 páginas
Este documento describe el método de Crank-Nicholson para resolver la ecuación de difusión de calor en una dimensión. Presenta la implementación numérica del método incluyendo la discretización espacial y temporal, y las condiciones de contorno. Finalmente, grafica la solución para diferentes pasos de tiempo.
Este documento describe el método de Crank-Nicholson para resolver la ecuación de difusión de calor en una dimensión. Presenta la implementación numérica del método incluyendo la discretización espacial y temporal, y las condiciones de contorno. Finalmente, grafica la solución para diferentes pasos de tiempo.
Este documento describe el método de Crank-Nicholson para resolver la ecuación de difusión de calor en una dimensión. Presenta la implementación numérica del método incluyendo la discretización espacial y temporal, y las condiciones de contorno. Finalmente, grafica la solución para diferentes pasos de tiempo.
Descargue como DOCX, PDF, TXT o lea en línea desde Scribd
Descargar como docx, pdf o txt
Está en la página 1de 4
function x=gseidel(A,b,tol,imax)
n=max(size(A)); % Obtenemos de la matriz A
% el número de ecuaiones % y por ende de incognitas. c=diag(A); % Almacenamos en 'c' los elementos % de la diagonal principal. d=1; i=1; while (d~=0)&&(i<n) % revisamos si en la diagonal principal 'c' d=c(i,1)*c(i+1,1); % existe algún elemento igual a 0. i=i+1; % En caso de que lo haya end % salir del bucle y d=0.
while d==0 % Si se ha detectado algún cero en la
B(1,:)=A(n,:); % diagonal principal se entra en este bucle U(1,1)=b(n,1); % para así cambiar las filas. Se alternarán for i=2:n % las filas hasta que todos los elementos B(i,:)=A(i-1,:);% de la diagonal principal U(i,1)=b(i-1,1);% sean distintos de cero. end % Todo esto para evitar una división A=B; % por cero. Aunque se recomienda b=U; % siempre ordenar las ecuaciones apriori. c=diag(A); d=1;i=1; while (d~=0)&&(i<n) d=c(i,1)*c(i+1,1); i=i+1; end end
% Se selecciona un vector X(n,1) sólo para evaluar
% el error en la primera iteración. for i=1:n X(i,1)=b(i,1)/A(i,i); end
% se sespecifica el vector x(n,1) con valores iguales a cero
% para iniciar las iteraciones. x=zeros(n,1);
err=tol+1; iter=1;
% Se inician las iteraciones
while (tol<err)&&(iter<imax) for i=1:n if i==1 sum=0; for j=i+1:n sum=A(i,j)*x(j,1)+sum; end x(i,1)=(b(i,1)-sum)/A(i,i); end if i==n sum=0; for j=i-1:-1:1 sum=A(i,j)*x(j,1)+sum; end x(i,1)=(b(i,1)-sum)/A(i,i);
TRANSFERENCIA DE CALOR ING. ELI GUAYAN
end if 2<=i<=n-1 sum1=0; for j=i+1:n sum1=A(i,j)*x(j,1)+sum1; end sum2=0; for j=i-1:-1:1 sum2=A(i,j)*x(j,1)+sum2; end x(i,1)=(b(i,1)-sum1-sum2)/A(i,i); end end err=abs((x-X)./x); err=max(err); X=x; iter=iter+1; end
Solución :
Las temperaturas correspondientes son
% Difusión de calor por el método de Crank Nicholson
clear;
TRANSFERENCIA DE CALOR ING. ELI GUAYAN
% Parametros definidos por el espacio y tiempo L = 1.; % Longitud de la placa T =1.; % Tiempo final % Parametros necesarios para poder resolver la ecuación de Crank Nicholson maxk = 2500; % Numero máximo de intervalos de tiempo dt = T/maxk; n = 50.; % Numero máximo de intervalos en x dx = L/n; cond = 1/2; % Conductividad b = cond*dt/(dx*dx); % parámetro del metodo % Condicion incial de la temperatura en función del tiempo for i = 1:n+1 x(i) =(i-1)*dx; u(i,1) =sin(pi*x(i)); end % Condiciones de contorno for k=1:maxk+1 u(1,k) = 0.; u(n+1,k) = 0.; time(k) = (k-1)*dt; end % Definimos la matriz Mj=MMr y Mj+1=MMl aal(1:n-2)=-b; bbl(1:n-1)=2.+2.*b; ccl(1:n-2)=-b; MMl=diag(bbl,0)+diag(aal,-1)+diag(ccl,1); aar(1:n-2)=b; bbr(1:n-1)=2.-2.*b; ccr(1:n-2)=b; MMr=diag(bbr,0)+diag(aar,-1)+diag(ccr,1); % Implementacion del metodo for k=2:maxk % Bucle de tiempo uu=u(2:n,k-1); u(2:n,k)=inv(MMl)*MMr*uu; end % Grafica del metodo figure(1) plot(x,u(:,1),'-',x,u(:,100),'-',x,u(:,300),'-',x,u(:,600),'-') title('Distribucion de temperatura con el método Crank Nicholson') xlabel('X') ylabel('T') figure(2) mesh(x,time,u') title('Distribucion de temperatura con el método Crank Nicholson ') xlabel('X') ylabel(Temperatura')