Você está na página 1de 22

MEC 2325 - Transmissão de Calor – Condução - 2021.

Lista de Exercícios L2 – Data de entrega: 17/05/2021


Prof. Florian Pradelle (pradelle@puc-rio.br)

Edgardo Rafael Castro Pacheco

1. Desenvolva um programa (em Matlab) para determinar as seis primeiras raízes β𝑖 de 𝛽. 𝑡𝑎𝑛(𝛽)
= c para 𝑐 = 0, 1 e 10.

2. Usando o formalismo das funções de Bessel do próprio Matlab, desenvolva um programa (em
Matlab) para determinar as seis primeiras raízes β𝑖 de 𝐽𝑛(β) = 0 para 𝑛 = 1, 2, 3 e 4.

3. Considere a função 𝑓(𝑥) definida como


1
0, 0≤𝑥≤
2
𝑓(𝑥) =
1
1, <𝑥≤1
{ 2
Assume que essa função possa ser representada por uma série de Fourier composta por
autofunções 𝜙𝑛(𝑥) = cos(𝑛𝜋𝑥) para 𝑛 𝜖 ℕ (inteiro natural). Pede-se:

a) os valores da norma para 𝑛 = 0 e 𝑛 > 0, respectivamente;


b) os coeficientes de Fourier para 𝑛 = 0 e 𝑛 > 0, respectivamente;
c) a serie de Fourier que representa 𝑓(𝑥);
d) uma representação gráfica comparando a função 𝑓(𝑥) com a série de Fourier truncada
com 1, 2, 5 e 100 termos, respectivamente. Comente.

4. Considere o perfil de temperatura em regime transiente em um espaço unidimensional, −𝐿 ⩽


𝑥 ⩽ 𝐿 (sistema de coordenadas cartesianas). Inicialmente, a temperatura é uniforme e igual a
𝑇1. As fronteiras em 𝑥 = −𝐿 e 𝑥 = 𝐿 encontram-se a temperatura 𝑇2.
a) Para as grandezas adimensionais adequadas (𝑥∗ = 𝑥/𝐿; 𝑡̅ = 𝛼𝑡/𝐿²; 𝑇̅ = (𝑇 − 𝑇2) / (𝑇1 − 𝑇2)),
obtenha uma expressão literal para a distribuição de temperatura 𝑇̅(𝑥∗, 𝑡̅), explicitando os
autovalores do problema;
b) Desenvolva um programa (em Matlab) para plotar o perfil de temperatura em função de
𝑥 para 𝑡 = 0,01, 0,1 e 1 s para uma placa de cobre e uma tabua de madeira,
respectivamente, assumindo 𝑇1 = 10°𝐶 e 𝑇2 = 90°𝐶.
Solução
1) Para conseguir chegar à solução dessa questão, foi necessário desenvolver a gráfica
mostrada embaixo com o objetivo de ter uma maior compreensão do requerimento.

Situação de estudo
20

15

10

0
0.00 2.00 4.00 6.00 8.00 10.00 12.00 14.00 16.00
-5

-10

-15

-20

c=10 c=1 c=0 B*tan(B)

Figura 1. Situação de estudo, cortes da função 𝛽𝑡𝑎𝑛(𝛽) con os valores de c.

Vemos que a solução do problema radica em achar os valores nos que a função 𝛽𝑡𝑎𝑛(𝛽) iguala
os valores constantes 0, 1 e 10 respetivamente.
Para a solução desse problema, foi necessário criar as seguintes funções no Matlab, uma para
cada valor que vai ter c. Todas elas criadas procurando o uso da função fzero do Matlab.

Para c=0:
function y=ftan0(x)
y=x*tan(x);
end

Para c=1:
function y=ftan1(x)
y=x*tan(x)-1;
end

Para c=10:
function y=ftan10(x)
y=x*tan(x)-10;
end
O código final desenvolvido para esses cálculos segue embaixo:
clear
clc
%%
fprintf(' Função para c=0:\n');
fprintf('=> B*tan(B)\n\n');

fprintf(' Função para c=1:\n');


fprintf('=> B*tan(B)-1\n\n');

fprintf(' Função para c=10:\n');


fprintf('=> B*tan(B)-10\n\n');

%%
i=1;
n_raizes=6;

%%
fprintf('********************As 6 primeiras raizes vão ser**********************\n');
fprintf('* *\n');
while i<=n_raizes

P1=fzero(@ftan0,(i-1)*pi);
P2=fzero(@ftan1,(i-1)*pi+0.5);
P3=fzero(@ftan10,(i-1)*pi+1);

fprintf('* Raiz: %2d B_c=0:(%9.5f) B_c=1:(%9.5f) B_c=10:(%9.5f) * \n',i,P1,P2,P3);


i=i+1;
end
fprintf('* *\n');
fprintf('***********************************************************************\n\n');

As faixas para o cálculo desses zeros, foram estabelecidas fazendo uso da Figura 1. Situação de
estudo, cortes da função 𝛽𝑡𝑎𝑛(𝛽) con os valores de c. como guia. Os valores de 0,5 e 1 somados
para as faixas das funções de c=1 e c=10, são estabelecidos procurando adiantar um poco a
faixa de análise por causa de valores errados calculados pela função fzero.
Os resultados encontrados são apresentados na seguinte figura (captura de tela do Command
Window do Matlab).

Figura 2. Captura de tela dos resultados do código desenvolvida na primeira questão.

Vemos que para c=0, as raízes são as mesmas raízes da função 𝑡𝑎𝑛(𝛽), já para as outras duas
condições presenta-se um deslocamento a direita das raízes de 𝑡𝑎𝑛(𝛽), batendo desse jeito com o
observado na Figura 1.
2) Para solucionar esta questão, primeiro foi necessário desenvolver uma função chamada
raices, com o objetivo de encontrar aqueles pontos onde a função mudava de sinal e
posteriormente usasse a função de Matlab fzero para calcular as raízes nesse intervalo.

function r = raices(f, x)
y=f(x);
indices=find(y(1:end-1).*y(2:end)<0);
r=zeros(1,6);
for k=1:6
r(k)=fzero(f, [x(indices(k)), x(indices(k)+1)]);
end
end

Depois foi criado o código que com ajuda da função raízes, ia calcular esses valores para as
funções de Bessel da ordem pedida. O código desenvolvido foi escrito como se apresenta a
continuação.
clear
clc

hold on

fprintf('************************************************************\n');
for n=1:4
f=@(x) besselj(n,x);
fplot(f,[0,20], 'displayName',num2str(n));
x=linspace(0,40,40);
k=raices(f,x);
fprintf('* J_%1d(x): *\n',n);
fprintf('* Raiz 1:(%8.5f) Raiz 2:(%8.5f) Raiz 2:(%8.5f) * \n',k(1),k(2),k(3));
fprintf('* Raiz 4:(%8.5f) Raiz 5:(%8.5f) Raiz 6:(%8.5f) * \n',k(4),k(5),k(6));
fprintf('* *\n');
end
fprintf('************************************************************\n');
legend('-DynamicLegend','location','Best')
xlabel('x')
ylabel('J(x)')
title('Funciones J_n(x) de Bessel')
grid on
hold off

Alias de encontrar as raízes (6 primeiras raízes) o código plota as funções de Bessel da ordem
solicitada e são mostradas na figura que segue.

Figura 3. Gráfica das funções de Bessel da ordem 1, 2, 3 e 4.


E as seis primeiras raízes das funções de Bessel da ordem 1, 2, 3 e 4, podem-se apreciar na
figura que segue (captura de tela do Command Window de Matlab).

Figura 4. Captura de tela dos resultados das seis primeiras raízes das funções de Bessel solicitadas

Vemos como os resultados vão acordes com os cortes com o eixo x para cada uma das funções,
garantindo desse jeito a veracidade dos resultados calculados pelo código.
3)
d. O código desenvolvido para a plotagem das curvas deste apartado, é apresentado a
continuação.

clear
clc

hold on
grid on
%% Função Por ramos
x=0:0.01:1;
fx=0*(x>=0)+(x>1/2);
plot(x,fx,'b','LineWidth',2)
xlabel('x')
ylabel('f(x)')
%% Série de Fourier
SF=-0.5;
for n=1:100

Fou=-2*sin(n*pi/2)*cos(n*pi*x)/(n*pi);
SF=SF+Fou;
pause(0.25)
switch n

case 1
plot(x,SF)
case 2
plot(x,SF)

case 5
plot(x,SF)

case 100
plot(x,SF)
end

end
plot(x,SF)
legend('f(x)','n:1','n:2','n:5','n:100','location','south east')

Na seguinte figura mostram-se a função 𝑓(𝑥) original (na cor azul) e os resultados para a série de
Fourier para um termo, dois termos, 5 termos e 100 termos.

Figura 5. Resultados da série de Fourier para 𝑓(𝑥), para 1, 2, 5 e 100 termos.

Vemos como primeira conclusão que as series para 1 e 2 são iguais (encontram-se superpostos),
comprovando que os termos para n par se tornam zero, seguidamente apreciamos que assim
que aumenta o numero de termos a série de Fourier tendo a descrever melhor a função 𝑓(𝑥).
Mesmo que descreve melhor a série com maior quantidade de termos, logo disso, ainda que
foram desenvolvidos todos os passos, a constante 𝐶0 tem o valor de (-1/2), gerando um desfaze
de quase uma unidade nos valores da função.
Si caso contrário, se o valor de 𝐶0 for 1/2, o resultado dessa aproximação por série de Fourier
seria o mostrado na seguinte figura.
Figura 6. Resultados da série de Fourier para 𝑓(𝑥), para 1, 2, 5 e 100 termos corrigindo 𝐶0 = 1⁄2.

Vemos que na mudança de -1/2 para ½ resolve o desfaze com o eixo Y, conseguindo uma muito
boa descrição da função.
O código desenvolvido para a plotagem da situação e descrito embaixo.

clear
clc

hold on
xlabel('x*')
ylabel('T')
legend('-DynamicLegend','location','Best')
lgd = legend;
lgd.Title.String = 't (s)';
ylim([0 1])
grid on

raizes=15;
L=0.020; %m
Bi=2;
t=[0.01,0.1,1]; %s
alfa=117.e-6; %1/°C

syms B

fun=B*tan(B)-Bi;
Matfun=matlabFunction(fun);

cont=1;
lambda=zeros(1,raizes);
for n=1:200

if cont>=raizes+1
break
end
lambda(cont)=fsolve(Matfun,n);
if cont==1
cont=cont+1;
elseif cont>=2 && abs(lambda(cont)-lambda(cont-1))>=1.e-3
cont=cont+1;
end
end

for m=1:3

Tao=alfa*t(m)/L^2;
TetaT0=0;
for i=1:raizes
x=linspace(0,1,50);
TetaT=4*sin(lambda(i))*exp(-
(lambda(i)^2)*Tao)*cos(lambda(i)*x)/(2*lambda(i)+sin(2*lambda(i)));
TetaT0=TetaT0+TetaT;

end
pause(0.05)
plot(x,TetaT0,'displayName',num2str(t(m)))

end

Os resultados são mostrados graficamente na figura que segue e podemos apreciar que a maior
tempo o perfil de temperatura é mais suave, não tem uma mudança, muito agressiva como é o
caso de um tempo de 0,01 s, onde cai ao redor de um 10% no 10% final do comprimento da
placa.
É necessário aclarar que o resultado presentado encontra-se baseado numa série com as 15
primeiras raízes da equação transcendental 𝜆𝑛 𝑡𝑎𝑛𝜆𝑛 = 𝐵𝑖, valor determinado este, logo de fazer
a análise para 5, 10, 15, 20, 25 e superiores, notando que não tinha uma melhoria significativa
acima desse valor de 15 raízes.
Figura 7. Resultados da temperatura adimensional para o problema de estudo a diferentes tempos.

Você também pode gostar