Dopo aver fatto diversi esempi con Python - Matplotlib, anche in ambito fisica tecnica (es. calcolo del rendimento macchina termica (motore a combustione)), vediamo ora un esempio risolto con l'ambiente integrato MATLAB / GNU Octave (di fatto, sono quasi identici nelle funzionalità e uguali nel codice), come parlavamo nella discussione guida per iniziare con MATLAB / GNU Octave.
Il caso in questione è l'andamento della temperatura con andamento diffusivo (diffusione termica) lungo una coordinata radiale, quindi dal centro verso l'esterno. Equazione della diffusione (applicabile anche in altri ambiti es. diffusione di una sostanza, quindi concentrazione, oppure diffusione termica, come in questo caso), con l'ipotesi di flusso stazionario, quindi equilibrio raggiunto per tempi sufficientemente grandi, da trascurare la variazione temporale.
L'equazione diventa: D * 1/r * d(r * dT/dr)dr = 0, che si risolve in modo analitico come:
T(r) = C2 + C1 * ln (r), dove
C1 = (T2-T1)/log(R2/R1),
C2=T1-log(R1)*(T2-T1)/log(R2/R1)
C1 e C2 sono due costanti, condizioni al contorno, determinate come segue:
T(R1)=T1
T(R1)=T1
Di seguito riportato il codice. Cambiando i valori a piacere, si può osservare quindi un diverso andamento della temperatura lungo la coordinata radiale (es. dal centro di un cilindro caldo/freddo verso l'estremità, con temperatura differente).
clear all
close all
clc
N=100;
T=zeros();
%dati di partenza
T1=50; %[°C]
T2=30; %[°C]
R1=1; %[m]
R2=2; %[m]
T1=T1+273.15; %conversione da °C a K
T2=T2+273.15; %conversione da °C a K
hold on
for i=1:N
C1=(T2-T1)/log(R2/R1); %CC 1
C2=T1-log(R1)*(T2-T1)/log(R2/R1); %%CC 2
T(i)=C2+C1*log(R1+i/N) %calcolo andamento temperatura
title('andamento temperatura in coordinata radiale: T(R1)=T1, T(R2)=T2');
xlabel('coordinata radiale, da R1 a R2 [m]');
ylabel('temperatura [°C]');
plot(R1+i/N*(R2-R1),T(i)-273.15)
end
Infine la rappresentazione grafica che mostra l'andamento:
Oltre agli esempi con Python - Matplotlib abbiamo visto quindi anche MATLAB / GNU Octave, un ambiente integrato interessante per avere rapidamente degli output grafici. Per quanto riguarda l'efficienza del codice, dal Benchmark performance C, Python, MATLAB - GNU Octave, JavaScript, PHP abbiamo visto che la differenza rispetto a C/C++ è spaventosa! Dove viene richiesta elevata efficienza (es. grande richiesta computazionale) è bene quindi preferire un ambiente e quindi anche linguaggio più efficiente.