Sei sulla pagina 1di 4

A.A.

2019–2020
L AUREA IN I NGEGNERIA A EROSPAZIALE
Corso di C ALCOLO N UMERICO
Prima prova di accertamento MATLAB – aprile 2020
Prof. Luca Bergamaschi

Esercizio 1
Si scriva una function M ATLAB che implementi il metodo di Steffensen. Si risolva l’esercizio copiando
la function newton fornita in laboratorio su un file chiamato steffensen.m, e modificando opportu-
namente il metodo di Newton per ottenere quello di Steffensen (tra i parametri di input non deve
apparire la derivata della funzione).

Esercizio 2
Si implementi il metodo iterativo della bisezione. Si usi un test di arresto sul residuo pesato1 e sul
numero massimo di iterazioni. La sintassi della function sarà la seguente
f u n c t i o n [ i t e r , cnew , vres ] = b i s e z i o n e ( a , b , t o l , itmax , fun , dfun )

dove iter conta il numero di iterazioni impiegate, cnew rappresenta


il punto medio dell’intervallo a
f (ck )
convergenza e vres è un vettore che contiene i residui pesati 0 ad ogni iterazione.
f (c ) k
Si testi la correttezza della function bisezione sull’equazione x2 − 2 = 0 con parametri

a = 1, b = 2, tol = 10−12 , itmax = 50 . Oltre a restituire ovviamente un’approssimazione di 2 ac-
curata a meno della tolleranza, il metodo dovrebbe convergere in 38 iterazioni.

Esercizio 3
Si considerino le ultime 4 cifre del proprio numero di matricola e si denoti con

1. α la quartultima aumentata di 1,

2. β la terzultima aumentata di 1,

3. γ la penultima cifra aumentata di 1 e quindi divisa per 10,

4. δ l’ultima cifra aumentata di 1.

(Esempio; numero di matricola 127 3409 : α = 4 , β = 5, γ = 0.1, δ = 10).


Si consideri quindi il problema di risolvere l’equazione f (x) = 0 dove

f (x) = 2αx3 − β x + γe2x − 2δ . (1)

con diversi metodi iterativi.

1. Si scriva uno script chiamato scriptes1.m che


1 | f (ck )|
il residuo pesato si definisce, detta ck la k-esima iterazione (punto medio) del metodo della bisezione, ; quindi il test
| f 0 (ck )|
| f (ck )|
di arresto deve essere < tol
| f 0 (ck )|

1
(a) Determina il valore dei parametri in relazione al numero di matricola. A questo scopo le
prime due istruzioni dello script dovranno essere
mat ricol a = . . . . . . . ;
[ a l f a , beta , gamma, d e l t a ] = param ( mat ricol a ) ;

dove al posto dei puntini lo studente dovrà scrivere il proprio numero di matricola. La
function param è fornita dal docente (scaricabile dalla pagina Moodle) e restituirà il valore
corretto dei 4 parametri.
(b) Traccia il grafico della funzione (1) e dell’asse x nell’intervallo I = [−2.5, 3.5].
(c) Verifica tramite il teorema degli zeri che esiste una soluzione ξ in I.
(d) Approssima ξ mediante il metodo di Newton-Raphson (tol = 10−8 e itmax = 30).

Per quanto riguarda il punto iniziale si proceda come segue: si chiami la funzione
bisezione con tolleranza tol = 1 e numero massimo di iterazioni pari a 5. Si usi
come x0 per il metodo di Newton il valore (cnew) di output del metodo di bisezione.

In riferimento al metodo di Newton lo script deve visualizzare a video, per ogni iterazione:
indice di iterazione corrente, approssimazione della soluzione e scarto (k, xk , sk = xk − xk−1 ).
Il programma dovrà inoltre visualizzare la migliore stima della costante asintotica in vir-
gola fissa con 4 cifre dopo la virgola e l’errore finale in valore assoluto (come differenza tra
la soluzione trovata e quela restituita dalla function fzero di Matlab).
(e) Approssima ξ mediante il metodo di Steffensen (tol = 10−8 e itmax = 30)

Si calcoli il punto iniziale aggiungendo alla soluzione trovata dal metodo di Newton il
valore 0.01:
x0 = xnew + 1e −2;

In riferimento al metodo di Steffensen lo script deve visualizzare a video, per ogni iterazio-
ne: indice di iterazione corrente, approssimazione della soluzione e scarto. Il programma
dovrà inoltre visualizzare la migliore stima della costante asintotica in virgola fissa con 4
cifre dopo la virgola e l’errore finale in valore assoluto.
(f) Visualizza in un UNICO grafico semilogaritmico il profilo di convergenza (valore assoluto
dello scarto rispetto all’indice di iterazione) dei metodi di Newton e Steffensen. Salva il
grafico nel file graficoes1.pdf.
(g) Mediante calcolo della costante asintotica (utilizzando come ξ la soluzione con uno dei due
metodi precedenti) si dica se il metodo della tangente fissa con lo stesso punto iniziale x0
utilizzato per il metodo di Newton, può convergere alla soluzione. In caso affermativo vi-
sualizzare a video una stima del numero di iterazioni richieste per ridurre l’errore iniziale
di 10−8 , altrimenti visualizzare la frase tangente fissa non convergente.

Esercizio 4
Si scriva una function M ATLAB che implementi il metodo di estrapolazione Aitken. Tale function
dovrà avere come parametri di input gli stessi della function che implementa il punto fisso.

Esercizio 5
1. Per risolvere l’equazione data f (x) = 0 dove f è sempre definita nella (1) si usi il seguente metodo
di punto fisso:
2αxk3 + γe2xk − 2δ
xk+1 = ≡ g(xk ).
β

2
A tale proposito si scriva uno script, scriptes2.m, che

(a) Utilizzando, come soluzione vera, la xnew di Newton, verifica se il metodo iterativo può
convergere a ξ (si commenti tale punto nella relazione finale). Solo in caso affermativo
si calcoli la soluzione dell’equazione con il metodo di punto fisso, stesso x0 usato per
il metodo di Steffensen, tol = 10−12 e itmax = 100 visualizzare a video, per ogni iterazione:
indice di iterazione corrente, approssimazione e scarto. Il programma dovrà inoltre visua-
lizzare la migliore stima della costante asintotica in virgola fissa con 4 cifre dopo la virgola
e l’errore finale.
(b) Approssima ξ mediante il metodo di estrapolazione di Aitken applicato al precedente me-
todo di punto fisso (stesso x0 di prima ma tol = 10−8 e itmax = 30) visualizzando a video, per
ogni iterazione: indice di iterazione corrente, approssimazione della soluzione e scarto. Il
programma dovrà inoltre visualizzare la migliore stima della costante asintotica in virgola
fissa con 4 cifre dopo la virgola e l’errore finale in valore assoluto.
(c) Visualizza in un grafico semilogaritmico il profilo di convergenza del metodo di Aitken e,
solo se convergente, anche del metodo di punto fisso. Salva il grafico nel file graficoes2.pdf.

Output dei risultati


I risultati più significativi dell’elaborazione vanno riportati sul file di testo output.txt secondo il
seguente schema (ogni dato su una riga diversa):

1. Numero di matricola

2. x0 del metodo di Newton (valore finale con ottenuto con la bisezione)


3. Soluzione finale di Newton con almeno 12 cifre dopo la virgola
4. Numero di iterazioni impiegate con il metodo di Newton
5. Errore finale del metodo di Newton
6. Migliore valore stimato della costante asintotica, 4 cifre dopo la virgola
7. Soluzione finale di Steffensen con almeno 12 cifre dopo la virgola
8. Numero di iterazioni impiegate con il metodo di Steffensen
9. Errore finale del metodo di Steffensen
10. Migliore valore stimato della costante asintotica, 4 cifre dopo la virgola
11. Numero di iterazioni stimate con la tangente fissa (se non converge scrivere 100)
12. Soluzione finale di Aitken con almeno 12 cifre dopo la virgola
13. Numero di iterazioni impiegate con il metodo di Aitken
14. Errore finale del metodo di Aitken
15. Migliore valore stimato della costante asintotica, 4 cifre dopo la virgola

I risultati devono essere scritti rispettando l’ordine. Se un valore non viene calcolato dal programma,
scrivere -9999. In ogni caso il file deve contenere 15 valori su 15 righe consecutive. Tale file potrà
essere compilato a mano riportando i valori restituiti dai due script oppure (meglio) direttamente
salvato dagli stessi script utilizzando l’istruzione:
f i d = fopen ( ’ output . t x t ’ , ’w ’ ) ! apre i l f i l e output . t x t ( comando da e s e g u i r e
! a l l ’ i n i z i o d i s c r i p t 1 e s .m)

Quindi ognuna delle variabili va scritta all’interno del file come nel seguente esempio:
f p r i n t f ( f i d , ’ %20.12 f \n ’ , xnew ) ! s c r i v e i l contenuto d e l l a v a r i a b i l e xnew s u l
! f i l e output . t x t

3
NOTA BENE 1: È necessario caricare sull’apposita pagina Moodle un UNICO FILE archivio:
ovvero un file con estensione .tar .zip .rar (o altre) a seconda dei sistemi operativi. Il nome di
tale file dovrà essere, se si è scelta l’estensione .rar: cognome_nome_matricola.rar. Per esempio
l’ipotetico studente Jacopo Robusti, matricola 2941594, dovrà consegnare un file dal nome
Robusti_Jacopo_2941594.rar
Questo file archivio comprenderà

1. tutti gli m-file M ATLAB utilizzati per risolvere gli esercizi (script e function),
2. i grafici prodotti
3. il file di risultati output.txt
4. una relazione in formato a sceltaa (anche solo testo oppure .doc e simili) in cui si commen-
tano i metodi impiegati, i risultati ottenuti, la convergenza o non convergenza dei metodi.
Possibilmente si alleghino alla relazione i grafici prodotti. La relazione dovrà comunque
essere esportata come file PDF e salvata con il nome relazione.pdf.

Elenco dei file da consegnare:


• script: scriptes1.m, scriptes2.m
• function: newton.m, steffensen.m, bisezione.m, pfisso.m, aitken.m
• grafici: graficoes1.pdf, graficoes2.pdf
• output: output.txt
• relazione: relazione.pdf
Data limite per la consegna: 29 APRILE 2020 ore 23.55 !
a Un punteggio bonus addizionale verrà concesso a chi usa il linguaggio LATEX di preparazione testi.

NOTA BENE 2: Ricordo che l’esercitazione deve essere individuale. Ciò significa che:

• È permesso (anzi è suggerito) lavorare in gruppo, compatibilmente con le condizioni di di-


stanziamento sociale, per sviluppare i vari programmi. Farsi aiutare da chi è più esperto
di programmazione è consentito.
• Non è invece consentito consegnare programmi identici a quelli dei propri compagni (ov-
vero uno lavora gli altri copiano).
• La relazione finale deve essere assolutamente originale. Da questa si deve evincere il
contributo individuale alla stesura dell’esercitazione.

Modalità di valutazione
La valutazione dell’elaborato produrrà un bonus da 0 a 4 punti. La semplice consegna del-
l’elaborato nei tempi e modi descritti sopra basterà per la valutazione minima e quindi per
l’ammissione alla seconda prova parziale (da svolgersi a giugno-luglio nell’aula di laboratorio
con modalità ovviamente ancora da definire).
Sarà particolarmente privilegiata l’originalità della relazione finale oltre alla cor-
rettezza dei programmi. Meglio eseguire correttamente uno dei due script (relativi all’Esercizio
3 o all’Esercizio 5) piuttosto che consegnare soluzioni perfette ma copia conforme di elaborati di
altri studenti.
Infine, chi non consegna l’esercitazione entro la data stabilita, dovrà, una volta superata la
prova scritta, sostenere una prova orale di verifica delle competenze Matlab.

Potrebbero piacerti anche