La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


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

1 1 11 a lezione di laboratorio Laurea Specialistica in Ingegneria Matematica Ingegneria dei Sistemi Energetici Laurea Specialistica in Ingegneria Matematica Ingegneria dei Sistemi Energetici a.a. 2007-2008

2 2 Generalità su un problema del 2° ordine di tipo iperbolico Si può assumere per semplicità: (1) Si fa notare che le funzioni al bordo sono non nulle.

3 3 Approssimazioni utilizzate Si approssimano le derivate parziali seconde con le differenze finite: La condizione iniziale sulla derivata si approssima con una differenza centrale: con errore locale nell’approssimazione delle derivate:

4 4 Problema discreto Si indica si considera dapprima j = 0, si utilizzano le condizioni iniziali e si ottiene la soluzione approssimata in. Per ci serviremo della seconda equazione del sistema (2) e delle condizioni iniziali/al contorno: Si è posto:

5 5 Costruzione della forma vettoriale Dalla seconda equazione dello schema assumendo ad esempio N=5 e j=1, si ha: il vettore a primo membro è la soluzione approssimata nei punti al livello 2. V j (N-1) V j (1) U j-1

6 6 Costruzione della forma vettoriale Poniamo quindi: N.B. Il vettore ha N-1 componenti di cui N–3 uguali a zero!!! Per :

7 7 Forma vettoriale Si ottiene allora: con la matrice A tridiagonale e simmetrica: I matrice identità, T matrice tridiagonale con 2 sulla diagonale principale e –1 sulle due codiagonali Si ricorda che il metodo converge se

8 8 Function PDE_iperboliche:parte 1 function [x,t,sol]=PDE_iperboliche(t0,M,x0,xN,h,k,v,r,f,l, g1,g2); alfa=v*k/h;x=(x0:h:xN)';x(end)=xN;N=length(x)-1; f=eval(f).*ones(size(x)); %condizione iniziale U(x,t0) %La presenza del vettore è necessaria per il caso f=cost. U0=f(2:N); vv=eval(l).*ones(size(x)); %condizione iniziale Ut(x,t0) % Calcolo della soluzione al passo 1 t=t0;x=x(2:end-1); tnoto=eval(r).*ones(size(x)); U1=alfa^2/2*(f(1:N-1)+f(1+2:N+1))+(1- alfa^2)*f(2:N)+k*vv(2:N) + 0.5*k^2*tnoto; tM=k*M+t0;t=linspace(t0,tM,M+1)'; v1=eval(g1).*ones(size(t)); %condizione al contorno U(xo,t) v2=eval(g2).*ones(size(t)); %condizione al contorno U(xN,t) Vj=zeros(N-1,1); sol=[f'; [v1(2) U1' v2(2)]];Uj=U1;Uj_1=U0;

9 9 Function PDE_iperboliche:parte 2 T=2*eye(N-1)-diag(ones(1,N-2),-1)-diag(ones(1,N-2),+1); A=2*eye(N-1)-alfa^2*T; t=t(2); for j=2:M Vj([1,N-1])=[v1(j),v2(j)]; tnoto=eval(r).*ones(size(x)); Uj1=A*Uj-Uj_1+alfa^2*Vj + k^2*tnoto; sol=[sol;[v1(j+1); Uj1 ;v2(j+1)]']; Uj_1=Uj; Uj=Uj1; t=t+k; end t=linspace(t0,tM,M+1)'; x=[x0;x;xN];

10 10 Esercizio 1 Per le funzioni che forniscono le condizioni, si sono utilizzati gli stessi nomi della function PDE_iperboliche

11 11 b) graficare la superficie che si ottiene e le sue curve di livello in due figure distinte, utilizzando i comandi surf, per la figura 1, e contour per la figura 2. Analizzare bene e commentare le figure. a) calcolare la soluzione approssimata del problema con il metodo esplicito utilizzando i seguenti valori per i passi k = 0.25, e h = 0.30 ed un numero di intervalli temporali pari a M = 40 ; Quesiti a, b

12 12 c) Cosa accade per la teoria se si modifica la condizione sull’asse t in g 1 ( t ) = 1 ? d) Risolvere ancora il problema, eseguire i grafici come al punto b) ed evidenziarne le differenze col caso precedente. Riportare inoltre sulla figura 2 ( contour ) anche la retta di equazione t = x/v; cosa rappresenta? Quesiti c, d Lo studente risolva ed analizzi il problema assumendo M = 80, ed utilizzi il comando subplot per le figure di cui al punto b).

13 13 Calcolo della soluzione: file onda.m clear all;close all;clc % Dati del problema t0=0; M=40; x0=0; xN=10; k=.25;h=.30; %cond.iniziale su t=0 f='(x-5).*exp(-(x-5).^2 )/.76 '; l='0'; %altra cond.iniz.su t=0 g1='0'; %cond. al contorno su x=x0 g2='0'; %cond.al contorno su x=xN r='0'; v=1;alfa=v*k/h; % implementazione del metodo [x,t,sol]=PDE_iperboliche(t0,M,x0,xN,h,k,v,r,f,l,g1,g2);

14 14 % N.B. Non si costruisce la matrice dei nodi con % meshgrid perché non si valuta la soluzione vera; % l’assegnazione particolare di H1 è stata fatta per % avere una grafica più significativa figure(1) H1=surf(t,x,sol'); % vedi N.B. xlabel('t','FontWeight','bold','Fontsize',12) ylabel('x','FontWeight','bold','Fontsize',12) title(['Soluzione con alfa= ' num2str(alfa)],'FontWeight','bold','Fontsize',12) set(gca,'FontWeight','bold','Fontsize',12) figure(2) [C,H]=contour(x,t,sol,20); axis square xlabel('x','FontWeight','bold','Fontsize',12) ylabel('t','FontWeight','bold','Fontsize',12) title('Curve di livello','FontWeight','bold','Fontsize',12) set(H,'LineWidth',2) %spessore della linea set(gca,'FontWeight','bold','Fontsize',12)

15 15 Grafico della soluzione numerica Figura 1

16 16 Altro grafico di sol H2=surf(x,t,sol);% osservare bene % l’istruzione!!!

17 17 Curve di livello Figura 2

18 18 Grafico della condizione iniziale f='(x-5).*exp(-(x-5).^2)/.76'; fplot(f, [0 10]), xlabel('x');ylabel('y'); title(['Grafico di f(x)=', f]);

19 19 Formula di D’Alembert La soluzione analitica del problema di Cauchy sull’asse reale, associato al problema (1), con gli stessi dati iniziali è data, in base alla formula di D’Alembert, da: con i dati assegnati su una linea che non è caratteristica.

20 20 Soluzione analitica dell’esercizio 1 la soluzione analitica del problema di Cauchy ottenuto dall’esercizio 1 non considerando le condizioni al contorno, è: Tenendo conto che:

21 21 Soluzione del problema di Cauchy: formula di D’Alembert [X,T]=meshgrid(x,t); sv=inline(f); solvera=1/2*(sv(X+T)+sv(X-T));surf(t,x,solvera') Figura 3

22 22 Curve di livello della soluzione di D’Alembert figure(4) [C,H]=contour(x,t,solvera,20); axis square Figura 4 Osservare le differenze tra le figure 1 e 3 e tra le figure 2 e 4; giustificare teoricamente le differenze.

23 23 Soluzione numerica: M=3*40 N.B. 1- Il numero degli intervalli temporali è stato triplicato per evidenziare il fenomeno delle onde; 2- la figura è stata opportunamente ruotata

24 24 c) Caso con g 1 ( t ) = 1 Imporre la condizione: equivale ad introdurre una discontinuità nel punto (0,0), discontinuità che si propaga lungo la caratteristica passante per tale punto di equazione. Dal punto di vista del calcolo, è sufficiente modificare nel file onda.m solo l’istruzione: % condizione al contorno in (0,tj) g1='0' sostituendola con g1='1';

25 25 Grafico della soluzione con g 1 ( t )=1 [x,t,sol]=PDE_iperboliche(t0,M,x0,xN,h,k,v,r,f,l,g1,g2); figure(1)... % rimangono le stesse istruzioni figure(2) [C,H]=contour(x,t,sol,20);... % rimangono le stesse istruzioni set(gca,'FontWeight','bold','Fontsize',12) % grafico della retta di equazione t=x/v t1=x/v; % caratteristica passante per (0,0) hold on H3=plot(x,t1,'k'); set(H3,'LineWidth',3) %spessore della linea set(gca,'FontWeight','bold','Fontsize',12)

26 26 Grafico soluzione numerica in presenza di singolarità Figura 1

27 27 Altro grafico di sol in presenza di singolarità H2=surf(x,t,sol);

28 28 Curve di livello senza la retta t = x/v Figura 2

29 29 Curve di livello e retta caratteristica per (0,0)

30 30 Generalità su un problema del 2° ordine di tipo parabolico Si può assumere per semplicità: N.B. Condizioni al contorno di Dirichlet

31 31 Metodo di Crank-Nicolson Si colloca l’equazione differenziale in è approssimata con la media delle differenze centrali relative ai livelli j e j+1 : La è approssimata con una differenza centrale di passo k/2 : i-1ii+1 j j+1

32 32 Schema di Crank-Nicolson Posto, si ottiene:

33 33 Costruzione della forma vettoriale Se si assume N=5, dalla prima equazione dello schema per j=0, si ottiene il sistema: V j (1) V j (N-1) V j+1 (1) V j+1 (N-1)

34 34 Forma vettoriale Per j = 0 abbiamo : Per j=1,2,… poniamo: Si ottiene il sistema lineare: N-3 La quantità nell’ovale è b N-3

35 35 Caratteristiche delle matrici A, B A, B sono tridiagonali e simmetriche Si ricorda che il metodo converge

36 36 Function PDE_paraboliche_CN: parte 1 function [x,t,sol]=PDE_paraboliche_CN(t0,M,x0,xN,h,k,c,r, f,g,l); alfa=k*c/h^2;x=(x0:h:xN)'; x(end)=xN; N=length(x)-1; tM=M*k+t0; t=linspace(t0,tM,M+1)'; f=eval(f).*ones(size(x)); %condizione iniziale U(x,0) v1=eval(g).*ones(size(t)); %condizione al contorno U(xo,t) v2=eval(l).*ones(size(t)); %condizione al contorno U(xN,t) U0=f(2:N); sol=f'; Vj=zeros(N-1,1); Uj=U0; bb=alfa*ones(N-2,1); A=-diag(bb,-1)+2*(1+alfa)*eye(N-1)-diag(bb,1); B= diag(bb,-1)+2*(1-alfa)*eye(N-1)+diag(bb,1); N.B. Questa function risolve un problema parabolico del tipo:

37 37 Function PDE_paraboliche_CN: parte 2 t=t0+k/2;x=x(2:end-1); for j=1:M tnoto=eval(r).*ones(N-1,1); Vj([1,N-1])=[v1(j)+v1(j+1),v2(j)+v2(j+1)]; b=B*Uj+alfa*Vj + 2*k*tnoto; Uj1=A\b; sol=[sol;[v1(j+1); Uj1 ;v2(j+1)]']; Uj=Uj1; t=t+k; end t=linspace(t0,tM,M+1)';x=[x0;x;xN]; Attenzione all’indice j!!!

38 38 Esercizio 2 Si risolva con il metodo di Crank-Nicolson il seguente problema con le condizioni al contorno miste Dirichlet-Neumann : con passo spaziale h = 0.2, passi temporali k =[ 0.5, 0.25,0.125 ] e numero di intervalli temporali M = 30. 1- Si rappresenti la soluzione e le sue linee di livello. 2- Si calcoli la soluzione approssimata in x=0.4 e t variabile, nel caso M fissato e nel caso tM fissato.

39 39 Condizioni iniziali ed al contorno Per conservare l’ordine di approssimazione, la condizione viene approssimata con una differenza centrale: Si noti la continuità del problema nel punto ( x 0,t 0 )=(0,0):

40 40 Posto, si assume: si ottiene quindi: Approssimazione del problema in esame Dall’uguaglianza (*) si ricava:

41 41 Costruzione del sistema Per i=1,2,3,4 e j = 0, lo schema diventa: V j (1) V j+1 (1) V j+1 (N) V j (N) N.B In questo caso la dimensione di e del sistema è N; occorre infatti calcolare la soluzione anche in x=xN.

42 42 Sistema relativo al problema in esame Il sistema diventa: dove:

43 43 Soluzione del problema Il sistema è lineare ad ogni livello j; la matrice dei coefficienti di dimensione NxN ha la forma: A è matrice diagonalmente dominante ( A non singolare ), quindi la soluzione approssimata nei nodi, per i= 1,2,3,4 ad ogni livello, esiste ed è unica.

44 44 Function Pde_paraboliche_CN1... U0=f(2:N+1);sol=f';Uj=U0;Vj=zeros(N,1); bb=alfa*ones(N-1,1); A=-diag(bb,-1)+2*(1+alfa)*eye(N)-diag(bb,1); A(N,N-1)=-2*alfa; B= diag(bb,-1)+2*(1-alfa)*eye(N)+diag(bb,1); B(N,N-1)= 2*alfa; t=t0+k/2;x=x(2:end); for j=1:M tnoto=eval(r).*ones(N,1); Vj([1,N])=[v1(j)+v1(j+1),2*h*(v2(j)+v2(j+1))]; b=B*Uj+alfa*Vj +2*k*tnoto; Uj1=A\b; sol=[sol;[v1(j+1); Uj1]']; Uj=Uj1; t=t+k; end t=linspace(t0,tM,M+1)';x=[x0;x];

45 45 Inizializzazione dei dati clear all;close all; f='x'; %condizione iniziale nei nodi (xi,0) g='0'; %condizione al contorno U(xo,t) l='t'; %condizione al contorno Ux(xN,t) r='0'; %termine noto x0=0;xN=1; t0=0; h=.2;c=1; xsol=0.4; ind=round((xsol-x0)/h)+1; tab=[]; k=[.5.25.125]; % attenzione si richiede che i valori di k siano % multipli altrimenti la soluzione non può essere confrontata % nei nodi corrispondenti

46 46 a - Calcolo della soluzione approssimata con M fissato % si può usare il comando sol(:,:,i)solo se le % matrici hanno le stesse dimensioni M=30; tM3=t0+M*k(3); num=fix((tM3-t0)/k(1)); t_fin=t0+num*k(1); % 3.5 valore limite comune for i=1:length(k) [x,t,sol(:,:,i)]=PDE_paraboliche_CN1(t0,M,x0,xN, h,k(i),c,r,f,g,l); n=round((t_fin-t0)/k(i))+1; tab=[tab sol(1:round(k(1)/k(i)):n,ind,i)]; end tab=[t(1:round(k(1)/k(i)):n) tab]; fprintf(' t sol1 sol2 sol3\n') fprintf('%7.4f %10.6f %10.6f %10.6f\n',tab')

47 47 Soluzione approssimata U(0.4,t) t sol1 sol2 sol3 0.0000 0.400000 0.400000 0.400000 0.5000 0.225572 0.187795 0.206611 1.0000 0.212672 0.262851 0.265497 1.5000 0.438797 0.425218 0.424684 2.0000 0.597636 0.613716 0.612849 2.5000 0.815526 0.810050 0.809411 3.0000 1.004790 1.008788 1.008411 3.5000 1.209085 1.208307 1.208120 t sol1 sol2 sol3 0.0000 0.400000 0.400000 0.400000 0.5000 0.225572 0.187795 0.206611 1.0000 0.212672 0.262851 0.265497 1.5000 0.438797 0.425218 0.424684 2.0000 0.597636 0.613716 0.612849 2.5000 0.815526 0.810050 0.809411 3.0000 1.004790 1.008788 1.008411 3.5000 1.209085 1.208307 1.208120

48 48 Rappresentazione della soluzione %____________________________________________________ % % Queste istruzioni inserite nel ciclo consentono di % graficare tutte le soluzioni e relative curve di % livello. %____________________________________________________ jj=1; alfa=k(i)*c/h^2; figure(jj) surf(x,t,sol(:,:,i)); colorbar('vert') title(['Soluzione con alfa= ' num2str(alfa)]) xlabel('x');ylabel('t') figure(jj+1) contour(x,t,sol(:,:,i),20); colorbar('vert') title(['Curve di livello con alfa= ' num2str(alfa)]) xlabel('x');ylabel('t') jj=jj+2;

49 49 Grafico della soluzione approssimata con M fissato Figura 1

50 50 Figura 2 Si invitano gli studenti a risolvere l’esercizio 2 con il metodo esplicito, modificando opportunamente la function relativa a tale metodo.

51 51 b - Calcolo della soluzione approssimata con tM fissato tM=3.5; tab=[]; for i=1:length(k) M=round((tM-t0)/k(i)); [x,t,sol]=PDE_paraboliche_CN1(t0,M,x0,xN,h,k(i), c,r,f,g,l); tab=[tab sol(1:round(k(1)/k(i)):end,ind)]; end tab=[t(1:round(k(1)/k(i)):end) tab]; fprintf(' t sol1 sol2 sol3\n') fprintf('%7.4f %10.6f %10.6f %10.6f\n',tab') Si riportano ora le istruzioni relative al caso tM fissato.

52 52 Esercizio 3 Sia dato il seguente problema alle derivate parziali di tipo parabolico: con soluzione vera:

53 53 Quesito 1) e 2) 2) Si valuti, per il passo spaziale h=0.1, passo temporale k=0.02 e M=20, l’errore assoluto massimo che si commette usando il metodo di Crank-Nicolson ed il metodo alle differenze esplicito. Si confrontino e commentino i risultati; soddisfano le aspettative teoriche? 1)Si verifichi che la funzione (1) è soluzione del problema proposto. Lo studente risolva ed analizzi il problema anche con M = 40, facendo le dovute considerazioni sull’errore di troncamento delle approssimazioni effettuate, e su come una perturbazione dovuta alla macchina potrebbe influenzare i risultati.

54 54 Quesito 3) 3) Si costruiscano due tabelle che riportino l’intestazione: x sol1 sol2 err1 err2 con le quantità x, sol1, sol2, err1, err2 rappresentanti, rispettivamente i nodi spaziali, la soluzione numerica e l’errore ottenuti con i due metodi, da riportare uno ogni due, valutati in corrispondenza dei valori t=0.1 e t=0.4 utilizzando i seguenti formati di stampa: 3 cifre decimali e formato virgola fissa per i nodi, 8 cifre decimali e formato esponenziale per la soluzione, 2 cifre decimali e formato virgola mobile per l’errore.

55 55 Istruzioni relative al quesito 2) clc; clear all t0=0;M=20;x0=0;xN=2;h=0.1; k=0.02;c=1/2; r='-3*(1+x)';f='x.^3';g='-3*t';l='8-3*t'; % Implementazione dei metodi [x,t,sol_CN]=PDE_paraboliche_CN(t0,M,x0,xN,h,k,c,r,f,g,l); [x,t,sol_esp]=PDE_paraboliche(t0,M,x0,xN,h,k,c,r,f,g,l); % Confronto con la soluzione vera [X,T]=meshgrid(x,t); Uvera=X.^3-3*T; err_CN=abs(Uvera-sol_CN); err_esp=abs(Uvera-sol_esp); errmax_CN=max(max(err_CN)); errmax_esp=max(max(err_esp));

56 56 Istruzioni relative al quesito 3) alfa=k*c/h^2; disp(' alfa err_CN err_esp') fprintf('\n %7.3f %11.2e %11.2e \n\n', [alfa errmax_CN errmax_esp]) for t_val=[0.1 0.4] i=round((t_val-t0)/k)+1; tab=[x sol_CN(i,:)' sol_esp(i,:)', err_CN(i,:)', err_esp(i,:)']; tab_rid=tab(1:2:end,:); fprintf([' \n\n Tabella per t=', num2str(t_val), ' \n\n x \t\t sol_CN \t\t sol_esp \t\t err_CN \t\t err_esp \n']) fprintf(' %7.3f %16.8e %16.8e %10.2e %10.2e \n', tab_rid') end

57 57 Risultati quesito 3):tabella 1 Tabella per t=0.1 x sol_CN sol_esp err_CN err_esp 0.000 -3.00000000e-001 -3.00000000e-001 0.00e+000 0.00e+000 0.200 -2.92000000e-001 -2.92000000e-001 5.55e-017 1.67e-016 0.400 -2.36000000e-001 -2.36000000e-001 2.78e-017 1.75e-015 0.600 -8.40000000e-002 -8.40000000e-002 1.94e-016 3.43e-015 0.800 2.12000000e-001 2.12000000e-001 4.16e-016 4.52e-015 1.000 7.00000000e-001 7.00000000e-001 6.66e-016 1.73e-014 1.200 1.42800000e+000 1.42800000e+000 8.88e-016 6.00e-015 1.400 2.44400000e+000 2.44400000e+000 2.66e-015 3.33e-014 1.600 3.79600000e+000 3.79600000e+000 7.11e-015 9.99e-014 1.800 5.53200000e+000 5.53200000e+000 7.11e-015 1.10e-013 2.000 7.70000000e+000 7.70000000e+000 0.00e+000 0.00e+000 Tabella per t=0.1 x sol_CN sol_esp err_CN err_esp 0.000 -3.00000000e-001 -3.00000000e-001 0.00e+000 0.00e+000 0.200 -2.92000000e-001 -2.92000000e-001 5.55e-017 1.67e-016 0.400 -2.36000000e-001 -2.36000000e-001 2.78e-017 1.75e-015 0.600 -8.40000000e-002 -8.40000000e-002 1.94e-016 3.43e-015 0.800 2.12000000e-001 2.12000000e-001 4.16e-016 4.52e-015 1.000 7.00000000e-001 7.00000000e-001 6.66e-016 1.73e-014 1.200 1.42800000e+000 1.42800000e+000 8.88e-016 6.00e-015 1.400 2.44400000e+000 2.44400000e+000 2.66e-015 3.33e-014 1.600 3.79600000e+000 3.79600000e+000 7.11e-015 9.99e-014 1.800 5.53200000e+000 5.53200000e+000 7.11e-015 1.10e-013 2.000 7.70000000e+000 7.70000000e+000 0.00e+000 0.00e+000 Errori massimi nei due metodi: alfa err_CN err_esp 1.000 1.20e-014 6.72e-007 alfa err_CN err_esp 1.000 1.20e-014 6.72e-007

58 58 Risultati quesito 3): tabella 2 Tabella per t=0.4 x sol_CN sol_esp err_CN err_esp 0.000 -1.20000000e+000 -1.20000000e+000 0.00e+000 0.00e+000 0.200 -1.19200000e+000 -1.19200000e+000 6.66e-016 4.32e-009 0.400 -1.13600000e+000 -1.13600000e+000 8.88e-016 1.91e-009 0.600 -9.84000000e-001 -9.84000021e-001 1.44e-015 2.14e-008 0.800 -6.88000000e-001 -6.88000027e-001 2.00e-015 2.72e-008 1.000 -2.00000000e-001 -1.99999954e-001 3.39e-015 4.64e-008 1.200 5.28000000e-001 5.28000251e-001 5.22e-015 2.51e-007 1.400 1.54400000e+000 1.54400053e+000 7.77e-015 5.27e-007 1.600 2.89600000e+000 2.89600067e+000 1.15e-014 6.72e-007 1.800 4.63200000e+000 4.63200048e+000 8.88e-015 4.85e-007 2.000 6.80000000e+000 6.80000000e+000 0.00e+000 0.00e+000 Tabella per t=0.4 x sol_CN sol_esp err_CN err_esp 0.000 -1.20000000e+000 -1.20000000e+000 0.00e+000 0.00e+000 0.200 -1.19200000e+000 -1.19200000e+000 6.66e-016 4.32e-009 0.400 -1.13600000e+000 -1.13600000e+000 8.88e-016 1.91e-009 0.600 -9.84000000e-001 -9.84000021e-001 1.44e-015 2.14e-008 0.800 -6.88000000e-001 -6.88000027e-001 2.00e-015 2.72e-008 1.000 -2.00000000e-001 -1.99999954e-001 3.39e-015 4.64e-008 1.200 5.28000000e-001 5.28000251e-001 5.22e-015 2.51e-007 1.400 1.54400000e+000 1.54400053e+000 7.77e-015 5.27e-007 1.600 2.89600000e+000 2.89600067e+000 1.15e-014 6.72e-007 1.800 4.63200000e+000 4.63200048e+000 8.88e-015 4.85e-007 2.000 6.80000000e+000 6.80000000e+000 0.00e+000 0.00e+000 N.B. Il metodo di Crank-Nicolson riproduce ancora la soluzione (errore circa della precisione di macchina). Il metodo esplicito fornisce errore più grande rispetto al caso precedente; cosa succede per valori di t ancora più grandi?

59 59 Rappresentazione della soluzione figure(1) subplot(211), surf(x,t,Uvera); title('Soluzione vera') xlabel('x');ylabel('t') subplot(212), surf(x,t,sol_esp); title(['Soluzione metodo esplicito con alfa= ' num2str(alfa)]) xlabel('x');ylabel('t') figure(2) surf(x,t,err_esp);colorbar('vert') title(['Errore metodo esplicito con alfa= ', num2str(alfa)]) xlabel('x');ylabel('t')

60 60 Grafici della soluzione vera ed approssimata

61 61 Grafico dell’errore col metodo esplicito Si noti che per piccoli valori di t l’errore è piccolo; ma, essendo il metodo instabile, all’aumentare del numero delle iterazioni e per effetto dell’errore di macchina, amplificato dall’instabilità numerica, l’errore diventa sempre più grande.


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

Presentazioni simili


Annunci Google