Metodo del punto unito

Messaggioda miles_davis » 13/06/2006, 14:47

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
Uno per tutti di certo fa tutti...
miles_davis
Junior Member
Junior Member
 
Messaggio: 4 di 127
Iscritto il: 22/05/2006, 16:21

Messaggioda archetipo » 15/06/2006, 15:55

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?
archetipo
Starting Member
Starting Member
 
Messaggio: 1 di 3
Iscritto il: 15/06/2006, 10:59


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite