Suponha que entre dois ambientes 1 e 2 haja troca de calor. Sejam T1 e T2 as temperaturas, no instante t, nos ambientes 1 e 2 , respectivamente. Admita que as temperaturas estejam variando nas seguintes taxas.
& d T1d t=4 T1-4 T2 & d T2d t=5 T1-4 T2
Suponha que T1(0)=20^circ C e T2(0)=20^circ C. Desenvolva um programa no Scilab que:
a) Mostre a variação das temperaturas com o tempo;
b) Determine a temperatura máxima e mínima do ambiente 2 , no gráfico.
c) Repita o item b para o ambiente 1 .

Passo 1

O enunciado descreve um sistema de equações diferenciais ordinárias acopladas
dT1dt=4,T1-4,T2, dT2dt=5,T1-4,T2
com condições iniciais T1(0)=20 e T2(0)=20.
O objetivo é usar o Scilab para (a) obter numericamente T1(t) e T2(t) e plotar, (b) encontrar o valor máximo e mínimo de T2 no gráfico, e (c) repetir para T1.

Passo 2

Definimos uma função em Scilab que receba o tempo e o vetor de temperaturas e retorne as derivadas. Essa função implementa o lado direito do sistema:
function dT \(=\) troca(t, T)
    // T(\(1\))\(=\)T\(1\), T(\(2\))\(=\)T\(2\)
    dT \(=\) zeros(T);          // inicializa vetor coluna
    dT(\(1\)) \(=4\)*T(\(1\)) - \(4\)*T(\(2\));
    dT(\(2\)) \(=5\)*T(\(1\)) - \(4\)*T(\(2\));
endfunction

Passo 3

Escolhemos um vetor de tempos de simulação, por exemplo de a com passo , e o vetor de condições iniciais:
t \(=0\):\(0.1\):\(10\);       // tempo de \(0\) a \(10\)
T\(0=\) [\(20\); \(20\)];      // [T\(1\)(\(0\)); T\(2\)(\(0\))]

Passo 4

Resolvemos o sistema com o comando ode, que aceita o vetor de tempos e a função que retorna as derivadas:
T \(=\) ode(T\(0\), t, troca);  
T\(1=\) T(\(1\), :);    // extraindo a primeira linha
T\(2=\) T(\(2\), :);    // extraindo a segunda linha

Passo 5

Plotamos ambas as curvas no mesmo gráfico, com legendas e rótulos:
plot(t, T\(1\), 'r', t, T\(2\), 'b');
xlabel('t');
ylabel('Temperatura (\(\circ\)C)');
legend('T\(1\)','T\(2\)', 'location','upper right');

Passo 6

Encontramos o máximo e mínimo de usando as funções max e min, e localizamos o instante usando o índice retornado:
[\(T2_max\), \(i2_max\)] \(=\) max(T\(2\));
\(t2_max =\) t(\(i2_max\));
[\(T2_min\), \(i2_min\)] \(=\) min(T\(2\));
\(t2_min =\) t(\(i2_min\));
disp('Ambiente \(2\):');
disp(msprintf('  \(T2_{max} =\) %g \(\circ\)C em t \(=\) %g', \(T2_max\), \(t2_max\)));
disp(msprintf('  \(T2_{min} =\) %g \(\circ\)C em t \(=\) %g', \(T2_min\), \(t2_min\)));

Passo 7

Repetimos o mesmo procedimento para :
[\(T1_max\), \(i1_max\)] \(=\) max(T\(1\));
\(t1_max =\) t(\(i1_max\));
[\(T1_min\), \(i1_min\)] \(=\) min(T\(1\));
\(t1_min =\) t(\(i1_min\));
disp('Ambiente \(1\):');
disp(msprintf('  \(T1_{max} =\) %g \(\circ\)C em t \(=\) %g', \(T1_max\), \(t1_max\)));
disp(msprintf('  \(T1_{min} =\) %g \(\circ\)C em t \(=\) %g', \(T1_min\), \(t1_min\)));

Resposta

function dT \(=\) troca(t, T)
    dT \(=\) zeros(T);
    dT(\(1\)) \(=4\)*T(\(1\)) - \(4\)*T(\(2\));
    dT(\(2\)) \(=5\)*T(\(1\)) - \(4\)*T(\(2\));
endfunction

t \(=0\):\(0.1\):\(10\);
T\(0=\) [\(20\); \(20\)];
T  \(=\) ode(T\(0\), t, troca);
T\(1=\) T(\(1\), :);
T\(2=\) T(\(2\), :);

plot(t, T\(1\), 'r', t, T\(2\), 'b');
xlabel('t');
ylabel('Temperatura (\(\circ\)C)');
legend('T\(1\)','T\(2\)', 'location','upper right');

[\(T2_max\), \(i2_max\)] \(=\) max(T\(2\));
\(t2_max =\) t(\(i2_max\));
[\(T2_min\), \(i2_min\)] \(=\) min(T\(2\));
\(t2_min =\) t(\(i2_min\));
disp('Ambiente \(2\):');
disp(msprintf('  \(T2_{max} =\) %g \(\circ\)C em t \(=\) %g', \(T2_max\), \(t2_max\)));
disp(msprintf('  \(T2_{min} =\) %g \(\circ\)C em t \(=\) %g', \(T2_min\), \(t2_min\)));

[\(T1_max\), \(i1_max\)] \(=\) max(T\(1\));
\(t1_max =\) t(\(i1_max\));
[\(T1_min\), \(i1_min\)] \(=\) min(T\(1\));
\(t1_min =\) t(\(i1_min\));
disp('Ambiente \(1\):');
disp(msprintf('  \(T1_{max} =\) %g \(\circ\)C em t \(=\) %g', \(T1_max\), \(t1_max\)));
disp(msprintf('  \(T1_{min} =\) %g \(\circ\)C em t \(=\) %g', \(T1_min\), \(t1_min\)));

Exercícios relacionados