Calcolo numerico - I appello programmazione - 22 giugno 2022
Ingegneria civile e per l’Ambiente e il Territorio (Prof. M. Ferronato)
1a squadra
Nome:
Cognome:
Matricola:
Postazione computer:
Metodo di Aitken
Si vuole risolvere l’equazione non lineare 1.5x tan x = 0.1 utilizzando un metodo di punto fisso. Dopo aver riscritto l’equazione assegnata nella forma x = g(x), con:
0.1 + tan x
g(x) = ,
1.5
si vuole applicare il metodo di Aitken:
g(x ) x x x
k k k k 1
x = g(x ) + , r = ,
k+1 k k
r 1 g(x ) x
k k k
che costituisce un’accelerazione della classica iterazione di Picard x = g(x ). Si dimostra
k+1 k
che se lo schema di Picard converge al punto fisso ⇐ del problema, allora il metodo di Aitken lo fa con velocità maggiore. Si scriva una function che implementa il metodo di Aitken e avente come input la funzione g, il punto iniziale x , la tolleranza tol di uscita e il numero massimo di
0
iterazioni itmax. Poiché lo schema di Aitken dipende dagli ultimi due elementi della successione di approssimanti, ovvero x e x , come accade ad esempio alla Regula Falsi, per inizializzare
k k 1
il metodo iterativo si ponga x = g(x ).
1 0
Script compitoCOGNOME.m
Si implementi uno script dal nome che:
- Definisca g(x) come funzione di tipo handle;
- Definisca x = 0, tol = 10 e itmax = 100;
0 - Calcoli ⇐ mediante il metodo di Aitken, fornendo il numero di iterazioni it per giungere a
A
convergenza; - Al fine di valutare l’accelerazione indotta rispetto alla classica iterazione x = g(x ),
k+1 k
si scriva una seconda function che implementa il metodo di Picard e la si applichi al problema assegnato per calcolare il numero di iterazioni it richiesto in questo caso per
P
raggiungere la medesima tolleranza d’uscita tol; - Generi un unico grafico con i profili di convergenza ottenuti con il metodo di Aitken e con l’iterazione di Picard.
Si riporti come commento il proprio nome, cognome e numero di matricola sia nelle function che nello script.
Risultati
⇐ =
A
it = , it =
P
Tempo a disposizione: 1h 30m
Soluzione appello 22 giugno 2022
Domanda 1: definire g(x)
g=@(x) (0.1+tan(x))/(1.5);
Domanda 2: definire x0, tol, itermax
x0=0;
tol=1e-10;
itermax=100;
Domanda 3: calcolare la radice e il numero di iterazioni con il metodo di Aitken
[xnew_a,iter_a,sc_a]=aitken(g,x0,tol,itermax);
%Risposta: il ciclo e lo script funzionano bene
XNEW=0.2059 E ITER=12
Domanda 4: si esegua la stessa cosa con il metodo di Picard xnew=g(xold)
[xnew_p,iter_p,sc_p]=picard(g,x0,tol,itermax);
%Ciclo funziona correttamente XNEWPICARD=
-
Prova d'esame Informatica risolta
-
prova 21 Luglio 2014 risolta passo passo e commentata
-
prova 10 Gennaio 2018 risolta e commentata passo passo
-
Informatica I - esempio prova di programmazione