La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 8 a bis lezione di laboratorio Laurea Specialistica in Ingegneria Matematica Ingegneria dei Sistemi Energetici Laurea Specialistica in Ingegneria Matematica.

Presentazioni simili


Presentazione sul tema: "1 8 a bis lezione di laboratorio Laurea Specialistica in Ingegneria Matematica Ingegneria dei Sistemi Energetici Laurea Specialistica in Ingegneria Matematica."— Transcript della presentazione:

1 1 8 a bis lezione di laboratorio Laurea Specialistica in Ingegneria Matematica Ingegneria dei Sistemi Energetici Laurea Specialistica in Ingegneria Matematica Ingegneria dei Sistemi Energetici a.a

2 2 Si utilizzi il metodo RK4 per calcolare la soluzione del problema del pendolo: Esercizio 1: Problema di Cauchy Problema di Cauchy del 2° ordine nellincognita g: accelerazione di gravità

3 3 Problema equivalente del 1° ordine Risolvendo (*) in si ottengono: e quindi (t), valore dellangolo istante per istante, e, velocità. SostituzioniProblema equivalente

4 4 Inizialmente si assume: e si analizzano i risultati che si ottengono applicando il metodo di Runge-Kutta4. Dati del problema

5 5 Istruzioni Metodo RK4 t0=0;tmax=10; n=100;y0=[0 0.5]; g=num2str( , ' %9.5f ' ); f1='y(2)';f2=[g, ' *(-sin(y(1))) ' ]; f=strvcat(f1,f2); [T,Y]=Rungekutta4(t0,tmax,n,y0,f); x=Y(:,1);y=Y(:,2); plot(T,x) title('Valori istantanei dell''angolo - Rungekutta4') xlabel('Tempo (s)') ylabel('Angolo (rad)') tabella

6 6

7 7 File tabella.m % Il file scrive una tabella in cui si riportano i valori in uscita da % un problema differenziale di Cauchy di tipo vettoriale. % Se si vuole riportare anche l'errore, vanno aggiunte altre colonne clc a=[T,x,y]; ar=a(1:10:end,:); s=' '; disp(s) fprintf('tempo\t\t\t angolo\t\t\t\t velocità\n') disp(s) fprintf('%6.3f %16.6e %16.6e \n',ar)

8 8 Risultati del Metodo RK tempo angolo velocità e e e e e e e e e e e e e e e e e e e e e e-001

9 9 Considerazioni sul problema Il sistema è conservativo: Energia cineticaEnergia potenziale

10 10 1. ; è il livello minimo di energia e dalla (1) essendo i due termini non negativi, deve essere, e la (1) si riduce al punto di equilibrio (critico) (0,0). 2. ; sulla base di (2), otteniamo, considerando i due segni, una traiettoria chiusa intorno allorigine. Questi livelli di energia, corrispondono al moto oscillatorio intorno al punto. 3. ; per la (2) abbiamo una curva chiusa nel piano contenente 4 orbite: i due punti di equilibrio ed altre due orbite che connettono tali punti, dette eteroclite. 4. ; in questo caso la (2) individua due orbite che non si chiudono. Tali livelli di energia corrispondono al moto di rivoluzione completa del pendolo che descrive così lintera circonferenza.

11 11 Piano delle fasi y1y2 k=g

12 12 Metodo RK4: piano delle fasi % Il piano delle fasi e stato ottenuto variando % tmax e le condizioni iniziali % t0=0;tmax=100; n=1000;y0=[pi ]; g=num2str( , '%9.5f'); f1='y(2)';f2=[g, ' *(-sin(y(1))) ' ]; f=strvcat(f1,f2); [T,Y]=Rungekutta4(t0,tmax,n,y0,f); x=Y(:,1);y=Y(:,2); plot(x,y) title('Piano delle fasi-RK4') xlabel('x') ylabel('y')

13 13

14 14 Solver ode45 e piano delle fasi t0=0;tmax=100; y0=[pi ]; [T,Y]=ode45('pendolo',[t0 tmax],y0); x=Y(:,1);y=Y(:,2); plot(x,y) title('Piano delle fasi-ode45') xlabel('x') ylabel('y') t0=0;tmax=100; y0=[pi ]; [T,Y]=ode45('pendolo',[t0 tmax],y0); x=Y(:,1);y=Y(:,2); plot(x,y) title('Piano delle fasi-ode45') xlabel('x') ylabel('y') function f=pendolo(t,y) f=[y(2) *sin(y(1))]; function f=pendolo(t,y) f=[y(2) *sin(y(1))];

15 15

16 16 Solver ode45 con utilizzo di options e piano delle fasi t0=0;tmax=100; y0=[pi ]; options=odeset('RelTol',1e-6,'AbsTol',1e-7); [T,Y]=ode45('pendolo',[t0 tmax],y0,options); x=Y(:,1);y=Y(:,2); plot(x,y) title('Piano delle fasi-ode45') xlabel('x') ylabel('y')

17 17

18 18 Movimento del punto P Nel sistema fissato in figura, il punto P ha coordinate: Per costruire però la rappresentazione del punto P in movimento utilizzando Matlab, occorre determinare le coordinate di P in tale sistema, quindi: (sin ( x ( i )),-cos ( x ( i ))), i = 0,1,…,n. x y P N.B. lasse y in figura è orientato verso il basso, cioè in modo contrario della normale rappresentazione del Matlab.

19 19 Metodo RK4 - simulazione theta=Y(:,1);n=length(T); plot(0,-1,'or'); for i=1:n x(i)=sin(theta(i)); y(i)=-cos(theta(i)); plot(x(i),y(i),'ob',[0,x(i)],[0,y(i)],'r'); axis([ ]) pause(.25) end title('Oscillazioni del pendolo – Runge-Kutta4') xlabel('Ascissa del punto P') ylabel('Ordinata del punto P')

20 20

21 21 Un paracadutista del peso di 80 kg viene lanciato da un aeroplano ad unaltezza di 600 m. Dopo 5 s il paracadute si apre. Nel seguente modello la funzione y rappresenta laltezza del paracadutista ad ogni istante t: Esercizio 2 g= è laccelerazione di gravità,

22 22 m=80 è la massa del paracadutista, è la resistenza dellaria proporzionale al quadrato della velocità con 2 diversi coefficienti di proporzionalità a seconda che si consideri prima o dopo lapertura del paracadute: 1 -Si consideri dapprima il caso Sapendo che la soluzione analitica è

23 23 si chiede: a)a quale altezza si trova il paracadutista dopo 5s? b)quanto tempo impiega il paracadutista per raggiungere il terreno? c) qual è la velocità di impatto? 2 -Si consideri poi il caso e si determini per tentativi il tempo necessario per limpatto a terra utilizzando un metodo multistep. Dopo aver calcolato la soluzione approssimata, si risponda alle domande a), b) e c) del punto precedente.

24 24 Punto 1: lancio senza attrito clear all clc % Lancio senza attrito % altezza dopo 5s g=9.8126;altezza=600;ta=5;ya=-g*ta^2/2+altezza %tempo di impatto: 0=-g/2*tf^2+altezza tf=sqrt(2*altezza/g) % y'(t) calcolata al tempo finale y1=-g*tf t=0:0.2:tf;y=-g*t.^2/2+altezza; Altezza dopo 5s = e+002 tempo di impatto = velocità di impatto = e+002 Risultati

25 25 Istruzioni per la simulazione axis([ ]) hold on for i=1:length(t) plot(t(i),y(i),'*') pause(.25) end hold off title('Altezza in funzione del tempo-Assenza di attrito') xlabel('tempo') ylabel('altezza')

26 26

27 27 Punto 2: metodo multistep Adams-Bashforth (A-B) % Lancio in presenza di attrito clear all clc g= ;gs=num2str(g,'%9.5f'); m=80;ms=num2str(m); k=[1 4]/150; % da 0 a 5 secondi: t0=0;t5=5; y0=[600 0]; ks1=num2str(k(1),'%24.16e'); f1='y(2)';f2=['-',gs,'+(',ks1,'*y(2).^2)/',ms]; f=strvcat(f1,f2); n=50;h=(t5-t0)/n; [t_inn,y_inn]= Rungekutta4(t0,t0+3*h,3,y0,f); [T1,Y1]=Adamsbf(t0,t5,n,y_inn,f); % Lancio in presenza di attrito clear all clc g= ;gs=num2str(g,'%9.5f'); m=80;ms=num2str(m); k=[1 4]/150; % da 0 a 5 secondi: t0=0;t5=5; y0=[600 0]; ks1=num2str(k(1),'%24.16e'); f1='y(2)';f2=['-',gs,'+(',ks1,'*y(2).^2)/',ms]; f=strvcat(f1,f2); n=50;h=(t5-t0)/n; [t_inn,y_inn]= Rungekutta4(t0,t0+3*h,3,y0,f); [T1,Y1]=Adamsbf(t0,t5,n,y_inn,f);

28 28 Applicazione di A-B dopo 5s % dopo 5 secondi: tmax= ; % è stato calcolato per tentativi y5=Y1(end,:); ks2=num2str(k(2),'%24.16e'); f1='y(2)'; f2=['-',gs,'+(',ks2,'*y(2).^2)/',ms]; f=strvcat(f1,f2); n=150;h=(tmax-t5)/n; [t_inn,y_inn]= Rungekutta4(t5,t5+3*h,3,y5,f); [T2,Y2]=Adamsbf(t5,tmax,n,y_inn,f); % dopo 5 secondi: tmax= ; % è stato calcolato per tentativi y5=Y1(end,:); ks2=num2str(k(2),'%24.16e'); f1='y(2)'; f2=['-',gs,'+(',ks2,'*y(2).^2)/',ms]; f=strvcat(f1,f2); n=150;h=(tmax-t5)/n; [t_inn,y_inn]= Rungekutta4(t5,t5+3*h,3,y5,f); [T2,Y2]=Adamsbf(t5,tmax,n,y_inn,f);

29 29 Costruzione delle tabelle tab1=[T1 Y1]; tab1r=tab1(1:5:end,:); s='_______________________________________________ '; disp(s) fprintf('\n TEMPO ALTEZZA VELOCITA''\n') disp(s) fprintf(' %10.5f %20.10f %20.10f\n',tab1r') fprintf('\n\n') tab2=[T2 Y2]; tab2r=tab2(1:10:end,:); disp(s) fprintf('\n TEMPO ALTEZZA VELOCITA''\n') disp(s) fprintf(' %10.5f %20.10f %20.10f\n',tab2r') disp(s)

30 30 Tabella (da 0s a 5s) _____________________________________________________ TEMPO ALTEZZA VELOCITA _____________________________________________________

31 31 Tabella (da 5s al tempo dimpatto) __________________________________________________ TEMPO ALTEZZA VELOCITA __________________________________________________ … … … __________________________________________________

32 32 Istruzioni per la simulazione axis([ ]) hold on for i=1:length(T1) plot(T1(i),Y1(i,1),'*r') pause(.25) end for i=1:length(T2) plot(T2(i),Y2(i,1),'*b') pause(.25) end hold off title('Altezza in funzione del tempo-Adams- Bashforth') xlabel('tempo') ylabel('altezza')

33 33

34 34 ode113 Adams-Bashforth-Moulton n=50; t0=0;tmax=5; h=(tmax-t0)/n; global g m k g= ;m=80; k=1/150; [T1,Y1]=ode113('paracadute',[t0:h:tmax],[600,0],[ ],k); tmax1= ; n=150; h=(tmax1-T1(end))/n; global k k=4/150; [T2,Y2]=ode113('paracadute',[T1(end):h:tmax1],[Y1(end,:)],[],k); function f=paracadute(t,y) global g m k f=[y(2) -g+(k*y(2)^2)/m]; function f=paracadute(t,y) global g m k f=[y(2) -g+(k*y(2)^2)/m];

35 35 Risultati con ode113: da t0=0 a tmax=5s _____________________________________________ TEMPO ALTEZZA VELOCITA _____________________________________________

36 36 Risultati dopo 5s – ode113 _________________________________________________ TEMPO ALTEZZA VELOCITA __________________________________________________

37 37 Esercizio 3 Si consideri un saltatore in lungo con il punto di partenza del salto situato allorigine degli assi coordinati. Il problema della traiettoria del salto è: Le costanti del problema sono La resistenza aerodinamica è data da ed il coefficiente di resistenza e larea della sezione trasversale del saltatore sono rispettivamente: è la densità dellaria diversa ad una certa altezza rispetto al livello del mare. 1 -Dalla natura del problema si desume che nessuna delle variabili del problema può crescere indefinitamente. Stabilire quindi se il problema ammette soluzione unica.

38 38 2 -Si considerino i due casi: a) b) Si deve determinare per tentativi il valore tmax per cui si ottiene y( tmax )=0. Si costruisca un file MATLAB che, una volta avviato: permetta di dare in input il numero di sottointervalli, n=100, in [t0, tmax]; calcoli la soluzione approssimata utilizzando il metodo di Runge-Kutta4 ed un solver di MATLAB (ode23); faccia visualizzare una tabella riassuntiva che riporti lintestazione: tmax distanza e riporti su due righe il valore di tmax per cui y(tmax)=0, trovato nei due casi e la corrispondente distanza ed utilizzi i seguenti formati di stampa: 3 cifre decimali e formato virgola fissa per i valori di tmax; 12 cifre decimali e formato virgola fissa per le distanze di atterraggio. 3 -Mediante subplot con 2 finestre grafiche su una riga, riporti le traiettorie nei 2 casi corredate dell indicazione della distanza e della velocità di impatto. Si commentino i risultati.

39 39 Soluzione con RK4: istruzioni clear all;clc c=0.72;s=0.50;g= ;m=80;v0=10;gs=num2str(g,'%10.5f'); d1=-c*s/(2*m); t0=0;y0=[0 0 pi/8 v0];n=100; f1='y(4)*cos(y(3))'; f2='y(4)*sin(y(3))'; f3=[gs, '/(-y(4))*cos(y(3))']; % caso a rho=0.94; tmax1=input('tmax= ');% tmax1= determinato per tentativi c1=num2str(d1*rho,'%25.16e'); f4=[c1, '*y(4)^2-', gs, '*sin(y(3))']; f=strvcat(f1,f2,f3,f4); [T1,Y1]=Rungekutta4(t0,tmax1,n,y0,f); a1=[T1,Y1]; disp('RISULTATI CASO a)') fprintf(' t x y theta ni \n') fprintf('%6.3f %14.6e %14.6e %14.6e %14.6e\n',a1(1:10:end,:)') % caso b rho=1.29; tmax2=input('tmax= '); % tmax2= determinato per tentativi c2=num2str(d1*rho,'%25.16f'); f4=[c2, '*y(4)^2-', gs, '*sin(y(3))']; f=strvcat(f1,f2,f3,f4); [T2,Y2]=Rungekutta4(t0,tmax2,n,y0,f); a2=[T2,Y2];

40 40 disp(' ');disp('RISULTATI CASO b)') fprintf('t x y theta ni \n') fprintf('%6.3f %14.6e %14.6e %14.6e %14.6e\n', a2(1:10:end,:)') % confronto caso a) e caso b) tab=[a1(end,1:2); a2(end,1:2)]; fprintf('tmax distanza \n') fprintf('%6.3f %16.12f \n',tab') % Grafici subplot(121), plot(Y1(:,1),Y1(:,2),'*'),grid,axis([ ]) title(['a) distanza=' num2str(Y1(end,1)) ' vel=' num2str(Y1(end,4))]); xlabel('x');ylabel('y') subplot(122), plot(Y2(:,1),Y2(:,2),'o'),grid, axis([ ]) title(['b) distanza=' num2str(Y2(end,1)) 'vel=' num2str(Y2(end,4))]); xlabel('x');ylabel('y') Soluzione con RK4: istruzioni

41 41 Risultati caso a) __________________________________________________________________________ t x y theta ni ________________________________________________________________ e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e+000 __________________________________________________________________________ t x y theta ni ________________________________________________________________ e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e+000

42 42 Risultati caso b) __________________________________________________________________________ t x y theta ni ________________________________________________________________ e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e+000 __________________________________________________________________________ t x y theta ni ________________________________________________________________ e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e+000

43 43 Risultati di Runge-kutta4

44 44 Soluzione caso a) con il solver ode23 function yp=saltatore(t,y) global g m c s rho d= c*rho*s/2; yp=[y(4)*cos(y(3));y(4)*sin(y(3));-g/y(4)*cos(y(3)); -d/m*y(4)^2-g*sin(y(3))]; clear all; clc global m c g s rho m=80;c=0.72;s=0.5; rho=0.94;g = ; tmax=0.778; [T,Y]=ode23('saltatore',[0,tmax],[0 0 pi/8 10]); Al tempo finale,t= ,ottenuto per tentativi, si ottengono i seguenti valori delle componenti:

45 45 Risultati ode23 – caso a) __________________________________________________________________________ t x y theta ni ________________________________________________________________ e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e+000 __________________________________________________________________________ t x y theta ni ________________________________________________________________ e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e+000

46 46 Esercizio 4: Problema desame Appello 22/09/2005 Si consideri un satellite in orbita ellittica attorno ad un pianeta di massa M. Supponiamo che il pianeta sia posto nellorigine del riferimento cartesiano bidimensionale e il problema sia normalizzato in modo che GM=1, con G costante di gravitazione universale. Il moto del satellite è allora regolato dalle equazioni: Sia T il periodo di rivoluzione del satellite. 1 - Si stabilisca se il problema ammette soluzione unica. 2 - Per la terza legge di Keplero risulta dove a è il semiasse maggiore dellorbita.

47 47 Quesiti 2a, 2b Si costruisca un file MATLAB: Cognome_studente_matricola.m che, una volta avviato: a) faccia visualizzare una schermata con i dati personali ed una breve presentazione del problema; b) risolva il problema con il metodo RK4 ed utilizzando ODE45 nei casi Nel primo caso lorbita è circolare centro lorigine ed a = 1; nel secondo caso è ancora circolare con a = 2, infine nel terzo caso è unellisse con centro (-1,0) e semiasse maggiore a = 2.

48 48 Quesiti 2c, 2d, 3 c) faccia visualizzare tre tabelle riassuntive, una per ogni caso, che riportino ogni 10 nodi: Intestazione: tempo soluzione derivata_soluzione; con i seguenti formati di stampa: 3 cifre decimali e formato virgola fissa per i valori dei nodi; 8 cifre decimali e virgola fissa per la soluzione e la derivata ; d)mediante il comando subplot, con 6 finestre grafiche, si ritrovino per via grafica (corredata di label e titolo) le affermazioni del punto b) e si tracci, nei tre casi, landamento della soluzione in funzione del tempo. 3 - Si commentino i risultati.

49 49 Considerazioni teoriche Il campo gravitazionale è conservativo, pertanto lenergia totale del satellite si conserva: v = velocità del pianeta, m = massa del satellite, d = distanza satellite-pianeta

50 50 Caso in esame Per le condizioni assegnate nei tre casi, tenendo conto che GM=1, abbiamo: Pertanto in ognuno dei tre casi si hanno orbite circolari/ellittiche.

51 51 2a) file XXXX_XXX.m clear all disp('Cognome e nome studente: XXXX_XXX') disp('Numero di matricola: XXXX') disp(' Corso di Laurea: XXXX ') disp(' ') disp(' Questo programma consente di calcolare ') disp(' e visualizzare la soluzione ') disp(' del seguente sistema: ') disp(' ') disp(' / x''''(t)=-x/(x^2+y^2)^(3/2)' ) disp(' \ y''''(t)=-y/(x^2+y^2)^(3/2)') disp(' con diverse condizioni iniziali') disp(' ') disp(' utilizzando Runge-Kutta4 e il solver ode45. ')

52 52 Terzo caso-Metodo RK4 t0=0;tmax=2*pi*sqrt(2^3); f1='y(2)';f2='-y(1)/(y(1)^2+y(3)^2)^(3/2)'; f3='y(4)';f4='-y(3)/(y(1)^2+y(3)^2)^(3/2)'; f=strvcat(f1,f2,f3,f4); y0=[1 0 0 sqrt(6)/2]; n=100; [T,Y]=Rungekutta4(t0,tmax,n,y0,f); X=Y(:,1); X1=Y(:,2); YV=Y(:,3);YV1=Y(:,4); str1='Runge-Kutta'; disp(['Risultati del metodo di ',str1]); tab=[T X YV X1 YV1]; tab_10=tab(1:10:end,:); s=' ' disp(s) fprintf(' tempo soluzione derivata_soluzione \n') disp(s) fprintf(' %7.3f %12.8f %12.8f %12.8f %12.8f \n',tab_10') subplot(2,1,1),plot(T,X,T,YV),grid,title('soluzioni x(t) e y(t)') xlabel('t'),ylabel('x,y') subplot(2,1,2),plot(X,YV),grid,title('orbita') xlabel('x'),ylabel('y')

53 53 Risultati RK4 –terzo caso __________________________________________________________________ tempo soluzione derivata_soluzione __________________________________________________________________ __________________________________________________________________ tempo soluzione derivata_soluzione __________________________________________________________________

54 54 Traiettoria del satellite nel terzo caso – ode45 [t,y]=ode45('satellite1',[0,2*pi*sqrt(2^3)],[1 0 0 sqrt(6)/2]); plot(y(:,1),y(:,3)) title('traiettoria del satellite nel terzo caso')

55 55 Traiettoria del satellite nel terzo caso – ode45 t0=0; tmax=2*pi*sqrt(2^3); n=100; h=(tmax-t0)/n; [T,Y]=ode45('satellite1',[t0:h:tmax],[1 0 0 sqrt(6)/2]); X=Y(:,1); X1=Y(:,2); YV=Y(:,3);YV1=Y(:,4); tab=[T X YV X1 YV1]; function yp=satellite1(t,y) yp=[y(2) -y(1)/(y(1)^2+y(3)^2)^(3/2) y(4) -y(3)/(y(1)^2+y(3)^2)^(3/2)]; function yp=satellite1(t,y) yp=[y(2) -y(1)/(y(1)^2+y(3)^2)^(3/2) y(4) -y(3)/(y(1)^2+y(3)^2)^(3/2)];

56 56 Risultati ode45 __________________________________________________________________ tempo soluzione derivata_soluzione __________________________________________________________________ e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e+000 > __________________________________________________________________ tempo soluzione derivata_soluzione __________________________________________________________________ e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e+000 >

57 57 Risultati ode45 __________________________________________________________________ tempo soluzione derivata_soluzione __________________________________________________________________ __________________________________________________________________ tempo soluzione derivata_soluzione __________________________________________________________________

58 58 Grafici terzo caso


Scaricare ppt "1 8 a bis lezione di laboratorio Laurea Specialistica in Ingegneria Matematica Ingegneria dei Sistemi Energetici Laurea Specialistica in Ingegneria Matematica."

Presentazioni simili


Annunci Google