
Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Codici di calcolo numerico per risoluzione quesiti esame
Tipologia: Esercizi
1 / 1
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!

% Problema di minimo associato: % Sia A ∈ R^(n×n) simmetrica e definita positiva, allora x ∈ R^n è soluzione % del sistema lineare Ax = b se e solo se minimizza la funzione energia: % Φ(y) = (1/2)y^T A y - y^T b phi = @(y) (1/2)y'Ay - y'b; % Definizione funzione energia grad_phi = @(y) A*y - b; % Gradiente della funzione % Per definizione, individuo il Punto di Minimo di phi per y = x x_min = A\b; % x_min = ; % Valuto phi nel punto di minimo; phi_min = phi(x_min); % phi_min = ; % Per definizione, la Direzione di Discesa Massima nel punto x, % equivale a -grad_phi(x): dir_discesa1 = -grad_phi(x1);
% Gradiente Coniugato MODIFICATO x = x0; r = b - Ax; p = r; for iter = 1: alfa = (p' * r) / (p' * Ap); x = x + alfa * p; r = r - alfa * Ap; beta = (p' * A * r) / (p' * Ap); p_Old = p; p = r - beta * p; % Bonus: Trovo angoli fra direzioni successive theta = acos((p_Old' * p) / (norm(p) * norm(p_Old))); theta = rad2deg(theta); % Converto in deg° fprintf('Iterazione: %d; norm(p) = %.4f; theta[°] = %.4f; \n', ... iter, norm(p), theta); end
phi = @(y) 1/2y'Ay-y'b; x0 = b; r0 = b-Ax0; alpha0 = (r0'r0)/(r0'Ar0); x1 = x0 + alpha0*r0; disp(phi(x0)); disp(phi(x1));