Elementi di Informatica e Applicazioni Numeriche T...

56
Elementi di Informatica e Elementi di Informatica e Applicazioni Numeriche T Applicazioni Numeriche T Sistemi non Lineari (Approfondimento)

Transcript of Elementi di Informatica e Applicazioni Numeriche T...

Page 1: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Elementi di Informatica eElementi di Informatica eApplicazioni Numeriche TApplicazioni Numeriche T

Sistemi non Lineari(Approfondimento)

Page 2: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Sistemi non Lineari (Approfondimento)Sistemi non Lineari (Approfondimento)

Consideriamo il sistema non lineare:

2 =x2 ey

x + y + = 012

13 z2

z = sin(πx) + cos(πy)Come possiamo risolverlo?

Page 3: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Sistemi non Lineari (Approfondimento)Sistemi non Lineari (Approfondimento)

Consideriamo il sistema non lineare:

2 =x2 ey

x + y + = 012

13 z2

z = sin(πx) + cos(πy)■ Prima portiamo tutte le equazioni nella forma (x, y, z) = 0fi

(x, y, z)f1

(x, y, z)f2(x, y, z)f3

= 2 − = 0x2 ey

= x + y + = 012

13 z2

= z − sin(πx) − cos(πy) = 0

Page 4: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Sistemi non Lineari (Approfondimento)Sistemi non Lineari (Approfondimento)

Consideriamo il sistema non lineare:

2 =x2 ey

x + y + = 012

13 z2

z = sin(πx) + cos(πy)■ Poi vediamo il sistema come una equazione vettoriale:

F((x, y, z)) = = (0, 0, 0)⎛

⎝⎜⎜

(x, y, z)f1(x, y, z)f2(x, y, z)f3

⎠⎟⎟

■ E la risolviamo con il metodo di Newton!

Page 5: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Sistemi non Lineari (Approfondimento)Sistemi non Lineari (Approfondimento)

Una possibile soluzione (disponibile sul sito del corso)

clear all

function y = f(x) y(1) = 2.*x(1).^2 - e.^x(2); y(2) = 1./2 .* x(1) + 1./3 .* x(2) + x(3).^2; y(3) = sin(pi .* x(1)) + cos(pi .* x(2)) - x(3);end

x0 = [0, 0, 0][sol, fval, status] = fsolve(@f, x0)

■ Per dettagli si veda la registrazione della lezione

Page 6: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Attenzione alla convergenza!Attenzione alla convergenza!

Consideriamo una leggera variziona del sistema:

2 =x2 ey

x + y + z = 0 era: 12

13 z2

z = sin(πx) + cos(πy)■ Con la variazione indicata, il sistema è impossibile

In questo caso il metodo di Newton non converge

■ In senso stretto, non si annulla mai...■ ...Però le implementazioni al PC usano delle tolleranze

f ( )x(k)

Page 7: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Attenzione alla convergenza!Attenzione alla convergenza!

Per via delle tolleranze, possono succedere due cose:

■ I valori di e sono vicini, anche se ■ I valori di e sono vicini, anche se

x(k+1) x(k) f ( ) ≠ 0x(k+1)

f ( )x(k+1) f ( )x(k) f ( ) ≠ 0x(k+1)

In entrambi i casi la funzione fsolve di Octave termina:

■ Il valore del parametro di uscita INFO è rispettivamente 2 o 3■ Ma il problema non è risolto, infatti FVAL non è nullo

Come gestire il problema?

■ Controllate sempre il valore di FVAL!■ Se non è sufficientemente piccolo, non fidatevi del risultato

Page 8: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Elementi di Informatica eElementi di Informatica eApplicazioni Numeriche TApplicazioni Numeriche T

Minimini Quadratie Leggi di Potenze

Page 9: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Determinazione del Tipo di un FluidoDeterminazione del Tipo di un Fluido

In fluidodinamica si può distinguere la classe di un fluido

La distinzione viene fatta in base alla relazione tra:

■ La velocità di deformazione ■ E lo sforzo tangenziale

γτ

In particolare, consideriamo tre casi:

■ Fluido Newtoniano: relazione lineare ■ Fluido di Bingham: relazione affine ■ Fluido pseudoplastico: legge di potenze:

τ = αγτ = α + βγ

τ = αγβ

Page 10: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Determinazione del Tipo di un FluidoDeterminazione del Tipo di un Fluido

Su un piano cartesiano, i tre tipi di fluido si presentano così:

Page 11: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Determinazione del Tipo di un FluidoDeterminazione del Tipo di un Fluido

La determinazione viene effettuata in modo empirico:

■ Si effettua una serie di misurazioni di ■ Quindi si fa una ipotesi sul tipo di fluido e si stimano i parametri

τ, γ

In pratica, possiamo utilizzare il metodo dei minimi quadrati!

■ Possiamo eseguire il metodo per ognuno dei tre casi:

(a) τ = αγ (b) τ = α + βγ (c) τ = αγβ

■ Scegliamo il caso che minimizza la somma dei quadrati dei residui:

e = ( − ( )∑i=1

nτi fα,β γi )2

Page 12: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Un Esempio PraticoUn Esempio Pratico

Siano date le misurazioni di della figura seguente:τ, γ

Page 13: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Un Esempio PraticoUn Esempio Pratico

Si determini il tipo di fluido ed i parametri della relazione tra e τ γ

Page 14: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Un Esempio PraticoUn Esempio Pratico

Partiamo dal caso più semplice, ossia il fluido di Bingham

( ) = α + βfα,β γ γ

■ Ci basta fare una interpolazione con un polinomio di grado 1!

x = % misurazioni di gammay = % misurazioni di tau

% Minimi quadratip1 = polyfit(x, y, 1) % p1 = [1.07631, 0.82395]

% Funzione approssimantef1 = @(x) (polyval(p1, x))

Page 15: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Un Esempio PraticoUn Esempio Pratico

Vediamo su un grafico la qualità dell'approssimazione:

Page 16: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Un Esempio PraticoUn Esempio Pratico

In termini numerici, guardiamo alla somma dei quadrati dei residui:

e = ( − ( )∑i=1

nτi fα,β γi )2

In Octave:

E1 = sum((y - f1(x)).^2)

■ Il risultato in questo caso è ■ Una soluzione completa è disponibile sul sito del corso■ Per dettagli si veda la registrazione della lezione

1.2065

Page 17: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Un Esempio PraticoUn Esempio Pratico

Proviamo ipotizzare che il fluido sia Newtoniano, quindi:

( ) = αfα,β γ γ

■ Non possiamo usare polyfit: non garantirebbe di avere β = 0Però possiamo eseguire il metodo risolvendo un sistema lineare!

■ Dalla teoria classica abbiamo che i parametri sono dati da:β

β = ( Φ) yΦT ΦT

■ Dove la funzione approssimante è nella forma:

(x) = (x) + (x) + …fβ β1g1 β2g2

Page 18: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Un Esempio PraticoUn Esempio Pratico

Nel nostro caso, la funzione approssimante ha un solo componente:

(x) ↔g1 γ

■ Ed abbiamo un solo parametro, i.e. il coefficiente α

Quindi la matrice sara fatta come segue:Φ

Φ = =⎛

⎝⎜⎜⎜

( )g1 x1( )g2 x2

⎠⎟⎟⎟

⎝⎜⎜⎜

γ1γ2

⎠⎟⎟⎟

■ è semplicemente il vettore delle nostre misurazioni !Φ γ

Page 19: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Un Esempio PraticoUn Esempio Pratico

In Octave, assumendo di avere un fluido Newtoniano, otteniamo:

x = % colonna con le misurazioni di gammay = % colonna con la misurazioni di tau

Phi = xp2 = Phi \ y % p = alpha = 1.6901

f2 = @(x) (p2 .* x) % Funzione approssimante

E2 = sum((y - f2(x)).^2)

■ E2 vale ■ Molto peggio di prima: il fluido decisamente non è Newtoniano

15.990

Page 20: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Un Esempio PraticoUn Esempio Pratico

Rimane da considerare solo il caso del fluido pseudoplastico, con:

( ) = αfα,β γ γβ

Di nuovo non possiamo usare polyfit, ma per una ragione diversa:

■ Il problema è che la funzione è non lineare in ...■ ...Ma noi abbiamo visto solo il metodo lineare dei minimi quadrati!

β

Il metodo non si applica se dipende non linearmente dai parametrif

In realtà, c'è una soluzione semplice: possiamo "barare" ;-)

■ Possiamo cambiare la scala dei dati...■ ...in modo che la funzione diventi lineare!

Page 21: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Un Esempio PraticoUn Esempio Pratico

Guardiamo cosa succede considerando anziché :log( )fα,β fα,β

log ( ) = log (α ) = log α + β log xfα,β γ γβ

In altre parole:

■ Il logaritmo di ...■ ...dipende linearmente dal logaritmo di

( )fα,β γx

Quindi, utilizzare il metodo dei minimi quadrati, trasformiamo i dati:

⟶ logτi τi⟶ logγi γi

Page 22: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Un Esempio PraticoUn Esempio Pratico

Questi sono i dati trasformati su un grafico cartesiano:

Page 23: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Un Esempio PraticoUn Esempio Pratico

Sembra proprio una retta => è probabile che il fluido si pseudoplastico

Page 24: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Un Esempio PraticoUn Esempio Pratico

A questo punto possiamo approssimare i dati trasformati:

x = % misurazioni di gammay = % misurazioni di tau

xl = log(x) % trasformo gammayl = log(y) % trasformo tau

p3 = polyfit(xl, yl) % risultato: [0.49591, 0.68855]

Poiché abbiamo , allora:log ( ) = log α + β log xfα,β γ

■ p3(1) contiene ■ p3(2) contiene

βlog α

Page 25: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Un Esempio PraticoUn Esempio Pratico

A questo punto possiamo applicare ai parametri alla forma iniziale:

( ) = αfα,β γ xβ

In Octave, abbiamo:

% p3(1) = alpha = 0.49591% p3(2) = log(beta) = 0.68855% Quindi la funzione approssimante è:f3 = @(x) (e.^p3(2) .* x.^p3(1) )

E3 = sum((y - f3(x)).^2)

■ Il valore di E3 è , il migliore finora■ Il fluido è pseudoplastico con

0.58175α ≃ 0.49591, β ≃ e0.68855

Page 26: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Un Esempio PraticoUn Esempio Pratico

Vediamo la qualità dell'approssimazione su un grafico:

Page 27: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Elementi di Informatica eElementi di Informatica eApplicazioni Numeriche TApplicazioni Numeriche T

Lookup di FunzioniDefinite per Punti

Page 28: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Determinare lo Stato ad un Tempo DatoDeterminare lo Stato ad un Tempo Dato

Consideriamo il nostro esempio delle BMW

Lo stato è descritto da e si evolve secondo l'EDO:(x, v)

= (F − ρ A)v 1m

12 v2CD

Dove abbiamo che:

■ , ■ (densità dell'aria)■ (superficie esposta)■ (resistenza aerodinamica)

F = 1000 N m = 161 Kgρ ≃ 1.25 Kg/m3

A = 1.2 m2

= 0.26CD

Domanda: quanto vale la velocità dopo secondi?40

Page 29: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Determinare lo Stato ad un Tempo DatoDeterminare lo Stato ad un Tempo Dato

Il modo più semplice per rispondere è risolvere l'EDO fino a :t = 40function dx = f(x, t) ... % Definizione delle variabili % x(1) = posizione, x(2) = velocità dx(1) = x(2); dx(2) = 1./m .* (F - 0.5.*rho.* x(2).^2.*C_D.*A);endt = linspace(0, 40);x0 = [0, 0];sol = lsode(@f, x0, t)v = sol(:, 2)v40 = v(end) % Il risultato!

■ Alla fine il risultato è l'ultimo elemento nel vettore v

Page 30: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Determinare lo Stato ad un Tempo DatoDeterminare lo Stato ad un Tempo Dato

Proviamo a complicare la cosa:

■ Determiniamo la velocità dopo 40 secondi...■ ...E la strada percorsa dopo 20 secondi

Soluzione banale:

■ Risolvere la EDO fino a per ottenere la velocità■ Risolvere la EDO (di nuovo) fino a per ottenere la strada

t = 40t = 20

Così facendo però ripetiamo i conti due volte

Vediamo un metodo alternativo

Page 31: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Determinare lo Stato ad un Tempo DatoDeterminare lo Stato ad un Tempo Dato

La soluzione della EDO è un vettore di valutazioni della funzione :v(t)

Page 32: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Determinare lo Stato ad un Tempo DatoDeterminare lo Stato ad un Tempo Dato

Se ci interessa il valore di per un che è stato valutato:v( )t0 t0

■ Ci basta recuperare l'indice i0 di nel vettore t...■ Il risultato poi è dato da v(i0)

t0

Page 33: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Determinare lo Stato ad un Tempo DatoDeterminare lo Stato ad un Tempo Dato

Se ci interessa per un che è non stato valutato:v( )t0 t0

■ Cerchiamo un indice i per cui t(i) >= t0 && t(i+1) <= t0■ Oppure: t(i) <= t0 && t(i+1) >= t0 (se t non è un "tempo")

Page 34: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Determinare lo Stato ad un Tempo DatoDeterminare lo Stato ad un Tempo Dato

Se ci interessa per un che è non stato valutato:v( )t0 t0

■ Poi per esempio otteniamo v(i)

Page 35: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Determinare lo Stato ad un Tempo DatoDeterminare lo Stato ad un Tempo Dato

Se ci interessa per un che è non stato valutato:v( )t0 t0

■ Poi per esempio otteniamo v(i)■ Oppure possiamo usare usare una approssimazione lineare

Page 36: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Determinare lo Stato ad un Tempo DatoDeterminare lo Stato ad un Tempo Dato

In sintesi, dati due vettori v e t:

■ Troviamo un indice i tale che t "attraversa" t0■ Poi otteniamo il valore di v (eventualmente interpolando)

Page 37: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Determinare lo Stato ad un Tempo DatoDeterminare lo Stato ad un Tempo Dato

Equivale ad approssimare con una spezzata!y = f (x)

■ Punto sinistro = approssimazione a gradini

Page 38: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Determinare lo Stato ad un Tempo DatoDeterminare lo Stato ad un Tempo Dato

Equivale ad approssimare con una spezzata!y = f (x)

■ Punto sinistro = approssimazione a gradini■ Interpolazione lineare = approssimazione lineare a tratti

Page 39: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Determinare lo Stato ad un Tempo DatoDeterminare lo Stato ad un Tempo Dato

Il codice in Octave:

function xx = lookup_interp(t, x, t0) for ii = 1:length(t)-1 if (t(ii) <= t0 && t(ii+1) >= t0) || ... (t(ii+1) <= t0 && t(ii) >= t0) % Coefficiente angolare m = (x(ii+1)-x(ii)) ./ (t(ii+1)-t(ii)); % Interpolazione lineare xx = x(ii) + m .* (t0 - t(ii)); break end endend

Page 40: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Utilizzi dell l'Interpolazione con SpezzateUtilizzi dell l'Interpolazione con Spezzate

Quanto tempo di vuole per arrivare a ?100 Km/h■ Ho una condizione su (anziché su )■ Mi interessa il valore di (anziché di )

v tt v

lookup_interp(v, t, 27.78) % 100 Km/h = 27.78 m/s

Quanto vale la velocità dopo ?100 m

■ Ho una condizione su ■ Mi interessa il valore di

xv

lookup_interp(x, v, 100)

Page 41: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Interpolazione con Spezzate: Interpolazione con Spezzate: interp1

In alternativa, potete usare la funzione predefinita:

function Y1 = interp1(X, Y, XI)

...Che restituisce il valore interpolato di Y quando X vale XI

■ Di default, interp1 utilizza una interpolazione lineare■ Si può modificarne il comportamento (vedere help)

Attenzione: interp1 richiede che X sia ordinato

■ Se X rappresenta il tempo, allora l'ordinamento è naturale■ Se X rappresenta qualcos'altro (e.g. strada) allora non è detto

Buone notizie: la nostra lookup_interp non ha questo problema!

Page 42: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Un Altro EsempioUn Altro Esempio

Consideriamo ancora le nostre montagne russe:

■ Dove: ■ Domanda: quanto vale la velocità nel punto ?

a = 15 m, b = 20 ma

Page 43: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Un Altro EsempioUn Altro Esempio

Vediamo le parti importanti della soluzione in Octave:

function y = f(x, t) % x(1) = pos., x(2) = vel. (vars: da definire) fp = (2.*b)./a.^2 .* x(1) + - (2.*b)./a; y(1) = x(2) .* (1 ./ sqrt(1 + fp.^2)); y(2) = -g .* (fp ./ sqrt(1 + fp.^2));end

t = linspace(0, 4); % In 4 secondi oltrepasso "a"x0 = [0, 0];sol = lsode(@f, x0, t);v = sol(:, 2)VA = lookup_interp(x, v, a); % Risultato: 1.6633

Page 44: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Elementi di Informatica eElementi di Informatica eApplicazioni Numeriche TApplicazioni Numeriche T

EDO e Stato Stazionario

Page 45: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Determinazione dello Stato StazionarioDeterminazione dello Stato Stazionario

Torniamo all'esempio delle BMW

Lo stato è descritto da e si evolve secondo l'EDO:(x, v)

= (F − ρ A)v 1m

12 v2CD

Abbiamo sempre che:

■ , ■ (densità dell'aria)■ (superficie esposta)■ (resistenza aerodinamica)

F = 1000 N m = 161 Kgρ ≃ 1.25 Kg/m3

A = 1.2 m2

= 0.26CD

Nuova Domanda: quanto vale la velocità massima?

Page 46: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Determinazione dello Stato StazionarioDeterminazione dello Stato Stazionario

In questo caso la velocità massima è la velocità "a regime"

Page 47: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Determinazione dello Stato StazionarioDeterminazione dello Stato Stazionario

Lo stato stazionario di viene raggiunto quando v = 0v

■ Risolviamo quindi la EDO fino ad un tempo sufficientemente grande:

t = linspace(0, 60);sol = lsode(@f, [0, 0], t);v = sol(:, 2)

■ Recuperiamo i valori di = = (F − ρ A)v v 1m

12 v2CD

dv = 1./m .* (F - 0.5 .* rho .* v.^2 .* C_D .* A)

■ Infine recuperiamo il valore di quando v = 0v% Uso una tolleranza: a +vmax = lookup_interp(dv, v, 1e-5)

= 0v ∞

Page 48: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Un Metodo AlternativoUn Metodo Alternativo

Consideriamo la formula fondamentale del metodo di Eulero:

x(t + δ) = x(t) + δ (x, t)f ′

È la descrizione di un sistema dinamico tempo-discreto

■ Quidi possiamo cercare lo stato stazionario con IPF■ In pratica, si tratta di eseguire il metodo di Eulero...■ ...Finché e non sono sufficientemente vicinix(t + δ) x(t)Rispetto al metodo precedente:

■ Più efficiente: ci fermiamo allo stato stazionario!■ Meno accurato: lsode usa delle approssimazioni molto migliori

Page 49: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Elementi di Informatica eElementi di Informatica eApplicazioni Numeriche TApplicazioni Numeriche T

Potenzialità del Problemaai Valori Iniziali

Page 50: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Problema ai Valori Iniziali?Problema ai Valori Iniziali?

Consideriamo ancora l'esempio delle montagne russe:

Domanda: quanto deve valere nel punto perché in sia ?v 0 a 20 m/s

Page 51: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Problema ai Valori Iniziali?Problema ai Valori Iniziali?

Proviamo a modellare il problema:

= vx 11 + (xϕ′ )2‾ ‾‾‾‾‾‾‾‾‾√

= −gv (x)ϕ′

1 + (xϕ′ )2‾ ‾‾‾‾‾‾‾‾‾√■ Dove (x) = 2 x − 2ϕ′ b/a2

b/aSappiamo che, per un qualche tempo deve valere:ff

x( ) = atf v( ) = 20tfPossiamo risolverlo con i metodi visti finora?

Page 52: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Problema ai Valori Iniziali!Problema ai Valori Iniziali!

Provate a pensare dal metodo di Eulero:

■ Se potessimo eseguirlo "a ritroso", partendo da e ...■ ...Dovremmo poter determinare la velocità quando vale

x = a v = 20x 0

Intuitivamente:

■ Se potessimo "invertire" la direzione del tempo...■ ...Ci ritroveremmo con un nuovo problema ai valori iniziali

(τ) = ?x′

(τ) = ?v′

(0) = ax′ (0) = 20v′

Dobbiamo solo determinare le funzioni per il calcolo di (τ), (τ)x′ v′

Page 53: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Inversione Temporale di una EDOInversione Temporale di una EDO

Per come l'abbiamo definita, la nuova variabile corrisponde a:τ

τ = g(t) = − ttfQuindi, se ci riferiamo con a , possiamo ottenere:(τ)x′ x(g(τ))

(τ) = (g(t)) (t) = −f (x(g(t), g(t)) = −f ( , − t)x′ x g′ x′ tf■ Dove è la funzione che definiva f (x, t) (t)x

Quindi possiamo ottenere la nuova EDO con:

= −f ( , − t)x′ x′ tf■ Ossia negando la funzione originaria■ E sostituendo ogni occorrenza di in con

f (x, t)t f (x, t) − ttf

Page 54: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Un Esempio PraticoUn Esempio Pratico

Nel nostro caso, il problema con il tempo invertito è dato da:

= −vx 11 + (xϕ′ )2‾ ‾‾‾‾‾‾‾‾‾√

= +gv (x)ϕ′

1 + (xϕ′ )2‾ ‾‾‾‾‾‾‾‾‾√x(0) = a, v(0) = 20

Per semplicità le variabili non sono state rinominate

■ Se la variabile fosse comparsa nella espressione di ...■ ...Avremmo dovuto sostituirla con

t ,x v− ttf

In questo caso, avremmo dovuto conoscere il valore di tf

Page 55: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Un Esempio PraticoUn Esempio Pratico

Vediamo la soluzione (disegnata con plotyy, se vi interessa)

Page 56: Elementi di Informatica e Applicazioni Numeriche T (2015-2016)ai.unibo.it/sites/ai.unibo.it/files/sites/EIAN/2015-2016/... · 2019. 3. 4. · In pratica, possiamo utilizzare il metodo

Un Esempio PraticoUn Esempio Pratico

Per ottenere il valore di velocità richiesto:

xf = [a, 20]; % Condizioni al contornotau = linspace(0, 4); % Tempo invertitosol = lsode(@f, xf, tau);

% Ottengo i due vettori che compongono la soluzionex = sol(:, 1);v = sol(:, 2);

v0 = lookup_interp(x, v, 0) % velocità per x = 0

■ Il risultato è ■ Il codice è disponibile sul sito del corso■ Per dettagli si veda la registrazione della funzione

2.7558 m/s