Pierwiastek metodą Newtona (Herona)
Treść zadania
Napisz funkcję pierwiastek(n), która zwraca przybliżenie $\sqrt{n}$ obliczone metodą Newtona (Herona), bez użycia math.sqrt() ani potęgowania.
Zacznij od $x_0 = n$ i obliczaj kolejne przybliżenia ze wzoru $x_{k+1} = \frac{1}{2}\left(x_k + \frac{n}{x_k}\right)$, aż dwa kolejne przybliżenia będą różnić się o mniej niż $0.0001$, czyli $|x_{k+1} - x_k| < 0.0001$. Zwróć ostatnie obliczone przybliżenie $x_{k+1}$.
Program wczytuje n, wywołuje funkcję i wypisuje wynik z dokładnością do czterech miejsc po przecinku.
Dane wejściowe
- 1. linia:
n— liczba naturalna (n ≥ 0)
Dane wyjściowe
Jedna liczba — przybliżenie $\sqrt{n}$ zaokrąglone do czterech miejsc po przecinku.
Uwagi
- Dla
n = 0funkcja ma zwrócić0.0(wzór wymagałby dzielenia przez zero). - Wartość bezwzględną obliczysz funkcją
abs().
Przykład
16
4.0000
Potrzebujesz teorii?
Zasady obowiązujące w rozdziale 7
Zadania w tym rozdziale łączą pętle z funkcjami: implementujesz klasyczne algorytmy matematyczne (potęgowanie, silnia, NWD, NWW, pierwiastek, test pierwszości) bez gotowych funkcji bibliotecznych.
Konwencje wspólne:
- Każde zadanie (i każdy podpunkt) to osobny program: czyta standardowe wejście i wypisuje wynik na standardowe wyjście.
- Program nie wypisuje komunikatów typu „Podaj liczbę:”. Tekst podany w
input("…")jest ignorowany przez sprawdzarkę. - Jeśli zadanie mówi „napisz funkcję”, zaimplementuj funkcję o podanej nazwie, która zwraca wynik przez
return. Program wczytuje dane, wywołuje funkcję i wypisuje wynik — gotowy szkielet znajdziesz w sekcji Kod startowy. - Dane wejściowe wczytuj dokładnie w podanej kolejności, każdą wartość z osobnej linii.
Zadanie pochodzi z otwartego zbioru Nauka-Programowania (z rozwiązaniami wzorcowymi). Zgłoś błąd w treści lub testach.
Przywrócono Twój zapisany kod.
Python uruchomi się w przeglądarce przy pierwszym teście.
Kod zapisuje się automatycznie w tej przeglądarce. Tab wstawia wcięcie; aby opuścić edytor klawiaturą, naciśnij Esc, a potem Tab.
Testy
Program dostaje „Wejście” przez input() i musi wypisać „Oczekiwane wyjście”. Liczby porównywane są z tolerancją 0,01, a tekst podany w input("…") nie jest sprawdzany.
Test 1
Nie uruchomiono0
0.0000
Test 2
Nie uruchomiono1
1.0000
Test 3
Nie uruchomiono2
1.4142
Test 4
Nie uruchomiono10
3.1623
Test 5
Nie uruchomiono50
7.0711
Test 6
Nie uruchomiono1000000
1000.0000