Metodo del punto unito

miles_davis1
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|
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

Risposte
archetipo1
Ma non ho capito bene il passo in cui viene costruita la funzione h(x) o meglio la domenda è ma la funzione
viene inserita dall' utente o viene elaborata dal programma?

e poi per chiarire meglio gli step:

Tu scrivi:

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

in questo caso h(x) = ? (forse non lo ho capito io)

e poi a quanto sembra il risltato es. 0,354036709 diventa la succesiva x della successione?

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.