Pierwiastek metodą Newtona (Herona)

Zadanie 8 z 10 · rozdział 7Trudność: 2 z 3Newtonfloatpętledokładność

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 = 0 funkcja ma zwrócić 0.0 (wzór wymagałby dzielenia przez zero).
  • Wartość bezwzględną obliczysz funkcją abs().

Przykład

Wejście
16
Wyjście
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.

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 uruchomiono
Wejście
0
Oczekiwane wyjście
0.0000

Test 2

Nie uruchomiono
Wejście
1
Oczekiwane wyjście
1.0000

Test 3

Nie uruchomiono
Wejście
2
Oczekiwane wyjście
1.4142

Test 4

Nie uruchomiono
Wejście
10
Oczekiwane wyjście
3.1623

Test 5

Nie uruchomiono
Wejście
50
Oczekiwane wyjście
7.0711

Test 6

Nie uruchomiono
Wejście
1000000
Oczekiwane wyjście
1000.0000
Uruchom z własnymi danymi