Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Solución:
Se genero un código en Matlab para la solución y visualización de los
resultados del problema
A) PARA UN NUMERO DE NODOS N=10
Sabemos que para λ=1, no existe relación y los valores serán los mismos
por lo tanto el error será 0.
Código fuente principal, se hará variantes en este código según como
está indicado en los comentarios (en verde).
Caso A.a)
Para un factor de sobre relajación de λ=1.2 se tiene
clear all
close all
H=10; %ancho de la placa
L=10; %largo de la placa
dx=1; %espaciado en la direccion x en la placa(cambiar en dx=0.2 y dx=0.5 para los otros casos a
analizar)
dy=1; %espaciado en la direccion y en la placa(cambiar en dy=0.2 y dy=0.5 para los otros casos a
analizar)
alpha=(dx/dy)^(2);
lambda=1.5;%factor de relajación(cambiar a 1.2 o 1.5 para los otros casos a analizar)
nx=floor(L/dx)+1; %numero de particiones en x
ny=floor(H/dy)+1; %numero de particiones en y
%enmallado del dominio(placa plana delgada calentada)
for j=1:ny
for i=1:nx
x(i,j)=(i-1)*dx;
y(i,j)=(j-1)*dy;
T(i,j,1)=0; %valor inicial de la temperatura
end
end
km=30;%numero de iteraciones tope para iniciar el proceso de calculo
for k=1:km
%condiciones de frontera
T(1:nx,ny,:)=100; %condicion de frontera superior
T(1:nx,1,:)=25;%condicion de frontera inferior
T(1,1:ny,:)=75;% condicion de frontera lateral izquierdo
T(nx,1:ny,:)=50;%condicion de frontera lateral derecho
for i=2:nx-1
for j=2:ny-1
T(i,j,k+1)=(T(i-1,j,k)+T(i+1,j,k)+alpha*T(i,j-1,k)+alpha*T(i,j+1,k))/(2*(1+alpha)); %ecuacion de
calculo para laplace
Tn(i,j,k+1)=lambda *T(i,j,k+1)+(1-lambda)*T(i,j,k);
end
end
errormax(k)=abs((Tn(i,j,k+1)-T(i,j,k+1))/(Tn(i,j,k+1)))
if errormax(k)>0.01
Tn(i,j,k+1)=lambda *T(i,j,k+1)+(1-lambda)*T(i,j,k);
else
break
end
kf=k;%numero de iteraciones maximas calculadas para el cual la condicion del problema se
cumple
end
x1=1:k
x2=errormax(1:k)
plot(x1,x2,'red')
grid on
title('Errores maximos vs numero de iteraciones para lanbda=1.2 y N=10','color','blue')
xlabel('Numero de iteraciones')
ylabel('Errores maximos')
Caso A.b)
Para un factor de sobre relajación de λ=1.5 se tiene
clear all
close all
H=10; %ancho de la placa
L=10; %largo de la placa
dx=1; %espaciado en la direccion x en la placa(cambiar en dx=0.2 y dx=0.5 para los otros casos a
analizar)
dy=1; %espaciado en la direccion y en la placa(cambiar en dy=0.2 y dy=0.5 para los otros casos a
analizar)
alpha=(dx/dy)^(2);
lambda=1.5;%factor de relajación(cambiar a 1.2 o 1.5 para los otros casos a analizar)
nx=floor(L/dx)+1; %numero de particiones en x
ny=floor(H/dy)+1; %numero de particiones en y
%enmallado del dominio(placa plana delgada calentada)
for j=1:ny
for i=1:nx
x(i,j)=(i-1)*dx;
y(i,j)=(j-1)*dy;
T(i,j,1)=0; %valor inicial de la temperatura
end
end
km=30;%numero de iteraciones tope para iniciar el proceso de calculo
for k=1:km
%condiciones de frontera
T(1:nx,ny,:)=100; %condicion de frontera superior
T(1:nx,1,:)=25;%condicion de frontera inferior
T(1,1:ny,:)=75;% condicion de frontera lateral izquierdo
T(nx,1:ny,:)=50;%condicion de frontera lateral derecho
for i=2:nx-1
for j=2:ny-1
T(i,j,k+1)=(T(i-1,j,k)+T(i+1,j,k)+alpha*T(i,j-1,k)+alpha*T(i,j+1,k))/(2*(1+alpha)); %ecuacion de
calculo para laplace
Tn(i,j,k+1)=lambda *T(i,j,k+1)+(1-lambda)*T(i,j,k);
end
end
errormax(k)=abs((Tn(i,j,k+1)-T(i,j,k+1))/(Tn(i,j,k+1)))
if errormax(k)>0.01
Tn(i,j,k+1)=lambda *T(i,j,k+1)+(1-lambda)*T(i,j,k);
else
break
end
kf=k;%numero de iteraciones maximas calculadas para el cual la condicion del problema se
cumple
end
x1=1:k
x2=errormax(1:k)
plot(x1,x2,'red')
grid on
title('Errores maximos vs numero de iteraciones para lambda =1.5 y N=10','color','blue')
xlabel('Numero de iteraciones')
ylabel('Errores maximos')
B) PARA UN NUMERO DE NODOS N=20
caso B.a
a) para un factor de sobre relajación de λ=1.2 se tiene:
clear all
close all
H=10; %ancho de la placa
L=10; %largo de la placa
dx=0.5; %espaciado en la direccion x en la placa(cambiar en dx=0.2 y dx=0.5 para los otros casos
a analizar)
dy=0.5; %espaciado en la direccion y en la placa(cambiar en dy=0.2 y dy=0.5 para los otros casos a
analizar)
alpha=(dx/dy)^(2);
lambda=1.2;%factor de relajación(cambiar a 1.2 o 1.5 para los otros casos a analizar)
nx=floor(L/dx)+1; %numero de particiones en x
ny=floor(H/dy)+1; %numero de particiones en y
%enmallado del dominio(placa plana delgada calentada)
for j=1:ny
for i=1:nx
x(i,j)=(i-1)*dx;
y(i,j)=(j-1)*dy;
T(i,j,1)=0; %valor inicial de la temperatura
end
end
km=30;%numero de iteraciones tope para iniciar el proceso de calculo
for k=1:km
%condiciones de frontera
T(1:nx,ny,:)=100; %condicion de frontera superior
T(1:nx,1,:)=25;%condicion de frontera inferior
T(1,1:ny,:)=75;% condicion de frontera lateral izquierdo
T(nx,1:ny,:)=50;%condicion de frontera lateral derecho
for i=2:nx-1
for j=2:ny-1
T(i,j,k+1)=(T(i-1,j,k)+T(i+1,j,k)+alpha*T(i,j-1,k)+alpha*T(i,j+1,k))/(2*(1+alpha)); %ecuacion de
calculo para laplace
Tn(i,j,k+1)=lambda *T(i,j,k+1)+(1-lambda)*T(i,j,k);
end
end
errormax(k)=abs((Tn(i,j,k+1)-T(i,j,k+1))/(Tn(i,j,k+1)))
if errormax(k)>0.01
Tn(i,j,k+1)=lambda *T(i,j,k+1)+(1-lambda)*T(i,j,k);
else
break
end
kf=k;%numero de iteraciones maximas calculadas para el cual la condicion del problema se
cumple
end
x1=1:k
x2=errormax(1:k)
plot(x1,x2,'green')
grid on
title('Errores maximos vs numero de iteraciones para lambda =1.2 y N=20','color','red')
xlabel('Numero de iteraciones')
ylabel('Errores maximos')
caso B.b
b) para un factor de sobre relajación de λ=1.5 se tiene:
clear all
close all
H=10; %ancho de la placa
L=10; %largo de la placa
dx=0.5; %espaciado en la direccion x en la placa(cambiar en dx=0.2 y dx=0.5 para los otros casos
a analizar)
dy=0.5; %espaciado en la direccion y en la placa(cambiar en dy=0.2 y dy=0.5 para los otros casos a
analizar)
alpha=(dx/dy)^(2);
lambda=1.5;%factor de relajación(cambiar a 1.2 o 1.5 para los otros casos a analizar)
nx=floor(L/dx)+1; %numero de particiones en x
ny=floor(H/dy)+1; %numero de particiones en y
%enmallado del dominio(placa plana delgada calentada)
for j=1:ny
for i=1:nx
x(i,j)=(i-1)*dx;
y(i,j)=(j-1)*dy;
T(i,j,1)=0; %valor inicial de la temperatura
end
end
km=30;%numero de iteraciones tope para iniciar el proceso de calculo
for k=1:km
%condiciones de frontera
T(1:nx,ny,:)=100; %condicion de frontera superior
T(1:nx,1,:)=25;%condicion de frontera inferior
T(1,1:ny,:)=75;% condicion de frontera lateral izquierdo
T(nx,1:ny,:)=50;%condicion de frontera lateral derecho
for i=2:nx-1
for j=2:ny-1
T(i,j,k+1)=(T(i-1,j,k)+T(i+1,j,k)+alpha*T(i,j-1,k)+alpha*T(i,j+1,k))/(2*(1+alpha)); %ecuacion de
calculo para laplace
Tn(i,j,k+1)=lambda *T(i,j,k+1)+(1-lambda)*T(i,j,k);
end
end
errormax(k)=abs((Tn(i,j,k+1)-T(i,j,k+1))/(Tn(i,j,k+1)))
if errormax(k)>0.01
Tn(i,j,k+1)=lambda *T(i,j,k+1)+(1-lambda)*T(i,j,k);
else
break
end
kf=k;%numero de iteraciones maximas calculadas para el cual la condicion del problema se
cumple
end
x1=1:k
x2=errormax(1:k)
plot(x1,x2,'green')
grid on
title('Errores maximos vs numero de iteraciones para lambda =1.5 y N=20','color','red')
xlabel('Numero de iteraciones')
ylabel('Errores maximos')
C) PARA UN NUMERO DE NODOS N=50
caso C.a
a) para un factor de sobre relajación de λ=1.2 se tiene:
clear all
close all
H=10; %ancho de la placa
L=10; %largo de la placa
dx=0.2; %espaciado en la direccion x en la placa(cambiar en dx=0.2 y dx=0.5 para los otros casos
a analizar)
dy=0.2; %espaciado en la direccion y en la placa(cambiar en dy=0.2 y dy=0.5 para los otros casos a
analizar)
alpha=(dx/dy)^(2);
lambda=1.2;%factor de relajación(cambiar a 1.2 o 1.5 para los otros casos a analizar)
nx=floor(L/dx)+1; %numero de particiones en x
ny=floor(H/dy)+1; %numero de particiones en y
%enmallado del dominio(placa plana delgada calentada)
for j=1:ny
for i=1:nx
x(i,j)=(i-1)*dx;
y(i,j)=(j-1)*dy;
T(i,j,1)=0; %valor inicial de la temperatura
end
end
km=30;%numero de iteraciones tope para iniciar el proceso de calculo
for k=1:km
%condiciones de frontera
T(1:nx,ny,:)=100; %condicion de frontera superior
T(1:nx,1,:)=25;%condicion de frontera inferior
T(1,1:ny,:)=75;% condicion de frontera lateral izquierdo
T(nx,1:ny,:)=50;%condicion de frontera lateral derecho
for i=2:nx-1
for j=2:ny-1
T(i,j,k+1)=(T(i-1,j,k)+T(i+1,j,k)+alpha*T(i,j-1,k)+alpha*T(i,j+1,k))/(2*(1+alpha)); %ecuacion de
calculo para laplace
Tn(i,j,k+1)=lambda *T(i,j,k+1)+(1-lambda)*T(i,j,k);
end
end
errormax(k)=abs((Tn(i,j,k+1)-T(i,j,k+1))/(Tn(i,j,k+1)))
if errormax(k)>0.01
Tn(i,j,k+1)=lambda *T(i,j,k+1)+(1-lambda)*T(i,j,k);
else
break
end
kf=k;%numero de iteraciones maximas calculadas para el cual la condicion del problema se
cumple
end
x1=1:k
x2=errormax(1:k)
plot(x1,x2,'red')
grid on
title('Errores maximos vs numero de iteraciones para lambda =1.2 y N=50','color','blue')
xlabel('Numero de iteraciones')
ylabel('Errores maximos')
caso C.b
b) para un factor de sobre relajación de λ=1.5 se tiene:
clear all
close all
H=10; %ancho de la placa
L=10; %largo de la placa
dx=0.2; %espaciado en la direccion x en la placa(cambiar en dx=0.2 y dx=0.5 para los otros casos
a analizar)
dy=0.2; %espaciado en la direccion y en la placa(cambiar en dy=0.2 y dy=0.5 para los otros casos a
analizar)
alpha=(dx/dy)^(2);
lambda=1.5;%factor de relajación(cambiar a 1.2 o 1.5 para los otros casos a analizar)
nx=floor(L/dx)+1; %numero de particiones en x
ny=floor(H/dy)+1; %numero de particiones en y
%enmallado del dominio(placa plana delgada calentada)
for j=1:ny
for i=1:nx
x(i,j)=(i-1)*dx;
y(i,j)=(j-1)*dy;
T(i,j,1)=0; %valor inicial de la temperatura
end
end
km=30;%numero de iteraciones tope para iniciar el proceso de calculo
for k=1:km
%condiciones de frontera
T(1:nx,ny,:)=100; %condicion de frontera superior
T(1:nx,1,:)=25;%condicion de frontera inferior
T(1,1:ny,:)=75;% condicion de frontera lateral izquierdo
T(nx,1:ny,:)=50;%condicion de frontera lateral derecho
for i=2:nx-1
for j=2:ny-1
T(i,j,k+1)=(T(i-1,j,k)+T(i+1,j,k)+alpha*T(i,j-1,k)+alpha*T(i,j+1,k))/(2*(1+alpha)); %ecuacion de
calculo para laplace
Tn(i,j,k+1)=lambda *T(i,j,k+1)+(1-lambda)*T(i,j,k);
end
end
errormax(k)=abs((Tn(i,j,k+1)-T(i,j,k+1))/(Tn(i,j,k+1)))
if errormax(k)>0.01
Tn(i,j,k+1)=lambda *T(i,j,k+1)+(1-lambda)*T(i,j,k);
else
break
end
kf=k;%numero de iteraciones maximas calculadas para el cual la condicion del problema se
cumple
end
x1=1:k
x2=errormax(1:k)
plot(x1,x2)
grid on
title('Errores maximos vs numero de iteraciones para lambda =1.5 y N=50','color','red')
xlabel('Numero de iteraciones')
ylabel('Errores maximos')
• Resuelva el problema de la placa plana sin generación de calor con condiciones que
se indican en la figura utilizando 10, 20, y 50 nodos distribuidos uniformemente en las
direcciones coordenadas
– Utilice un e=0.01
– Considere que en t=0 la temperatura en toda la placa es de 0ºC
– Haga sus cálculos para un t final=100s y un Dt=5s con l=1
PROBLEMA 3
Solución
3.a)
clear all
close all
clc
Tmax = 30;
dt = 1;
nt = Tmax/dt +1;
T = zeros(nx,ny,nt);
for i = 1:nx
if (i-1)*dx>=L/2
break
end
T(i,1,:) = 100;
T(i,ny,:) = 75;
end
for i = nx/2+1
for j = 1
T(i,j,:) = 50;
end
for j = 10
T(i,j,:) = 50;
end
end
for i = nx/2+2
for j = 1
T(i,j,:) = 50;
end
for j = ny
T(i,j,:) = 50;
end
end
for i = nx/2+3
for j = 1:2
T(i,j,:) = 50;
end
for j = 9:ny
T(i,j,:) = 50;
end
end
for i = nx/2+4
for j = 1:3
T(i,j,:) = 50;
end
for j = 8:ny
T(i,j,:) = 50;
end
end
for i = nx/2+5
for j = 1:ny
T(i,j,:) = 50;
end
end
k = 20; %Juega on este valor
lambda = k*(dt/dx^2);
for t = 1:nt-1
%Parte Cuadrada
for i = 2:nx/2
for j = 2:ny-1
T(i,j,t+1) = T(i,j,t) + (lambda/2)*(T(i+1,j,t) + T(i-1,j,t) - 2*T(i,j,t)) + (lambda/2)*(T(i,j+1,t) +
T(i,j-1,t) - 2*T(i,j,t));
end
end
for t = 1:nt
surf(X,Y,T(:,:,t))
shading interp;
axis([0 60 0 60 0 100])
F(t) = getframe;
end
3.a)
3.c)