Sei sulla pagina 1di 9

1.

DESCRIZIONE DEL PROBLEMA


Calcolare, con la function matlab ode45, la traiettoria di un proiettile sferico, di massa m=15kg,in
un sistema di coordinate cartesiane con allorigine il punto di lancio.
Le forze agenti sul proiettile sono la gravit g=9.81 e la resistenza aerodinamica, che dipende dalla
velocit w(t) del vento e da quella del proiettile. Le equazioni che descrivono il moto del proiettile
sono:
x(t) = vcos()
y(t) = vsin()
(t) = -gcos()/v
v(t) = -D/m-gsin()
con condizioni iniziali:
x(0)= 0
y(0)= 0
(0)= angolo iniziale di lancio in radianti
v(0)= 50
dove:
D = CRS((x(t)-w(t))2 +y(t)2)/2
C=0.2 resistenza aerodinamica
R=1.29 densit dellaria
S =0.25 area sezione trasversale del proiettile
w(t)= velocit del vento
Considerare due condizioni:
w(t)=0 senza vento
w(t)=-20 costante nel tempo
1. Per ognuna delle condizioni visualizzare in un grafico le traiettorie corrispondenti agli angoli
iniziali: 10,20,30,40,50 (ricordare che nellequazione in radianti).
2. Determinare quale di queste traiettorie ha la distanza maggiore dal punto di lancio e, per
questa traiettoria, stampare langolo iniziale, il tempo dimpatto al suolo, la distanza dal
punto di lancio e il numero di passi richiesti per la soluzione.
2. DESCRIZIONE DELLALGORITMO
Per sviluppare l' algoritmo si sono create cinque function:
testproiet.m: Function per testare il modello l'esercizio.
proietwind.m: Function del modello del problema con vento.
proiet.m: Function Modello del problema senza vento.
AvvioProiettile.m: Script che fa partire il proiettile nei due casi (vento, senza vento).
g.m: Function Modello per stabilire quando il proiettile tocca terra.
2.1 Script AvvioProiettile.m
testproiet( 0 );
testproiet( 20 );

2.2 Function testproiet(w)
function testproiet(w)

x0 = 0;
y0 = 0;
grad = [10; 20; 30; 40; 50];
v0 = 50;

rad = grad*(pi/180); %parro da gradi a radianti

% Associo alle opzioni l' evento definito nella function g:
%
% * g una function per determinare gli 0
%
options = odeset('events', @g);
xmax = -inf;
xmax_i = 0;
r = cell(length(rad), 4);
if w == 20
figure('Name','Traiettorie con vento')
else
figure('Name','Traiettorie senza vento')
end

for i = 1:length(rad)
x = [x0; y0; rad(i); v0];

% Utilizzo la ODE45 che ritorna:
% * (Vettore Colonna dei punti di tempo, Soluzioni,
% Tempo dell'occorrenza di un evento(0),
% il tempo in cui si trova la soluzione)

if w == 20
%disp('--- Con Vento ---');
[t, y, tfinal, yfinal] = ode45(@proietwind, [0 inf], x, options);
else w == 0
%disp('--- Senza Vento ---');
[t, y, tfinal, yfinal] = ode45(@proiet, [0 inf], x, options);
end
r{i,1} = t;
r{i,2} = y;
r{i,3} = tfinal;
r{i,4} = yfinal;
if max(r{i,2}(:,1)) >= xmax
xmax = max(r{i,2}(:,1));
xmax_i = i; %indice dell'elemento
end
end

hold on
title('Traiettorie')
xlabel('x')
ylabel('y')
for i=1:length(rad)
plot(r{i,2}(:,1),r{i,2}(:,2));
text(r{i,2}(length(r{i,2}(:,1))-8,1), r{i,2}(length(r{i,2}(:,2))-8,2),
[num2str(grad(i))] )
end
if w == 20
disp('-- Traiettoria massima con Vento --')
disp(sprintf('\ngradi: %i\n', grad(xmax_i)))
disp(sprintf('tempo di impatto dal suolo: %fs\n', r{xmax_i,3}(2))) % r(riga,
colonna tempi)
disp(sprintf('distanza dal punto di lancio: %fm\n', xmax)) % massima
distanza
disp(sprintf('numero di passi utilizzati: %i \n', length(r{xmax_i,1})))
else
disp('-- Traiettoria massima senza Vento --')
disp(sprintf('\ngradi: %i\n', grad(xmax_i)))
disp(sprintf('tempo di impatto dal suolo: %fs\n', r{xmax_i,3}(2))) % r(riga,
colonna tempi)
disp(sprintf('distanza dal punto di lancio: %fm\n', xmax)) % massima
distanza
disp(sprintf('numero di passi utilizzati: %i \n', length(r{xmax_i,1})))
end
pause(5);

Calcola, con la function matlab ode45 la traiettoria di un proiettile sferico di massa m=15kg, in un sistema di
coordinate cartesiane con allorigine il punto di lancio.
Vanno considerare due condizioni:
1. w(t)=0 senza vento
2. w(t)=-20 costante nel tempo
Visualizza un grafico per la condizione di lancio scelta delle traiettorie con angoli:
10,20,30,40,50
Determina poi quale traiettoria ha la distanza maggiore dal punto di lancio
e per questa traiettoria stampa:
langolo iniziale,
il tempo dimpatto al suolo,
la distanza dal punto di lancio
il numero di passi richiesti per la soluzione.
Lo script richiede il Input un parametro w per scegliere quale modello usare:
w=0 modello senza vento
w=20 modello con vento -20
Calcola, con la function matlab ode45 la traiettoria di un proiettile sferico di massa m=15kg, in un sistema di
coordinate cartesiane con allorigine il punto di lancio. Vanno considerare due condizioni:
w(t) = 0 senza vento
w(t) = -20 costante nel tempo
Visualizza un grafico per la condizione di lancio scelta delle traiettorie con angoli:
10,20,30,40,50
Determina poi quale traiettoria ha la distanza maggiore dal punto di lancio
e per questa traiettoria stampa:
langolo iniziale,
il tempo dimpatto al suolo,
la distanza dal punto di lancio
il numero di passi richiesti per la soluzione.
Lo script richiede il Input un parametro w per scegliere quale modello usare:
w = 0 modello senza vento
w = 20 modello con vento -20
2.3 Function proiet.m
function f = proiet(t, x)

w = 0;
f1 = x(4)*cos(x(3));
f2 = x(4)*sin(x(3));
f3 = -9.81*cos(x(3))/x(4);
f4 = -0.5*(0.2*1.29*0.25*((f1-w)^2+f2^2))./(15) - 9.81*sin(x(3));

f = [f1;f2;f3;f4];
end
Modello delle Equazioni senza vento
Input:
t : Posizione lungo x.
x : Valori iniziali di x
Output:
f : Risultati
Le equazioni che descrivono il moto del proiettile sono:
x(t) = v * cos()
y(t) = v * sin()
(t) = -g * cos() / v
v(t) = -D / m - g*sin()
Le condizioni iniziali:
x(0)= 0
y(0)= 0
(0)= angolo iniziale di lancio in radianti
v(0) = 50
dove:
D = CRS((x(t)-w(t))2 +y(t)2)/2
C=0.2 resistenza aerodinamica
R=1.29 densit dellaria
S =0.25 area sezione trasversale del proiettile
w(t)= velocit del vento

2.4 Script proietwind.m
Per quanto riguarda il modello con vento cambia solo per l' impostazione di w internamente al file:
function f = proietwind(t, x)

w = -20;
...

3. ECCEZIONI PREVISTE
In questo elaborato non sono stati inseriti particolari controlli.



















4. ESEMPI DUSO
Esempio di uso lanciando lo script AvvioProiettile.m

Potrebbero piacerti anche