Twoim zadaniem jest obliczenie pierwiastka kwadratowego z 2 za pomocą Metody Newtona - z lekkim zwrotem akcji. Twój program ma obliczyć iterację za pomocą metody Newtona i wygenerować kod źródłowy dla następnej iteracji (która musi być w stanie zrobić to samo).
Metoda Newtona jest dość wyczerpująco opisana na Wikipedii
Aby obliczyć pierwiastek kwadratowy 2 przy użyciu metody Newtona, należy:
- Definiować
f(x) = x^2 - 2
- Definiować
f'(x) = 2x
- Zdefiniuj
x[0]
(początkowe przypuszczenie)= 1
- Definiować
x[n+1] = x[n] - (f[n] / f'[n])
Każda iteracja przesunie się x [n] bliżej pierwiastka kwadratowego z dwóch. Więc -
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
- i tak dalej
Twój program będzie:
- Oblicz,
x[n]
gdzien
jest liczba uruchomień programu - Wyślij kod źródłowy do poprawnego programu w tym samym języku, który musi obliczyć
x[n+1]
i spełnić te same kryteria tego pytania. - Pierwszym wierszem kodu źródłowego musi być wynik obliczenia, odpowiednio skomentowany. Jeśli źródło wymaga czegoś konkretnego (np. Shebang) w pierwszym wierszu, wynik może zostać umieszczony w drugim wierszu.
Zauważ, że
- Twój program musi wstępnie zgadywać
x[0] = 1
- Te standardowe Luki zastosowanie
- Wszelkie wbudowane funkcje zasilania, pierwiastek kwadratowy lub xroot są zabronione
- Twój program nie może akceptować żadnych danych wejściowych. Musi być całkowicie samodzielny.
Twój wynik to rozmiar początkowego programu w bajtach UTF-8. Najniższy wynik wygrywa.
x = x-(x*x-2)/(2*x)
?