powrót
Algorytm Newtona Raphsona służy do wyznaczenia pierwiastka arytmetycznego dla podanej nieujemnej liczby rzeczywistej. Algorytm został omówiony w tym miejscu. W tym artykule została przedstawiona implementacja w języku Python.
Zadanie
Dla podanej nieujemnej liczby rzeczywistej wyznacz jej pierwiastek arytmetyczny z dokładnością do 6 miejsc po przecinku.
Wejście
Jedna nieujemna liczba rzeczywista.
Wyjście
Pierwiastek z tej liczby podany z dokładnością do sześciu miejsc po przecinku.
#--------------------algorytm.edu.pl---------------------
def pierwiastkowanie(n):
a = 1
b = n
eps = .000001 # liczba miejsc po przecinku
while abs(a - b) >= eps: #sprawdzamy, czy osiągnięto oczekiwaną precyzję
a = (a+b)/2 # długość boku "a" wyznaczamy ze średniej arytmetycznej liczb a i b
b = n/a # długość boku "b" wyznaczamy ze wzoru na pole
return (a+b)/2
#-----------------główna część programu------------------
print(f'{pierwiastkowanie(int(input())):.6f}')
Przykład
Wejście
2
Wyjście
1.414214
-
-
Na początku definiowane są trzy zmienne:
a
- początkowa wartość przybliżenia pierwiastka. Jest to ustawione na 1.
b
- druga początkowa wartość, która jest równa liczbie, dla której obliczamy pierwiastek.
eps
- precyzja, która określa, ile miejsc po przecinku chcemy uzyskać w wyniku. W tym przypadku ustawiona jest na 0.000001, co oznacza, że program będzie działać, dopóki różnica między a
a b
jest większa lub równa tej precyzji.
-
Następnie program wchodzi w pętlę while
, która będzie trwać, dopóki różnica między a
a b
jest większa lub równa eps
.
-
Wewnątrz pętli while
obliczane są nowe wartości a
i b
:
a
jest uaktualniane jako średnia arytmetyczna a
i b
.
b
jest uaktualniane jako wynik dzielenia liczby n
przez a
.
-
Pętla będzie wykonywać te obliczenia, aż różnica między a
a b
będzie mniejsza niż eps
, co oznacza, że osiągnęliśmy żądaną precyzję.
-
Na koniec program zwraca wartość średnią arytmetyczną a
i b
, co jest przybliżonym wynikiem pierwiastkowania liczby n
.
-
W głównej części programu użytkownik zostaje poproszony o wprowadzenie liczby, dla której chce obliczyć pierwiastek arytmetyczny. Następnie program wywołuje funkcję pierwiastkowanie
z tą liczbą i drukuje wynik z dokładnością do 6 miejsc po przecinku.
Ogólnie rzecz biorąc, program ten używa metody bisekcji do znajdowania przybliżonego pierwiastka arytmetycznego danej liczby, aż osiągnie oczekiwany poziom precyzji eps
.