Mi potreste dare una mano con il seguente programma? Grazie.
Premessa - Il metodo del punto unito è un semplice metodo di calcolo numerico per individuare una soluzione numerica di un’equazione (quando per esempio un’espressione in forma chiusa non è ottenibile per la presenza contemporanea di termini trascendenti ed algebrici). Più precisamente per calcolare uno zero di un’equazione f(x)=0, si porterà tale equazione nella forma x=h(x).
Successivamente, definito un certo errore eps, e scelto un punto iniziale qualunque x0, si calcolerà la successione xi=h(xi-1) finchè |xi - xi-1|<eps ed xi sarà lo zero della funzione. La successione non sempre converge, in particolare ci sono alcune condizioni sulla funzione h(x) e sul punto iniziale x0 che assicurano la convergenza. Nel caso di più di uno zero, la scelta del punto iniziale determinerà lo zero che il metodo individuerà.
Realizzare un programma che permetta di calcolare la radice di un’equazione con il metodo del punto unito. In particolare il programma dovrà permettere le seguenti elaborazioni:
· Permettere ad un utente di scegliere alcune funzioni f(x) su cui provare il metodo del punto
unito (rendere disponibili almeno 10 funzioni di prova che combinino termini algebrici e
trascendenti)
· Permettere all’utente di specificare il valore iniziale da cui far partire il metodo, il numero
massimo di iterazioni da effettuare, il valore di tolleranza e da soddisfare
· Avviare il calcolo del punto unito (con una qualsiasi h(x), t.c. h(x)=x se e solo se f(x)=0),
arrestandolo appena si arriva ad una soluzione xi che soddisfi il valore di tolleranza fissato eps, o appena è stato raggiunto il numero massimo di iterazioni
· Per ogni funzione f(x) provata, stampare su console il risultato del metodo in termini di zero
trovato (se trovata entro il numero massimo di iterazioni) ed il numero di iterazioni effettuate.
· Salvare i risultati dell’elaborazioni di ogni funzione f(x) provata su file nel formato seguente:
Funzione di prova: (sin(x+1))^2-2*x=0, tolleranza fissata: 10^ -3, massimo numero di
iterazioni: 100
Sequenza iterazioni:
X(i) |h(i)-X(i)|
0,000000000 0,354036709
0,354036709 0,122836555
0,476873264 0,018728919
0,495602184 0,001576061
0,497178245 0,000116836