logo
  • userLoginStatus

Welcome

Our website is made possible by displaying online advertisements to our visitors.
Please disable your ad blocker to continue.

Current View

Mathematical Engineering - Matematica Numerica

Exercise 10

Divided by topic

MATEMATICA NUMERICA A.A. 2018 - 2019 Ingegneria Matematica Prof. A. Quarteroni Prof. A. Manzoni, Dr. I. Fumagalli Esercitazione 10 Metodi iterativi per sistemi lineari (3) Esercizio 1 Si consideri il sistemaAx=bdove la matriceAed il temine notobsi ottengono con i seguenti comandiA = delsq( numgrid(B,50) ); b = ones( size(A,1),1 ); La matrice A2R1814 1814 è simmetrica e denita positiva con struttura sparsa, come si può visualizzare con il comandospy(A). Essa deriva dalla discretizzazione mediante dierenze nite del problema di Laplace sulla griglia di nodi visualizzabile conspy(numgrid (B, 50)). Per ciascuno dei seguenti punti, usare il comando Matlabpcgche implementa il metodo del gradiente coniugato precondizionato, imponendo una tolleranza pari a10 12 sul residuo, indi memorizzare il vettore dei residui ottenuti in funzione del numero di iterazioni (si rimanda all'help del comando). Visualizzare quindi le tre curve di abbattimento del residuo in scala semilogaritmica consemilogy. a)Calcolare il numero di condizionamento diA(usare il comandocondest) e risolvere il sistemaAx=b tramitepcg(con precondizionatore identico). b)Vericare che la parte tridiagonalePdiAè simmetrica e denita positiva. Calcolare il condizionamento del sistema precondizionato con la matricePe risolvere il sistema tramitepcg. c)Costruire algebricamente il sistema con precondizionatore centratoA x =b , doveA =^ H T A^ H 1 , b =^ H T b,x =^ Hx. La matrice^ Hè la matrice triangolare superiore ottenuta tramite la fattorizza- zione di Cholesky incompleta (senza ll-in) della matriceA, calcolata tramite il seguente comando,H=ichol(A); spy(H); Calcolare il numero di condizionamento associato al sistema precondizionato e risolvere tale sistema conpcg. Cosa emerge dal confronto ? Esercizio 2 Vogliamo confrontare le prestazioni del metodo del gradiente coniugato precondizionato applicato a un sis- tema lineare derivante dalla discretizzazione a elementi niti di un problema, al variare della matrice di precondizionamento. La matrice e il vettore del sistema lineare vengono generati con i comandiA = gallery(poisson, 40); b = ones(size(A,1),1); 1 Una buona scelta per il precondizionatore Pè quella di considerare una matrice simile adAma facilmente invertibile. La sceltaP=RT R, doveRè la matrice triangolare superiore ottenuta mediante la fattorizzazione di Cholesky diA, è ottimale ma decisamente inecace a causa del fenomeno del ll-in. Una possibile alterna- tiva consiste nel considerare la fattorizzazione incompleta di Cholesky. L'idea di base è quella di determinare una matrice~ RRe porreP=~ RT ~ R. Due possibili alternative sono le seguenti : a)Cholesky no-l l: si pone~ Rij= 0 seA ij= 0 ; b)Cholesky droptol: si pone~ Rij= 0 sejR ijj < droptol, dovedroptolindica una tolleranza da passare al metodo. Nel primo caso, si usano i seguenti comandiMatlabper generare il precondizionatore :opts.type =nofill; P = ichol(A, opts); %precondizionatorementre nel secondo si usano i seguenti comandi : opts.type =ict; opts.droptol = 1e 2;P = ichol(A, opts); %precondizionatorePer risolvere il sistema lineare, si usa in entrambi i casi la seguente sintassi del comando pcg:[X,FLAG,RELRES,ITER,RESVEC] = pcg(A,b,tol,maxIter,P, P); Confrontare, in termini di ecienza (tempo di calcolo, numero di iterazioni), accuratezza (andamento dei residui) e pattern della matrice di precondizionamento le seguenti scelte : 1.metodo non precondizionato ; 2.precondizionatore dato dalla diagonale diA; 3.precondizionatore Cholesky no-ll ; 4.precondizionatore Cholesky droptol =10 2 ; 5.precondizionatore Cholesky droptol =10 4 . Esercizio 3 (P)A partire dai modelli di main le e dataleEser10_DiffReactMixedBC_template.me Eser10_DiffReactMixedBC_data_template.m, implementare inPoliFEMla soluzione del seguente problema di diusione e reazione, con condizioni miste di Dirichlet-Neumann ai due estremi dell'intervallo(0;1), usando elementi niti quadratici :( (u0 )0 + u=f(x);0< x