Indicativamente, l'esame scritto conterrà:
Sono possibili (ma improbabili) variazioni
Si vuole progettare parte di un circuito automobilistico:
a,b,c
a,b,c
è notab
deve essere orientata secondo la freccia rossaSi considerino i seguenti problemi:
d
un terzo punto sulla curvad
la distanza tra a
e d
...λ
?NOTA: La domanda Q3 è tendenzialmente la più complessa
Innanzitutto ci serve un sistema di riferimento:
A questo punto possiamo riferirci alle posizioni di a,b,c
con:
a↔(xa,ya)b↔(xb,yb)c↔(xc,yc)
La curva è descritta da una funzione polinomiale:
fβ(x)=n∑j=0βjx(n−j)
Possiamo determinare i coefficienti risolvendo:
fβ(xa)=yafβ(xb)=ybfβ(xc)=ycf′β(xb)=0
f
deve essere almeno di 3° gradoβ
Poiché f
è di 4° grado, posso scrivere:
fβ(x)=β0x3+β1x2+β2x+β3
Mentre la derivata è data da:
f′β(x)=3β0x2+2β1x+β2
NOTA: β
è il vettore dei coefficienti
x
) vanno tra parentesi...Poiché f
è di 4° grado, posso scrivere:
fβ(x)=β0x3+β1x2+β2x+β3
Mentre la derivata è data da:
f′β(x)=3β0x2+2β1x+β2
NOTA 2: D'ora in avanti, i parametri β
saranno fissi:
f(x),f′(x)
La lunghezza della curva è data da:
L=∫xcxa√1+f′(x)2dx
Dove √1+f′(x)2dx
corrisponde a:
Definisco una funzione L(x)
che corrisponde a:
L(x)=∫xxa√1+f′(x)2dx
La coordinata xd
del punto d
è determinata risolvendo:
L(x)=λ
La coordinata yd
del punto d
è ora data da:
yd=f(xd)
Un'automobile avanza a motore spento su un rettilineo:
v0
Fd=12ρv2CDA
v
è la velocità dell'autoρ,A,CD
sono parametri notiFr=Crmg
Cr
è un coefficiente di attrito volvente (noto)m
è la massa dell'automobile (nota)g
è l'accelerazione di gravitàSi considerino i seguenti problemi:
λ
?NOTA: La domanda Q3 è tendenzialmente la più complessa
Innanzitutto dobbiamo capire come descrivere lo stato:
Ci interessa la velocità dell'auto, su un rettilineo:
v
Le forze che agiscono sull'auto determinano ˙v
:
˙v=−1m(Fd+Fr)
L'attrito volvente delle ruote è attivo solo finché l'auto si muove:
˙v=−1m(Fd+ˆFr)con: ˆFr={Frse v>00altrimenti
Possiamo risolverla con un metodo numerico per v(0)=v0
ˆFr
non è un problema!if
"v(t)
, per valori di t
selezionabiliPer rispondere a Q2 abbiamo bisogno della posizione dell'auto:
x
0
˙x
Quindi, includendo la posizione, il sistema è definito da:
˙x=v˙v=−1m(Fd+ˆFr)
v(0)=v0,x(0)=0
x(t),v(t)
, per valori di t
selezionabiliPer rispondere al quesito 2:
t∗
tale che v(t∗)≃0
x(t∗)
(e.g. interpolazione lineare)x(t∗)
risponde al quesitoPer risponere a Q3, consideriamo la massa m
come un parametro
xm(t),vm(t)
le soluzioni della EDO...m
A questo punto, per rispondere a Q3 dobbiamo risolvere:
xm(t)=λvm(t)=0
t
e m
(vanno determinate entrambe)In pratica, per rispondere a Q2 abbiamo visto come ottenere:
t∗
tale che v(t∗)≃0
x
corrispondente a t∗
Possiamo incapsulare questo calcolo in una funzione G(m)
m
...G(m)
trova t∗
e denota x(t∗)
A questo punto dobbiamo risolvere solo una equzione:
G(m)=λ
Si consideri lo script seguente:
function y = f(x)
y(1, :) = x(2:2:end);
y(2, :) = x(1:2:end);
end
y = f([1, 2, 3, 4])
z = y(1, :) + y(2, :)
w = sum(z)
function y = f(x)
y(1, :) = x(2:2:end);
y(2, :) = x(1:2:end);
end
% y(1, :) contiene i valori di x in posizione pari
% y(2, :) contiene i valori di x in posizione dispari
% quindi; y = [2, 4;
% 1, 3]
y = f([1, 2, 3, 4])
% Sommando le due righe di y abbiamo z = [3, 7]
z = y(1, :) + y(2, :)
% w contiene la somma di tutti i valori in x: w = 10
w = sum(z)
Si codifichi la funzione:
function x = eulero(f, x0, t)
Che risolve una EDO con il metodo di Eulero.
f
è una funzione che calcola la derivata dello stato corrente:function dx = f(x, t)
x
è lo stato (uno scalare), t
è l'istante di tempo correntex0
è il valore iniziale dello stato (uno scalare)t
è il vettore dei tempi per cui va determinato lo statoSi discuta brevemente il metodo
Il metodo di Eulero risolve una EDO in base all'iterazione fondamentale:
x(k+1)=x(k)+(t(k+1)−t(k))f(x(k),t(k))
Una possibile codifica:
function x = eulero(f, x0, t)
x(1) = x0;
for ii = 1:length(t)-1
dt = t(ii+1) - t(ii);
x(ii+1) = x(ii) + dt .* f(x(ii), t(ii));
end
end
Si discuta brevemente il metodo di Newton-Raphson e si codifichi:
function x = newton_raphson(f, df, x0)
Ossia una funzione che esegue il metodo. I parametri sono:
f
è la funzione (scalare) da annullare:function y = f(x)
df
è una funzione che calcola la derivata di f
function y = df(x)
x0
è valore di x
da cui partireIl metodo di Newton-Raphson trova lo zero di una funzione:
x(k+1)=x(k)−f(x(k))f′(x(k))
Una possibile codifica:
function x = newton_raphson(f, df, x0)
for ii = 1:1000
x_old = x0;
x = x_old - f(x_old) ./ df(x_old);
if abs(x - x_old) < 1e-5
break
end
end
end
x
10−5
Un calcolatore rappresenta i numeri in virgola mobile utilizzando:
Si calcoli il risultato delle somme:
0.122×10−1+0.430×10−20.120×10−1+0.432×10−2
Si evidenzino eventuali errori di cancellazione
Consideriamo la prima somma:
0.122×10−1+0.430×10−2
0.122×10−1+0.043×10−1=0.165×10−1
Consideriamo la seconda somma:
0.120×10−1+0.432×10−2
0.120×10−1+0.043×10−1=0.163×10−1
0.1632×10−1
Un calcolatore rappresenta i numeri in virgola mobile utilizzando:
Si calcoli il risultato delle somme:
0.0702×104+0.1001×1020.0702×104+0.0085×102
Si evidenzino eventuali errori di cancellazione
Consideriamo la prima somma:
0.0702×104+0.1001×102
0.0702×104+0.0010×104=0.0712×104
0.071201×104
Consideriamo la seconda somma:
0.0702×104+0.0085×102
0.0702×104+0.0000×104=0.0702×104
0.070285×104