Pierwiastek z dużej liczby

0

Witam!
Chciałbym wykonywać obliczenia na dużych liczbach (powyżej 50 cyfr). Znalazłem na 4programmers.net moduł vlong, który ma kilka przydatnych funkcji, np. dodawanie, odejmowanie itp. Jednak nie widze tam bardzo mi potrzebnej funkcji - pierwiastkowania (chodzi o pierwistek kwadratowy). Czy ma ktoś napisaną procedurkę (bibliotekę) z funkcjią pierwiastka kwadratowego z dużej liczby? Mam wszystkie funkcje prócz tego pierwiastka i siedze kilka dni nad procedurą do tego działania ale nie moge nic sensownego wymyśleć. Procedura nie musi być bardzo szybka ale by działała prawidłowo.

Proszę o pomoc i zgóry dziękuje za każdą udzieloną radę [browar]

0

Hej,
można to załatwić wyszukiwaniem binarnym, o ile masz już procedurki do mnożenia, dodawania, odejmowania 'dużych' liczb.
szukając pierwiaska z liczby n szukasz w przedziale od n do 1.
pierszy strzał jest w połowie przedziału. p = (n + 1) / 2;
jeżeli p p != n to
gdy p
p > n to szukasz w przedziale (p/2, 1)
inaczej (p, p/2).

powtarzamy aż osiągniemy zadaną dokładność abs(p*p - n) < fi, np. fi = 1e-5;

Pewnie są lepsze metody znajdowania pierwiastków (Newtona itp) ale ta jest w miarę prosta.

Marcin

0
  1. http://4programmers.net/article.php?id=199#pierwiastek
  2. nie wystarczą ci przybliżone wyniki? dokładność rzędu 10^-16 do większości zastosowań wystarcza... (nie licząc kryptografii oczywiście)
0

jest jedno proste rownanie z ktoreko mozna to obliczyc

potega=a^b = potega:=exp(b*ln(a));

jesli interesuje Cie pierwiastek to oczywiscie b:=1/b

musisz tylko pewne zalozenia porobic i do nich warunki co jesli a<0 a b jest calkowite (parzyste lub nie) lub rzeczywiste. ale to juz jest banalne. bo raz nie ma rozwiazania a raz jest

1 użytkowników online, w tym zalogowanych: 0, gości: 1