1 9 a lezione di laboratorio Laurea Specialistica in Ingegneria Matematica Ingegneria dei Sistemi Energetici Laurea Specialistica in Ingegneria Matematica Ingegneria dei Sistemi Energetici a.a
2 Esercizio 1 Dato il problema: a) Dopo avere stabilito lesistenza e lunicità della soluzione, applicare il metodo delle differenze finite suddividendo lintervallo in N=5 e N=10 sottointervalli;
3 Esercizio 1: quesiti b, c b) si calcoli la maggiorazione teorica dellerrore assoluto e si faccia il confronto con i risultati numerici ottenuti sapendo che la soluzione del problema è: c) si applichi il metodo dello shooting e si analizzino i risultati che si ottengono facendo un confronto con i risultati ottenuti al punto a).
4 PROBLEMA ai LIMITI: generalità PROBLEMA ai LIMITI LINEARE
5 Condizioni generali sufficienti per esistenza ed unicità della soluzione TEOREMA A. IPOTESI: TESI: ESISTE UNICA la SOLUZIONE del PROBLEMA (A)
6 ESISTENZA, UNICITA: caso di PROBLEMA LINEARE Teorema dellalternativa: Dato un problema lineare non omogeneo, la soluzione esiste unica se il problema omogeneo associato ammette un unica soluzione: quella nulla. In caso contrario il problema non omogeneo può non avere soluzione, qualora la soluzione esista, essa non è certamente unica. Nel caso il problema sia lineare, si può, oltre al teorema precedente, utilizzare il seguente:
7 a) Esistenza ed unicità della soluzione del problema assegnato Si può applicare il Principio dellalternativa. Il problema omogeneo associato è: la cui soluzione generale è: da cui, per le condizioni ai limiti: La soluzione del problema non omogeneo è:
8 Metodo alle differenze finite Applicando il metodo alle differenze finite si approssima: Il problema si trasforma allora in un sistema lineare attraverso le relazioni seguenti:
9 Considerazioni sul sistema lineare T è matrice tridiagonale simmetrica con: T(i,i)=2 ed elementi codiagonali = -1
10 Costruzione della matrice A % Attenzione! La matrice dei coefficienti ha dimensione % N-1xN-1 t0=0;tmax=pi/2; det_A=[]; for N=[5 10] %numero dei sottointervalli h=(tmax-t0)/N; v = ones(N-2,1); A =(-2+h^2)*eye(N-1)+diag(v,1)+diag(v,-1) detA=det(A) end La soluzione è unica per entrambi i valori di N, essendo la matrice A non singolare. detA = detA =
11 a) Calcolo della soluzione: istruzioni clear all; clc t0=0;tmax=pi/2; alpha=1; beta=(pi/2)-1; N=[5 10]; Yvera=inline('cos(x)-sin(x)+x'); % metodo alle differenze p='0'; q='-1'; r='t'; m=[1 0; 1 0]; for n=N [T,Y]=Linear_ODE(t0,tmax,alpha,beta,n,m,p,q,r); Err=abs(Yvera(T)-Y); tab=[T Y Err]; fprintf(' Tempo soluzione \t Err\n') fprintf('%7.4f %15.8f %15.3e \n',tab') end
12 Metodo alle differenze: risultati per N = 5 Tempo soluzione Err e e e e e e-016
13 Metodo alle differenze: risultati per N = 10 Tempo soluzione Err e e e e e e e e e e e-016
14 b) Limite teorico dellerrore assoluto Vale la seguente relazione: Poiché:
15 Quindi: Inoltre: quindi: Allora:
16 Confronto maggiorazione teorica e numerica dellerrore assoluto Norma1=norm(Err1,inf) Norma1 = e-004 Norma2=norm(Err2,inf) Norma2 = e-005 Limite teorico Limite numerico
17 c) Istruzioni per il metodo shooting: RK4+secanti clear all; clc t0=0;tmax=pi/2; alpha=1; beta=(pi/2)-1;N=[5 10]; Yvera=inline('cos(x)-sin(x)+x'); % metodo shooting s0=-1;s1=1; fs=strvcat('y(2)','-y(1)+t'); m=[1 0; 1 0];c0=0;c1=-1; for n=N [T,Y]=Shooting(t0,tmax,alpha,beta,n,m,c0,c1,fs,s0,s1); Err=abs(Yvera(T)-Y(:,1)); tab=[T Y(:,1) Err]; fprintf(' Tempo soluzione \t Err\n') fprintf('%7.4f %15.8f %15.3e \n',tab') end
18 Tempo soluzione Err e e e e e e-016 Metodo shooting RK4+secanti: risultati per N = 5
19 Metodo shooting RK4+secanti: risultati per N = 10 Tempo soluzione Err e e e e e e e e e e e-016
20 Metodo shooting: RK4+ interpolazione clear all; clc t0=0; tmax=pi/2; n=10;f=strvcat('y(2)','-y(1)+t'); s=-0.25:0.25:2;ncase=length(s);b=zeros(1,ncase);l=[]; for i=1:ncase y0=[1,s(i)]; [T,Y]=Rungekutta4(t0,tmax,n,y0,f); hold on; plot(T,Y(:,1)); grid on; title('Soluzioni ottenute con i vari valori di s'); xlabel('Tempo'); ylabel('Soluzione'); l=num2str(s(i)); legend(l); gtext(l); [m,nn]=size(Y); b(1,i)=Y(m,1); end p=polyfit(b,s,ncase-1);so=polyval(p,pi/2-1); fprintf('Valore ottimale di s: %20.15f \n',so); y0=[1,so];[T,Y]=Rungekutta4(t0,tmax,n,y0,f); fprintf('Valori trovati nei nodi \n'); fprintf( ' %6.3f %20.12f \n',[T,Y(:,1)] ' ); plot(T,Y(:,1),'r');lo=num2str(so);gtext(lo);legend(lo);
21 Shooting + Interpolazione
22 SOLUZIONE per s = so
23 RISULT. RK4 + Interpolazione Nodi Valori approssimati Nodi Valori approssimati Valore di so: e-006 pertanto le soluzioni corrispondenti a s=0 e s= so, coincidono nel grafico.
24 File limiti.m - parte 1 clear all; clc t0=0;tmax=pi/2; alpha=1;beta=(pi/2)-1; N=input('N ='); % METODO linear_ode p='0';q='-1';r='t';m=[1 0; 1 0]; % METODO shooting (RK4+secanti) s0=-1;s1=1; m=[1 0; 1 0]; c0=0;c1=-1; fs=strvcat('y(2)','-y(1)+t'); % Soluzione vera Yvera=inline('cos(x)-sin(x)+x'); clear all; clc t0=0;tmax=pi/2; alpha=1;beta=(pi/2)-1; N=input('N ='); % METODO linear_ode p='0';q='-1';r='t';m=[1 0; 1 0]; % METODO shooting (RK4+secanti) s0=-1;s1=1; m=[1 0; 1 0]; c0=0;c1=-1; fs=strvcat('y(2)','-y(1)+t'); % Soluzione vera Yvera=inline('cos(x)-sin(x)+x');
25 File limiti.m - parte 2 % Implementazione dei metodi [T,YL]=Linear_ODE(t0,tmax,alpha,beta,N,m,p,q,r); [T,Ys]=Shooting(t0,tmax,alpha,beta,N,m,c0,c1,fs,s0,s1); % Confronto con la soluzione vera Err_L=abs(Yvera(T)-YL); Err_s=abs(Yvera(T)-Ys(:,1)); % Stampa dei risultati linear_ode tab=[T YL Ys(:,1) Err_L Err_s ]; fprintf(' Tempo soluzione_L soluzione_s\t Err_L Err_s\n') fprintf('%7.4f %15.8f %15.8f %15.2e %15.2e \n',tab')
26 Tabella riassuntiva N=10 Tempo soluzione_L soluzione_s Err_L Err_s e e e e e e e e e e e e e e e e e e e e e e-016 Tempo soluzione_L soluzione_s Err_L Err_s e e e e e e e e e e e e e e e e e e e e e e-016
27 Esercizio 2 Si consideri il seguente problema ai limiti: a) Si verifichi che: è soluzione del problema (1); b) Si applichi il metodo alle differenze finite con partizioni di N=10 e N=40 sottointervalli.
28 Esercizio 2: quesiti c, d c) si costruisca una tabella che fornisca: Intestazione: tempo soluzione errore Stampa dei risultati, ogni 5, con formato: 3 cifre decimali e virgola fissa per i tempi; 8 cifre decimali e formato esponenziale per la soluzione; 2 cifre decimali e formato esponenziale per lerrore assoluto. d) Sulla stessa figura, si disegnino i grafici, per N=10, della soluzione vera e di quella approssimata.
29 a) Verifica della soluzione e sostituendo nel problema (1): verifica le condiz. ai limiti Calcolando per le derivate : OK!
30 b) metodo alle differenze finite % file diff.m clear all; clc t0=0;tmax=1; alpha=0;beta=0; N=input(' N= '); % function linear_ode p='0';q='1';r='t'; m=[1 0; 1 0]; YV=inline('(exp(t)-exp(-t))/(exp(1)-exp(-1))- t ' ); [T,Y]=Linear_ODE(t0,tmax,alpha,beta,N,m,p,q,r);
31 c) Istruzioni per la stampa dei risultati % Calcolo dellerrore assoluto err=abs(YV(T)-Y); % Stampa dei risultati tab=[T Y err ]; disp('tempo soluzione errore') fprintf('%6.3f %17.8e %15.2e \n',tab(1:5:end,:)')
32 Metodo differenze: risultati N = 10 tempo soluzione errore e e e e e e+000 tempo soluzione errore e e e e e e+000
33 Metodo differenze: risultati N = 40 tempo soluzione errore e e e e e e e e e e e e e e e e e e+000 tempo soluzione errore e e e e e e e e e e e e e e e e e e+000
34 d) Istruzioni e grafico per N=10 plot(T,YV(T),T,Y,'*') xlabel('T')
35 Esercizio 3 Si consideri il trasferimento di calore in una barra isolata con dimensione dominante data dalla lunghezza, con sezione trasversale di area A, lunghezza L, conduttività k, coefficiente di convezione, temperatura ambiente pari a Il problema che si genera è:
36 f è la sorgente distribuita di calore (spesso = 0); la seconda condizione al limite tiene conto del trasferimento di calore convettivo attraverso lestremo x=L e è il flusso di calore nel suddetto punto. Supponiamo: a =kA=86Wcm/°C, L=10cm, Il problema diventa:
37 Caso soluzione regolare Trasferimento di calore in una barra isolata x Temp. ambiente T T= T 0
38 Casi di possibile non regolarità della soluzione (a)barra di materiali diversi (compositi) (b) Barra di sezioni diverse
39 Soluzione analitica del problema (1) Si integrano due volte i due membri dellequazione differenziale; si ottiene: Si impongono le condizioni: Si ricava T(10) dalla soluzione generale, quindi la soluzione vera è:
40 Soluzione numerica con shooting e differenze finite Il problema viene risolto anche numericamente utilizzando i metodi: shooting+secanti e differenze finite mediante lo script memorizzato col nome asta e riportato nella diapositiva seguente.
41 clc;clear all t0=0;tmax=10;alpha=100;beta=300; m=[1 0;10 86];c0=0;c1=-1; N=100;s0=1;s1=1.2; p='0';q='0';r='0'; f=strvcat('y(2)','0'); [T,Y,s]=Shooting(t0,tmax,alpha,beta,N,m,c0,c1,f,s0,s1); [T1,Y1]=Linear_ODE(t0,tmax,alpha,beta,N,m,p,q,r); xvera1=-700*T./ ;xvera2=-700/186+T.*0; xvera=[xvera1,xvera2]; err=abs(xvera-Y); err1=abs(xvera1-Y1); tab=[T Y err];tabr=tab(1:10:end,:); ss=' '; disp(ss) fprintf('X Tapp. dTapp errT errdT\n') disp(ss) fprintf('%9.4f %15.7e %15.7e %8.2e %8.2e\n',tabr') fprintf('\n\n\n\n\n\n') tab1=[T1 Y1 err1];tabr1=tab1(1:10:end,:); disp(ss) fprintf('X Tapp. errT \n') disp(ss) fprintf('%9.4f %15.7e %8.2e \n',tabr1')
42 Risultati con shooting+secanti X Tapp. dTapp errT errdT e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e-014 X Tapp. dTapp errT errdT e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e-014
43 Risultati con differenze finite X Tapp. errT e e e e e e e e e e e e e e e e e e e e e e-012 Commentare e motivare la differenza dei risultati ottenuti con i due metodi.
44 Si determini lo spostamento verticale di una fune lunga 1 u.m., soggetta ad un carico trasversale di intensità w per unità di lunghezza. T è la tensione lungo lasse x e k è il coefficiente di elasticità della fune. Se u(x) è lo spostamento verticale, si ha il seguente problema : 4 - Compito desame (07/01/2003 ) Si assume
45 1) Si dica motivando la risposta, se sono verificate le condizioni affinché esista unica, la soluzione del problema. 2. 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; Quesiti 1, 2a
46 Quesiti 2b, 2c b) Risolva il problema col metodo alle diff. finite con i passi c) costruisca una tabella che riporti lintestazione: nodi soluzione1 soluzione2 soluzione3; su ogni riga, il valore di x i per i nodi coincidenti nelle varie partizioni, il valore della soluzione calcolata nei nodi, con i formati di stampa: 3 cifre decimali e formato virgola fissa per x i ; 12 cifre decimali e formato virgola fissa per i valori della soluzione nei 3 casi considerati.
47 1) Verifica dellesistenza ed unicità della soluzione Poiché : la soluzione! OK Teorema A N.B. Il problema dato è lineare si potrebbe utilizzare anche il Teorema dellalternativa.
48 2a) file XXXX_XXX.m clc 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 problema ai limiti ') disp(' / ') disp(' \ -u''''(x)+ k/T u(x)= w/T ') disp(' / u(0)=0 u(1)=0') disp(' \ ') disp(' ') disp(' utilizzando il metodo delle differenze finite. ')
49 2b) Istruzioni clear all t0=0;tmax=1; alpha=0; beta=0; T=1;k=0.1;c=k/T; % METODO linear_ode q=num2str(c,'%25.16e');p='0'; r=['(-1-sin(4*pi*t))/',num2str(T,' %25.16e')]; m=[1 0; 1 0]; j=[ ];N=j;nj=length(N); tab=[];st= '%6.3f '; for i =1:nj [T,Y]=Linear_ODE(t0,tmax,alpha,beta,N(i),m,p,q,r); tab=[tab,Y(1:round(N(i)/N(1)):end)]; st=[st ' %16.12f ']; end tab=[T(1:round(N(nj)/N(1)):end) tab]; disp('nodi soluzione1 soluzione2 soluzione3') fprintf([st '\n],tab')
50 2c) Risultati nodi soluzione1 soluzione2 soluzione nodi soluzione1 soluzione2 soluzione
51 Grafico soluzione approssimata plot(T,Y), grid,title('Soluzione approssimata') N=40
52 Metodo alle differenze: caso non lineare La funzione f è non lineare. Utilizzando:
53 Metodo alle differenze: caso non lineare Sistema di equazioni non lineari con
54 Esercizio 5 (esame ) Si consideri il seguente problema ai limiti: 1)Si provi che esso ha ununica soluzione che è non negativa in [0, 1]. 2)Si costruisca un file Matlab: Cognome_Nome_studente.m che, una volta avviato:
55 Quesiti 2a), 2b), 2c) e 2d) a)faccia visualizzare una schermata con i dati personali ed una breve presentazione del problema; b)permetta di dare in input il numero di sottointervalli spaziali N1=20, N2=40; c)risolva il problema dato nei due casi con il metodo Shooting+secanti e con le differenze finite; d)Visualizzi una tabella che riporti lintestazione: x sol1s sol2s sol1dif sol2dif con le quantità x, sol1s, sol2s, sol1dif, sol2dif rappresentanti, rispettivamente i nodi coincidenti nelle due partizioni, la soluzione numerica in ognuno dei due casi, calcolata con i due metodi, con i seguenti formati di stampa:
56 Quesiti 2e) e 3) 3 cifre decimali e formato virgola fissa per i nodi, 8 cifre decimali e formato virgola mobile per la soluzione nei due casi; e) costruisca una figura in cui si riporti, mediante subplot con due finestre su una riga, nella prima finestra la soluzione approssimata calcolata con i due metodi nel caso N1=20, nella seconda la soluzione approssimata con i due metodi nel caso N2=40. 3) Si commentino i risultati ottenuti specificando quante cifre della soluzione numerica si possono ritenere corrette utilizzando i due metodi.
57 Quesito1:Esistenza ed unicità della soluzione Si consideri il problema associato con
58 Proprietà del problema associato Per il nuovo problema risulta: Sono pertanto soddisfatte le ipotesi del teorema di esistenza ed unicità della soluzione sulla funzione f. Le ipotesi sui coefficienti delle condizioni ai limiti sono banalmente soddisfatte. Il problema associato ammette quindi soluzione unica che è sempre positiva per le condizioni ai limiti. Si deduce allora che anche il problema assegnato ha soluzione unica e sempre positiva.
59 Istruzioni relative ai quesiti 2b) e 2c) clear all;clc t0=0;tmax=1;alfa=0;beta=0; m=[1 0; 1 0]; N=[20 40];% richiesti in input fun='-exp(-y(i ))';dfi_1='0'; dfi='exp(-y(i ))'; dfip1='0';c0=0; c1=-1; f1='y(2)'; f2='-exp(-y(1))';f=strvcat(f1,f2); s0=-0.5;s1=0.5; % Metodi tab=[];st= '%8.3f '; for i=1:length(N) y0=zeros(N(i)+1,1); [T,Y_df]=Nonlin_ODE(t0,tmax,alfa,beta,N(i),fun,dfi_1, dfi,dfip1,y0); [T,Y_s,s]=Shooting(t0,tmax,alfa,beta,N(i),m,c0,c1,f, s0,s1); tab=[tab Y_s(1:round(N(i)/N(1)):end,1) Y_df(1:round(N(i)/N(1)):end)]; st=[st, ' %16.8e %16.8e ']; end
60 Istruzioni relative al quesito 2d) % Formattazione tabella st=[st '\n']; tab=[T(1:round(N(end)/N(1)):end) tab]; tab(:,[3,4])=tab(:,[4,3]); str='________________________________________________'; disp(' TABELLA RIASSUNTIVA: SHOOTING-DIFFERENZE') disp(str) fprintf(' x \t\t Y1_s \t\t Y2_s \t\t Y1_df \t Y2_df \n') disp(str) fprintf(st,tab')
61 Istruzioni relative al quesito 2e) % Grafici (istruzioni allinterno del ciclo for) if i==1 c1= 'r'; c2= 'g o'; else c1= 'm-.'; c2= 'g '; end subplot(1,length(N),i),plot(T,Y_s(:,1),c1,T,Y_df,c2); title(['M. shooting e differenze N=',num2str(N(i))]) xlabel('x');ylabel('y');legend('Y_s','Y_df')
62 Risultati TABELLA RIASSUNTIVA: SHOOTING-DIFFERENZE ________________________________________________________________________________ x Y1_s Y2_s Y1_df Y2_df ________________________________________________________________________________ e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e 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
63 Grafici