A.A. 2019/2020
Outline
• Problema
• Codice Matlab:
Implementazione metodi e problema
Confronto soluzioni metodi
Problema
• Obbiettivo:
si vuole tracciare la traiettoria di un lob
ω
⃗ 𝑣
⃗
𝜃 in topspin di una pallina da tennis note
h le dimensioni e le condizioni di partenza
della pallina
• Condizioni di partenza:
-
- ω
⃗
• Dimensioni pallina:
- 𝑣
⃗
Problema
Il problema si può schematizzare con il
seguente modello:
1. Sistema di riferimento τ(0,x,y,z) come in figura
2. La pallina è una sfera di diametro d, massa m,
che si muove nell’aria con velocità ruotando
su se stessa con una velocita angolare
dove z
⃗𝒗 𝟎
- x
Problema
• Problema ai valori iniziali (Pb di Cauchy del 2° ordine):
• introducendo le variabili e :
• definendo i vettori:
Risoluzione
Numerica
•Ipotesi
esistenza e unicità della soluzione del Pb di Cauchy :
continua rispetto ad entrambi gli argomenti e Lipschitziana rispetto a y ovvero
tale che
• Ordine di convergenza p:
Metodo di Crank-
Nicolson
• Passo i+1:
Derivazione metodo:
Da la formulazione integrale del pb di Cauchy
Convergenza: p=2 :
Metodo Runge
Kutta
• famiglia di metodi (impliciti o espliciti)in cui ad ogni passo viene valutata in più punti
appartenenti all’intervallo
Convergenza : convergente s
Espressione:
Dove
-
Codice matlab per Metodi
function [t,U]= Crank_Nicolson (fun,y0,t0,tend,n)
h=(tend-t0)/n;
t=linspace(t0,tend,n+1)’; & x z
U=zeros(n+1,length(y0)); U(1,:)=y0';
options=optimset('Display','off','Tolfun',10^-4);
for i=1:n
ui=U(i,:)';
F=@(x) ui- x + (h/2).*(fun(t(i+1),x)+fun(t(i),x));
u=fsolve(F,ui,options);
U(i+1,:)=u'; end
Per per ,
Diffx e Diffz presentano delle
componenti sempre più vicine a zero.
Definizione di ‘’coincidenza’’ delle
soluzioni
Non avendo la soluzione esatta, non siamo in grado di dire a priori per quale
valore di n si ottiene una buona stima della soluzione
Per le regole di un incontro di tennis, pallina è
Diffx(i)<<10^(-2) Diffz(i)<<10^(-2)
Codice ricerca ‘’coicidenza’’
soluzioni
Si esegue un ciclo while per cercare il numero di passi necessario affinchè
le 2 soluzioni coincidano a meno di una differenza inferiore a 10^-2:
%Numero iniziale di passi, con cui inizio la ricerca:
n=350;
%Vettori differenza:Diffx=ones(n+1,1);Diffz=ones(n+1,1);
while abs(max(Diffx))>10^(-2) | abs(max(Diffz))>10^(-2) & n<=400
n=n+5;
[t,U1]= Crank_Nicolson (@tennis_ball,y0,t0,tend,n);
[t,U2]= RK4 (@tennis_ball,y0,t0,tend,n);
Diffx=U2(:,1)-U1(:,1);
Diffz=U2(:,2)-U1(:,2);end
• Matematica Numerica, Quarteroni, Sacco,Saleri, Gervasio