Il tuo compito è calcolare la radice quadrata di 2 usando il Metodo di Newton - con una leggera variazione. Il tuo programma è di calcolare un'iterazione usando il metodo di Newton e di generare il codice sorgente per la seguente iterazione (che deve essere in grado di fare lo stesso).
Il metodo di Newton è descritto in modo abbastanza esaustivo su Wikipedia
Per calcolare la radice quadrata 2 usando il metodo Newton, devi:
- Definire
f(x) = x^2 - 2
- Definire
f'(x) = 2x
- Definisci
x[0]
(ipotesi iniziale)= 1
- Definire
x[n+1] = x[n] - (f[n] / f'[n])
Ogni iterazione si sposterà x [n] più vicino alla radice quadrata di due. Così -
x[0] = 1
x[1] = x[0] - f(x[0])/f'(x[0]) = 1 - (1 ^ 2 - 2) / (2 * 1) = 1.5
x[2] = x[1] - f(x[1])/f'(x[1]) = 1.5 - (1.5 ^ 2 - 2) / (2 * 1.5) = 1.416666667
x[3] = x[2] - f(x[2])/f'(x[1]) = 1.416666667 - (1.416666667 ^ 2 - 2) / (2 * 1.416666667) = 1.414215686
- e così via
Il tuo programma dovrà:
- Calcola
x[n]
doven
è la quantità di volte che il programma è stato eseguito - Invia il codice sorgente a un programma valido nella stessa lingua che deve calcolare
x[n+1]
e soddisfare gli stessi criteri di questa domanda. - La prima riga del codice sorgente deve essere il risultato del calcolo, opportunamente commentato. Se la fonte richiede qualcosa di particolare (come uno shebang) sulla prima riga, il risultato può essere inserito sulla seconda riga.
Nota che
- Il tuo programma deve utilizzare un'ipotesi iniziale di
x[0] = 1
- Si applicano le scappatoie standard
- È vietata qualsiasi funzione incorporata di potenza, radice quadrata o xroot
- Il tuo programma non deve accettare alcun input. Deve essere completamente autonomo.
Il tuo punteggio è la dimensione del tuo programma iniziale in byte UTF-8. Vince il punteggio più basso.
x = x-(x*x-2)/(2*x)
?