Sei sulla pagina 1di 10

VA Gaussiana:

comandi predefiniti di MATLAB


▪ La VA Gaussiana (o normale) è di fondamentale importanza nella statistica.
PDF CDF
Identificazione e Simulazione di Processi Chimici AA 2019/20

1 1 𝑦−𝜇Y 2 1 𝑦−𝜇Y
𝑓Y 𝑦 = exp − 𝐹Y 𝑦 = 1 + erf
2 𝜎Y2 2
2𝜋𝜎Y2 2𝜎Y2

▪ Esistono infinite distribuzioni Gaussiane al variare dei parametri 𝜇Y (media) e 𝜎Y2 (varianza)
→ 𝑁(𝜇Y , 𝜎Y2 ).

▪ Note 𝜇Y e 𝜎Y2 , MATLAB consente di calcolare PDF e CDF della Gaussiana.

• PDF: normpdf(x,mi,sigma) deviazione standard!!!

valore media

• CDF: normcdf(x,mi,sigma)

▪ MATLAB ha un comando predefinito per risolvere problemi inversi:

norminv(P,mi,sigma)
Marco Trofa

che calcola il valore della gaussiana con media mi e deviazione standard sigma in
1/10
corrispondenza del quale la CDF della suddetta gaussiana vale P. ISPC
Comandi salienti MATLAB
Regressioni lineari:
comandi predefiniti di MATLAB

𝛽መ0 , 𝛽መ1 = min ෍ 𝑦𝑖 − 𝛽0 − 𝛽1 𝑥𝑖 2


Identificazione e Simulazione di Processi Chimici AA 2019/20

MV 𝛽0 ,𝛽1
𝑖=1

▪ Il valore del vettore dei parametri 𝛽 che minimizza la sommatoria degli scarti quadratici può
essere determinato tramite il comando predefinito di MATLAB

beta = fminsearch(@funMQ, betaI)

▪ Il comando fminsearch ricerca numericamente minimi di funzione, richiedendo in input


• funMQ una function contenente la funzione da minimizzare (preceduta da @)
- nel caso di una regressione lineare è la SSQ (funzione del vettore dei parametri)
function f = funMQ(par)

f = sum((y - b0 - b1*x).^2);
• betaI valori di I tentativo per l’algoritmo numerico
Marco Trofa

2/10
ISPC
Comandi salienti MATLAB
Regressioni multilineari:
comandi predefiniti di MATLAB
▪ MATLAB possiede un comando predefinito per eseguire regressioni di modelli multilineari
del tipo 𝑦 = 𝛽0 + 𝛽1 𝑥1 + 𝛽2 𝑥2 + … + 𝛽k 𝑥k .
Identificazione e Simulazione di Processi Chimici AA 2019/20

• La sintassi di tale comando è

beta = regress(y,X)

in cui y è il vettore 𝑛 × 1 degli esiti sperimentali, X è la matrice 𝑛 × 𝑝 delle condizioni


sperimentali, beta è il vettore 𝑝 × 1 delle stime dei parametri.
ATTENZIONE al fatto che regress
• Una sintassi più elaborata è vuole tutti vettori colonna
e al fatto che y precede X!!!
[beta,~,epsilon,~,stats] = regress(y,X)

in cui epsilon è il vettore 𝑛 × 1 dei residui e stats=[R2,~,~,sigma2] è un vettore


di 4 elementi che contiene il coefficiente di determinazione 𝑅2 e la varianza sperimentale
𝜎ො 2 . (Si è sfruttata la ~ per non far salvare a MATLAB delle variabili alle quali non siamo
Marco Trofa

interessati.)
3/10
ISPC
Comandi salienti MATLAB
Regressioni non lineari:
comandi predefiniti di MATLAB
▪ MATLAB possiede un comando predefinito che esegue regressioni non lineari con il metodo
dei MQ.
Identificazione e Simulazione di Processi Chimici AA 2019/20

• La sintassi di tale comando è


theta = nlinfit(X,y,@model,trial_theta)
con
theta vettore delle stime dei parametri (output),
X matrice delle condizioni sperimentali,
y vettore delle misure sperimentali,
model (preceduto da @) function in cui è dichiarato il modello del processo (NON la SSQ)
nella forma model(par,X) con par vettore dei parametri,
trial_theta vettore dei valori di I tentativo per i parametri.
• Siccome il comando nlinfit opera la regressione con il metodo dei MQ, utilizzare il
comando predefinito o cercare il minimo della SSQ tramite fminsearch è del tutto
equivalente.
• L’utilizzo del comando nlinfit non consente di aggirare il problema della scelta dei
valori di I tentativo.
▪ Con una sintassi un po' più elaborata è possibile ottenere direttamente anche i residui
Marco Trofa

epsilon e la varianza sperimentale var


[theta,epsilon,~,~,var] = nlinfit(X,y,@model,trial_theta) 4/10
ISPC
Comandi salienti MATLAB
Sistemi di equazioni algebriche lineari:
comandi predefiniti di MATLAB
▪ MATLAB possiede un comando predefinito per la soluzione di sistemi lineari con metodi
diretti.
Identificazione e Simulazione di Processi Chimici AA 2019/20

▪ A seconda della struttura della matrice dei coefficienti, verificata tramite lo svolgimento di
appositi test preliminari integrati nel comando, quest’ultimo sceglie il metodo diretto più
efficiente per la soluzione del problema.

▪ Per il sistema lineare 𝑨 ⋅ 𝒙 = 𝒃, la sintassi del comando è

x = mldivide(A,b)

(con b dichiarato come vettore colonna)

oppure

x = A\b
Marco Trofa

(sempre con b dichiarato come vettore colonna).


5/10
ISPC
Comandi salienti MATLAB
Sistemi di equazioni algebriche non lineari:
comandi predefiniti di MATLAB (1/2)
▪ MATLAB possiede un comando predefinito per la soluzione di sistemi non lineari.
• Tale comando è basato su metodi trust-region, concettualmente analoghi al metodo di
Identificazione e Simulazione di Processi Chimici AA 2019/20

Newton, ma con una regione di convergenza più ampia.


• La sintassi è

[sol, fval] = fsolve(@func, x0)

• con
sol vettore degli zeri della funzione vettoriale,
fval vettore dei valori assunti dalla funzione in corrispondenza della soluzione
calcolata,
func (preceduta da @) function in cui si è dichiarata la funzione vettoriale di cui si
cercano gli zeri,
x0 vettore dei valori di 1° tentativo della soluzione.

• NB: il comando fsolve non richiede la dichiarazione da parte dell’utente dello


Jacobiano della funzione vettoriale da azzerare.
Marco Trofa

6/10
ISPC
Comandi salienti MATLAB
Sistemi di equazioni algebriche non lineari:
comandi predefiniti di MATLAB (2/2)
• Il comando fsolve consente di specificare parametri opzionali in input. Per esempio:
Identificazione e Simulazione di Processi Chimici AA 2019/20

options = optimset('Display','iter','TolFun',1e-5, 'TolX', 1e-5);


[sol, fval] = fsolve(@func, x0, options)

• E’ possibile anche specificare output aggiuntivi:

[sol, fval, exitflag, output] = fsolve(@func, x0)

- Le possibili opzioni specificabili tramite optimset, i possibili valori di exitflag


ed il significato delle voci di output sono disponibili digitando

help fsolve
Marco Trofa

7/10
ISPC
Comandi salienti MATLAB
Problemi di valore iniziale:
comandi predefiniti MATLAB (1/3)
▪ MATLAB possiede una serie di comandi predefiniti per la soluzione di problemi di valore
iniziale, la cui sintassi è
Identificazione e Simulazione di Processi Chimici AA 2019/20

[var, sol] = odexxx(@func, [t0, tf], x0)

con
• var vettore colonna dei valori della variabile indipendente in cui viene visualizzata la
soluzione (scelti dal software),
• sol matrice dei valori delle variabili di stato calcolati in corrispondenza dei valori di var
(ogni colonna di sol contiene i valori di una diversa incognita),
• xxx stringa che specifica il metodo di risoluzione scelto (possibili valori: 15, 45, 113,
15s, 23s, 23t, 23tb…),
• func function contenente il campo vettoriale 𝒇(𝑡, 𝒙(𝑡)) del sistema di ODE,
• [t0, tf] intervallo di integrazione,
• x0 vettore (indifferentemente riga o colonna) dei valori delle variabili di stato in
corrispondenza di t0 (i.e., condizioni iniziali).
Marco Trofa

▪ NB: non viene richiesta all’utente alcuna informazione sul passo di integrazione, che viene
automaticamente scelto dal software. 8/10
ISPC
Comandi salienti MATLAB
Problemi di valore iniziale:
comandi predefiniti MATLAB (2/3)
▪ Se si desidera visualizzare i valori della soluzione in corrispondenza di valori della variabile
indipendente fissati dall’utente, è possibile utilizzare le seguenti sintassi:
Identificazione e Simulazione di Processi Chimici AA 2019/20

[var, sol] = odexxx(@func [t0, t1, t2, …, tf], x0)

[var, sol] = odexxx(@func [t0:dt:tf], x0)

▪ Alcuni possibili valori di xxx sono


Algoritmo Caratteristiche Indicazioni di impiego
ode45 RK del 4° e 5° ordine esplicito problemi non stiff
a un passo media accuratezza
in genere, il primo algoritmo da tentare
ode23 RK del 2° e 3° ordine esplicito problemi non stiff o poco stiff
a un passo bassa accuratezza
più efficiente di ode45 per richieste poco
stringenti sull’accuratezza
ode113 Adams-Bashfort-Moulton esplicito problemi non stiff
multipasso molto accurato
conveniente quando la valutazione del
Marco Trofa

campo vettoriale è computazionalmente


onerosa
9/10
ISPC
Comandi salienti MATLAB
Problemi di valore iniziale:
comandi predefiniti MATLAB (3/3)
▪ Alcuni comandi predefiniti di MATLAB per problemi stiff sono
Identificazione e Simulazione di Processi Chimici AA 2019/20

Algoritmo Caratteristiche Indicazioni di impiego


ode15s differenziazione numerica implicito problemi stiff
multipasso accuratezza medio-bassa
prima opzione se ode45 fallisce o è troppo
lento
ode23s formula di Rosenbrock del implicito problemi stiff
2° ordine a un passo bassa accuratezza
più efficiente di ode15s per richieste poco
stringenti sull’accuratezza
ode23t metodo di Crank-Nicolson implicito problemi moderatamente stiff
a un passo bassa accuratezza
ode23tb RK del 2° e 3° ordine implicito problemi moderatamente stiff
a un passo bassa accuratezza

▪ Gli algoritmi implementati da questi comandi sono tutti impliciti, quindi non necessitano di
passi temporali estremamente piccoli (in ogni caso, la scelta del passo è automaticamente
operata dal software).
Marco Trofa

10/10
ISPC
Comandi salienti MATLAB