Suponha que entre dois ambientes 1 e 2 haja troca de calor. Sejam
e
as temperaturas, no instante
, nos ambientes 1 e 2 , respectivamente. Admita que as temperaturas estejam variando nas seguintes taxas.
Suponha que
e
. 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 .
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
com condições iniciais
e
.
O objetivo é usar o Scilab para (a) obter numericamente e
e plotar, (b) encontrar o valor máximo e mínimo de
no gráfico, e (c) repetir para
.
O objetivo é usar o Scilab para (a) obter numericamente
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\)));