Implementacja metody Newtona‑Raphsona w języku Python

metodzie Newtona‑Raphsonametoda Newtona‑Raphsonametodzie Newtona‑Raphsona korzystamy z faktu, że pierwiastkowana liczba jest równa polu kwadratu, którego boki są takiej długości jak wartość wyniku pierwiastkowania. Będziemy więc tworzyć kolejne prostokąty, coraz bardziej zbliżone do poszukiwanej figury. Załóżmy, że pierwiastkujemy pewną liczbę c, a pierwszy wielokąt wyglądać będzie następująco:

RmarJ3ppOrDmp
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Na podstawie długości boków prostokąta wyliczać będziemy kolejne poszukiwane wartości. Zapiszmy więc funkcję odpowiedzialną za proces wyszukiwania docelowej długości boku a kwadratu. Pamiętajmy, że jedną z niezbędnych zmiennych będzie również precyzja, której rolą zajmiemy się w następnym kroku. Na razie w funkcji znajdą się jedynie założenia początkowe, dotyczące długości boków pierwszego prostokąta.

Linia 1. def pierwiastkowanie otwórz nawias okrągły pierwiastkowany przecinek precyzja zamknij nawias okrągły dwukropek. Linia 2. a znak równości pierwiastkowany prawy ukośnik 2. Linia 3. b znak równości pierwiastkowany prawy ukośnik a.

Tworzymy pętlę odpowiedzialną za wyliczanie kolejnych długości boków wielokątów. Operację tę przeprowadzamy do momentu, gdy wartość bezwzględna różnicy pomiędzy długościami obu boków będzie mniejsza niż zadana precyzja. Im mniejszą wartość zmiennej precyzja ustalimy, tym wynik będzie dokładniejszy. Długości boków prostokątów wyliczamy w następujący sposób:

a=a+b2
b=ca

Mając już niezbędne informacje, możemy przejść do dokończenia funkcji. Powtarzanie przedstawionych operacji, dopóki nie spełnimy wspomnianego warunku dotyczącego precyzji i różnicy boków, oznacza konieczność zastosowania pętli. Dodatkowo w warunku zastosujemy wartość bezwzględną. Użyjemy funkcji abs.

Linia 1. def pierwiastkowanie otwórz nawias okrągły pierwiastkowany przecinek precyzja zamknij nawias okrągły dwukropek. Linia 2. a znak równości pierwiastkowany prawy ukośnik 2. Linia 3. b znak równości pierwiastkowany prawy ukośnik a. Linia 5. while abs otwórz nawias okrągły a minus b zamknij nawias okrągły zamknij nawias ostrokątny precyzja dwukropek. Linia 6. a znak równości otwórz nawias okrągły a plus b zamknij nawias okrągły prawy ukośnik 2. Linia 7. b znak równości pierwiastkowany prawy ukośnik a. Linia 9. return a.

Teraz wystarczy już tylko pobrać od użytkownika pierwiastkowaną liczbę oraz żądaną precyzję. Po wywołaniu funkcji otrzymamy wypisany przybliżony wynik pierwiastkowania kwadratowego.

Linia 1. c znak równości float otwórz nawias okrągły input otwórz nawias okrągły cudzysłów Wprowadz liczbe do pierwiastkowania lewy ukośnik n cudzysłów zamknij nawias okrągły zamknij nawias okrągły. Linia 2. p znak równości float otwórz nawias okrągły input otwórz nawias okrągły cudzysłów Wprowadz precyzje lewy ukośnik n cudzysłów zamknij nawias okrągły zamknij nawias okrągły. Linia 4. print otwórz nawias okrągły cudzysłów Wynik pierwiastkowania cudzysłów zamknij nawias okrągły. Linia 5. print otwórz nawias okrągły pierwiastkowanie otwórz nawias okrągły c przecinek p zamknij nawias okrągły zamknij nawias okrągły.

Cały program prezentuje się następująco:

Linia 1. import math. Linia 3. def pierwiastkowanie otwórz nawias okrągły pierwiastkowany przecinek precyzja zamknij nawias okrągły dwukropek. Linia 4. a znak równości pierwiastkowany prawy ukośnik 2. Linia 5. b znak równości pierwiastkowany prawy ukośnik a. Linia 7. while abs otwórz nawias okrągły a minus b zamknij nawias okrągły zamknij nawias ostrokątny precyzja dwukropek. Linia 8. a znak równości otwórz nawias okrągły a plus b zamknij nawias okrągły prawy ukośnik 2. Linia 9. b znak równości pierwiastkowany prawy ukośnik a. Linia 11. return a. Linia 13. c znak równości float otwórz nawias okrągły input otwórz nawias okrągły cudzysłów Wprowadz liczbe do pierwiastkowania lewy ukośnik n cudzysłów zamknij nawias okrągły zamknij nawias okrągły. Linia 14. p znak równości float otwórz nawias okrągły input otwórz nawias okrągły cudzysłów Wprowadz precyzje lewy ukośnik n cudzysłów zamknij nawias okrągły zamknij nawias okrągły. Linia 16. print otwórz nawias okrągły cudzysłów Wynik pierwiastkowania cudzysłów zamknij nawias okrągły. Linia 17. print otwórz nawias okrągły pierwiastkowanie otwórz nawias okrągły c przecinek p zamknij nawias okrągły zamknij nawias okrągły.

W ten sposób zapisaliśmy algorytm Newtona‑Raphsona obliczania przybliżonej wartości pierwiastka kwadratowego z liczby nieujemnej w języku Python.

Słownik

przybliżenie
przybliżenie

przybliżeniem liczby a z ustaloną dokładnością d jest liczba, która różni się od liczby a o nie więcej niż d

metoda Newtona‑Raphsona
metoda Newtona‑Raphsona

(inaczej: metoda Newtona lub metoda stycznych) algorytm wyznaczania wartości pierwiastka funkcji oparty na wyliczaniu kolejnych przybliżeń coraz bliższych rzeczywistej wartości pierwiastka; metoda ta może być wykorzystywana między innymi do omawianego wyznaczania wartości pierwiastka kwadratowego

parametr
parametr

element składni w określonym języku programowania umożliwiający komunikację pomiędzy podprogramem wywołanym a programem wywołującym; parametry określa się wraz z deklaracją określonego podprogramu w jego nagłówku