Files
report-temperatura/report.md
Davide Grilli 640c9a7aed aggiunti fit doppio esponenziale e grafico di confronto
- fit_doppio_esponenziale.py: modello T∞ + A1·exp + A2·exp con TRF,
  pesi nulli su [115.9–117.2 s], R²=0.9991
- plot_confronto_fit.py: sovrapposizione dei fit singoli sui dati raw,
  motivazione visiva per la combinazione lineare
- report.md: sezione 2.4 con motivazione, equazione, parametri stimati e grafici
2026-04-01 11:50:38 +02:00

195 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Analisi termica — Scatola su linea di forno
Campionamento IR della temperatura di una scatola che attraversa un forno su linea di produzione.
Finestra di osservazione: **0.2 s → 133.7 s** (133.5 s totali, 888 campioni).
---
## 1. Dati e analisi preliminare
### 1.1 Dati grezzi
Il grafico seguente riporta il profilo termico completo acquisito dal sensore IR, a partire da t = 105 s.
Sono mostrate le due curve: temperatura ambiente e temperatura della scatola.
![Profilo termico grezzo](plot_temperatura.png)
*Temperatura ambiente (blu) e temperatura scatola (arancione).*
---
### 1.2 Temperatura ambiente T∞
#### Metodologia
`T_inf` è usata come temperatura di equilibrio nel modello di raffreddamento.
È calcolata come **media ponderata sul tempo** sull'intera finestra di osservazione, con la regola dei trapezi:
$$T_{\infty} = \frac{\int_{t_i}^{t_f} T_{amb}(t)\, dt}{t_f - t_i}$$
Questo approccio è corretto con campionamento non uniforme: ogni campione pesa proporzionalmente all'intervallo di tempo che copre.
#### Risultati
| Parametro | Valore |
|---|---|
| T ambiente minima | 22.60 °C |
| T ambiente massima | 23.80 °C |
| **T∞ (media ponderata)** | **22.99 °C** |
---
## 2. Raffreddamento
Il profilo di raffreddamento è modellato con la legge di Newton:
$$T(t) = T_{\infty} + A \cdot e^{-\frac{t - t_0}{\tau}}$$
con $T_{\infty} = 22.99\ °C$ fisso. Il metodo di stima è in tutti i casi **Nonlinear Least Squares con Trust Region Reflective (TRF)**`scipy.optimize.curve_fit(..., method="trf")`.
### 2.1 Raffreddamento intero
Fit sulla finestra completa **t₀ = 115.0 s → fine osservazione**, con pesi espliciti per escludere la zona di transizione in uscita dal forno.
**Schema dei pesi:**
| Intervallo | Peso | Motivazione |
|---|---|---|
| [115.0, 115.9) s | w = 1 | Raffreddamento regolare |
| [115.9, 117.2] s | w = 0 (σ = 10¹⁰) | ERRORE DI MISURA |
| (117.2, fine] s | w = 1 | Raffreddamento regolare |
I punti nella zona arancione ricevono peso nullo: assegnando σ = 10¹⁰ il termine (residuo/σ)² → 0, rendendoli ininfluenti sul costo del fit. Entrambi i parametri $A$ e $\tau$ sono liberi.
#### Parametri stimati
| Parametro | Descrizione | Valore |
|---|---|---|
| $A$ | Sovratemperatura iniziale | **185.18 ± 0.27 °C** |
| $\tau$ | Costante di tempo | **16.27 ± 0.05 s** |
#### Curva stimata
$$T(t) = 22.99 + 185.18 \cdot e^{-\frac{t - 115.0}{16.27}} \quad [°C]$$
#### Bontà del fit
| Metrica | Valore | Nota |
|---|---|---|
| $R^2$ | **0.9938** | Calcolato solo sui punti con peso pieno |
#### Grafico
![Fit raffreddamento intero](fit_raffreddamento_intero.png)
*Dati raw (blu), zona di transizione esclusa (arancione), curva di fit TRF (rosso tratteggiato).*
---
### 2.2 Raffreddamento 1° tratto
Fit sul primo sotto-tratto di raffreddamento **[115.0, 115.9 s]**, la finestra precedente alla zona di transizione. Pesi uniformi (w = 1 su tutti i punti). Parametri liberi: $A$, $\tau$.
**Finestra:** t₀ = 115.0 s → 115.9 s.
#### Parametri stimati
| Parametro | Descrizione | Valore |
|---|---|---|
| $A$ | Sovratemperatura iniziale | **194.51 °C** |
| $\tau$ | Costante di tempo | **13.17 s** |
#### Curva stimata
$$T(t) = 22.99 + 194.51 \cdot e^{-\frac{t - 115.0}{13.17}} \quad [°C]$$
#### Bontà del fit
| Metrica | Valore |
|---|---|
| $R^2$ | **0.9998** |
#### Grafico
![Fit 1° tratto](fit_raffreddamento_1tratto.png)
*Dati raw `temp_obj IR [C]` (blu) e curva di fit (rosso tratteggiato) nella finestra [115.0115.9 s].*
---
### 2.3 Raffreddamento 2° tratto
Fit sul solo tratto di raffreddamento stazionario, a partire dall'istante in cui la scatola ha completato l'uscita dal forno. In questa finestra i dati seguono il modello esponenziale senza discontinuità, quindi non sono necessari pesi espliciti.
**Finestra:** t₀ = 117.5 s → fine osservazione. Pesi uniformi (w = 1 su tutti i punti). Parametri liberi: $A$, $\tau$.
#### Parametri stimati
| Parametro | Descrizione | Valore |
|---|---|---|
| $A$ | Sovratemperatura iniziale | **154.94 °C** |
| $\tau$ | Costante di tempo | **17.12 s** |
#### Curva stimata
$$T(t) = 22.99 + 154.94 \cdot e^{-\frac{t - 117.5}{17.12}} \quad [°C]$$
#### Bontà del fit
| Metrica | Valore |
|---|---|
| $R^2$ | **0.9981** |
$R^2 = 0.9981$: il modello spiega il **99.81 %** della varianza — fit eccellente sul tratto di puro raffreddamento.
#### Grafico
![Fit raffreddamento 2° tratto](fit_raffreddamento_2tratto.png)
*Dati raw `temp_obj IR [C]` (blu) e curva di fit (rosso tratteggiato) a partire da t = 115 s.*
---
### 2.4 Raffreddamento doppio esponenziale
#### Motivazione
Osservando i fit singoli sovrapposti ai dati raw, si nota che nessuno dei due esponenziali riesce a descrivere l'intera curva: il fit del 1° tratto (τ₁ ≈ 13 s) decade troppo rapidamente nella fase finale, mentre il fit del 2° tratto (τ₂ ≈ 17 s) non coglie la dinamica iniziale più ripida. Questo suggerisce la presenza di **due contributi termici sovrapposti** con costanti di tempo diverse.
![Confronto fit singoli sui dati raw](plot_confronto_fit.png)
*Confronto tra il fit del 1° tratto (rosso) e del 2° tratto (verde) sovrapposti ai dati raw: nessuno dei due descrive correttamente l'intera curva.*
Il raffreddamento di un corpo che ha subito un processo termico complesso può essere descritto dalla **combinazione lineare di due esponenziali**: il primo termine cattura una componente rapida (raffreddamento superficiale immediato), il secondo una componente lenta (dissipazione termica del nucleo della scatola). Il modello adottato è:
$$T(t) = T_{\infty} + A_1 \cdot e^{-\frac{t - t_1}{\tau_1}} + A_2 \cdot e^{-\frac{t - t_2}{\tau_2}}$$
con $T_{\infty} = 22.99\ °C$, $t_1 = 115.0\ s$ e $t_2 = 117.5\ s$ fissi. La zona [115.9, 117.2 s] è esclusa con pesi nulli (σ = 10¹⁰), come nei fit precedenti.
#### Parametri stimati
| Parametro | Descrizione | Valore |
|---|---|---|
| $A_1$ | Ampiezza componente rapida | **20.73 ± 0.93 °C** |
| $\tau_1$ | Costante di tempo rapida | **1.80 ± 0.17 s** |
| $A_2$ | Ampiezza componente lenta | **152.44 ± 0.65 °C** |
| $\tau_2$ | Costante di tempo lenta | **17.60 ± 0.13 s** |
#### Curva stimata
$$T(t) = 22.99 + 20.73 \cdot e^{-\frac{t - 115.0}{1.80}} + 152.44 \cdot e^{-\frac{t - 117.5}{17.60}} \quad [°C]$$
#### Bontà del fit
| Metrica | Valore | Nota |
|---|---|---|
| $R^2$ | **0.9991** | Calcolato solo sui punti con peso pieno |
Rispetto al singolo esponenziale (R² = 0.9938 nel fit intero), il doppio esponenziale migliora significativamente la bontà del fit catturando la dinamica iniziale rapida ($\tau_1 \approx 1.8\ s$) che il modello a un solo termine non riusciva a descrivere.
#### Grafico
![Fit doppio esponenziale](fit_doppio_esponenziale.png)
*Dati raw (blu), contributo rapido (rosso punteggiato), contributo lento (verde punteggiato), somma totale (viola tratteggiato), zona esclusa (arancione).*