Sunteți pe pagina 1din 9

function z=explicito1(xl,xr,yb,yt,M,N)%Declaramos la función implícita

%Declaramos la función explícito con parámetros xl,xr (cotas) que están en el eje
espacial y yb,yt (cotas) en el eje temporal,además las cantidades M y N son las
cantidades por la cual dividiremos los subintervalos tanto en el eje espacial como
en el eje temporal respectivamente.
f=@(x) sin(pi*x);%Es la función en x que forma parte de las condiciones iniciales
l=@(t) 0*t;%Función temporal
r=@(t) 0*t;%Función temporal
D=1;%Coeficiente de conductividad térmica
h=(xr-xl)/M;%el paso espacial
k=(yt-yb)/N;%el paso temporal
m=M-1;%dimensiones de la matriz (número de filas )
n=N;%Dimensión de la matriz (número de columnas )
sigma=(D^2)*k/(h*h);%Es la constante que esta en la matriz
a=diag(1-2*sigma*ones(m,1))+diag(sigma*ones(m-1,1),1);
%Creamos una matriz diagonal principal y además la diagonal secundaria superior
a=a+diag(sigma*ones(m-1,1),-1);%Creamos la segunda diagonal secundaria inferior
lside=l(yb+(0:n)*k);%Creamos un vector con valores de l en t
rside=r(yb+(0:n)*k);%Creamos un vector con valores de r en t
w(:,1)=f(xl+(1:m)*h);%Creamos una matriz columna de n filas con valores e f en x
for j=1:n %Construimos la matriz w de n columnas
w(:,j+1)=a*w(:,j)+sigma*[lside(j);zeros(m-2,1);rside(j)];%En esta línea
aplicamos el método explicito
end
w=[lside;w;rside];%Reúne los valores
z=w';
x=(0:m+1)*h;%Es el vector espacial
t=(0:n)*k;%Es el vector temporal
mesh(x,t,w')%Función para graficar
view(60,30);
%axis([xl xr yb yt -1 1])
figure(2)
for i =1:N
plot (z(i,:))
hold on
end
end
function z=explicito1(xl,xr,yb,yt,M,N)%Declaramos la función implícita
%Declaramos la función explícito con parámetros xl,xr (cotas) que están en el eje
espacial y yb,yt (cotas) en el eje temporal,además las cantidades M y N son las
cantidades por la cual dividiremos los subintervalos tanto en el eje espacial como
en el eje temporal respectivamente.
f=@(x) exp(x);%Es la función en x que forma parte de las condiciones iniciales
l=@(t) exp(2*t);%Función temporal
r=@(t) exp(2*t+1);%Función temporal
D=2^0.5;%Coeficiente de conductividad térmica
h=(xr-xl)/M;%el paso espacial
k=(yt-yb)/N;%el paso temporal
m=M-1;%dimensiones de la matriz (número de filas )
n=N;%Dimensión de la matriz (número de columnas )
sigma=(D^2)*k/(h*h);%Es la constante que esta en la matriz
a=diag(1-2*sigma*ones(m,1))+diag(sigma*ones(m-1,1),1);
%Creamos una matriz diagonal principal y además la diagonal secundaria superior
a=a+diag(sigma*ones(m-1,1),-1);%Creamos la segunda diagonal secundaria inferior
lside=l(yb+(0:n)*k);%Creamos un vector con valores de l en t
rside=r(yb+(0:n)*k);%Creamos un vector con valores de r en t
w(:,1)=f(xl+(1:m)*h);%Creamos una matriz columna de n filas con valores e f en x
for j=1:n %Construimos la matriz w de n columnas
w(:,j+1)=a*w(:,j)+sigma*[lside(j);zeros(m-2,1);rside(j)];%En esta línea
aplicamos el método explicito
end
w=[lside;w;rside];%Reúne los valores
z=w';
x=(0:m+1)*h;%Es el vector espacial
t=(0:n)*k;%Es el vector temporal
mesh(x,t,w')%Función para graficar
view(60,30);
%axis([xl xr yb yt -1 1])
figure(2)
for i =1:N
plot (z(i,:))
hold on
end
fprintf('\n sigma = %2.3f.',sigma);
if sigma<=1/2
fprintf('\n Este sigma %2.3f nos asegura la convergencia de la solución',
sigma);
else
fprintf('\n Este sigma no garantiza la convergencia de la solucion.')
end
Con respecto a la aproximación es muy buena, ya que nuestra sigma es menor que 0.5, entonces eso
implica que hay una convergencia en la solución para este método.
function z=explicito1(xl,xr,yb,yt,M,N)%Declaramos la función implícita %Declaramos
la función explícito con parámetros xl,xr (cotas) que están en el eje espacial y
yb,yt (cotas) en el eje temporal,además las cantidades M y N son las cantidades
por la cual dividiremos los subintervalos tanto en el eje espacial como en el eje
temporal respectivamente.f=@(t) 1-abs(2*t-1);%Es la función en x que forma parte
de las condiciones iniciales

l=@(t) 0*t;%Función temporal


r=@(t) 0*t;%Función temporal
D=2^0.5;%Coeficiente de conductividad térmica
h=(xr-xl)/M;%el paso espacial
k=(yt-yb)/N;%el paso temporal
m=M-1;%dimensiones de la matriz (número de filas )
n=N;%Dimensión de la matriz (número de columnas )
sigma=(D^2)*k/(h*h);%Es la constante que esta en la matriz
a=diag(1-2*sigma*ones(m,1))+diag(sigma*ones(m-1,1),1);
%Creamos una matriz diagonal principal y además la diagonal secundaria superior
a=a+diag(sigma*ones(m-1,1),-1);%Creamos la segunda diagonal secundaria inferior
lside=l(yb+(0:n)*k);%Creamos un vector con valores de l en t
rside=r(yb+(0:n)*k);%Creamos un vector con valores de r en t
w(:,1)=f(xl+(1:m)*h);%Creamos una matriz columna de n filas con valores e f en x
for j=1:n %Construimos la matriz w de n columnas
w(:,j+1)=a*w(:,j)+sigma*[lside(j);zeros(m-2,1);rside(j)];%En esta línea
aplicamos el método explicito
end
w=[lside;w;rside];%Reúne los valores
z=w';
x=(0:m+1)*h;%Es el vector espacial
t=(0:n)*k;%Es el vector temporal
mesh(x,t,w')%Función para graficar
view(60,30);
%axis([xl xr yb yt -1 1])
figure(2)
for i =1:N
plot (z(i,:))
hold on
end
fprintf('\n sigma = %2.3f.',sigma);
if sigma<=1/2
fprintf('\n Este sigma %2.3f nos asegura la convergencia de la solución',
sigma);
else
fprintf('\n Este sigma no garantiza la convergencia de la solucion.')
end
Solucion:

Veamos primero los datos que tenemos, luego pasaremos a plantear nuestro modelo matemático. Se
tiene una solución de urea contenida en un tubo de 1cm de diámetro interior con una concentración
incial de 0.02g/litro,y la difusividad de la úrea es D=0.017cm2/h.

(0,0.02)

ÚREA
(20,0)

Se puede observar que la parte de verde representa la solución desvaneciéndose a lo largo del tubo
hasta llegar a los 20 cm. Desde que la concentración inicial es de 0.02 g/litro y al final queda en 0
g/litro, o sea , desciende linealmente la concentración.
Entonces nuestra ecuación quedaría de la siguiente manera:

∂C ∂2 C
= D2 2
{ ∂t ∂x
𝐷: 𝐷𝑖𝑓𝑢𝑠𝑖𝑣𝑖𝑑𝑎𝑑 𝑑𝑒 𝑙𝑎 ú𝑟𝑒𝑎

C(x,0)=-0.001x+0.02, x ∈ [0; 20], esto nos da a entender que tenemos la condición inicial de nuestro
problema. Las funciones:
C(0,t)=2 g/litro , t ∈ (0; 0.16666)
C(20,t)=0 g/litro, t ∈ (0; 0.16666)
Se tiene que el procedimiento se trabaja en los primeros 10 min, entonces tenemos 1/6 de hora.
function z=explicito1(xl,xr,yb,yt,M,N)%Declaramos la función implícita
%Declaramos la función explícito con parámetros xl,xr (cotas) que están en
el eje espacial y yb,yt (cotas) en el eje temporal,además las cantidades M
y N son las cantidades por la cual dividiremos los subintervalos tanto en
el eje espacial como en el eje temporal respectivamente.
f=@(t) -0.001*t+0.02;%Es la función en x que forma parte de las condiciones
iniciales
l=@(t) 2+0*t;%Función temporal
r=@(t) 0*t;%Función temporal
D=0.017;%Coeficiente de conductividad térmica
h=(xr-xl)/M;%el paso espacial
k=(yt-yb)/N;%el paso temporal
m=M-1;%dimensiones de la matriz (número de filas )
n=N;%Dimensión de la matriz (número de columnas )
sigma=(D^2)*k/(h*h);%Es la constante que esta en la matriz
a=diag(1-2*sigma*ones(m,1))+diag(sigma*ones(m-1,1),1);
%Creamos una matriz diagonal principal y además la diagonal secundaria
superior
a=a+diag(sigma*ones(m-1,1),-1);%Creamos la segunda diagonal secundaria
inferior
lside=l(yb+(0:n)*k);%Creamos un vector con valores de l en t
rside=r(yb+(0:n)*k);%Creamos un vector con valores de r en t
w(:,1)=f(xl+(1:m)*h);%Creamos una matriz columna de n filas con valores e f
en x
for j=1:n %Construimos la matriz w de n columnas
w(:,j+1)=a*w(:,j)+sigma*[lside(j);zeros(m-2,1);rside(j)];%En esta línea
aplicamos el método explicito
end
w=[lside;w;rside];%Reúne los valores
z=w';
x=(0:m+1)*h;%Es el vector espacial
t=(0:n)*k;%Es el vector temporal
mesh(x,t,w')%Función para graficar
view(60,30);%axis([xl xr yb yt -1 1])
figure(2)
for i =1:N
plot (z(i,:))
hold on
end
fprintf('\n sigma = %2.3f.',sigma);
if sigma<=1/2
fprintf('\n Este sigma %2.3f nos asegura la convergencia de la
solución', sigma);
else
fprintf('\n Este sigma no garantiza la convergencia de la solucion.')
end

S-ar putea să vă placă și