mpmath zastępuje obrocie / złożonych typów Pythona oraz modułów matematyka / cmath z precyzyjnych oraz wykładnik nieograniczonych rozmiarach. Program jest w całości napisany mpmath w Pythonie, bez zależności zewnętrzne, a tym samym prowadzi niemal wszędzie, bez potrzeby kompilacji.
Aby zainstalować, rozpakuj archiwum mpmath i uruchomić
python setup.py install
Dokumentacja i sposób użycia:
Import mpmath z
z mpmath import *
To zapewnia MPF klas i RPP, które działają analogicznie do pływaka Pythona i złożonych typów:
>>> MPF (2) / MPF (3)
MPF ("+0,66666666666666663")
>>> Mpc (0, -1)
mpc (Real = '0', urojona = "- 1")
>>> MPF (-0,6) ** MPF (-0,2)
mpc (Real = '+0,89603999408558288 ", urojona =' - +0,65101116249684809")
Dla ładniejszej wyjścia (które również ukrywa drobne błędy zaokrągleń), należy użyć print () lub str:
>>> Print MPF (2) / MPF (3)
+0,666666666666667
>>> Print mpc (1 + 2j) ** 0,5
(1,27201964951407 + 0.786151377757423j)
Precyzja jest kontrolowana przez właściwości mpf.prec (liczba bitów) i mpf.dps (liczba miejsc po przecinku). Właściwości te są związane, więc zmiana jednego automatycznie aktualizuje inne dopasować. Ustawianie Prec lub dps zmienia precyzję w którym wszystkie operacje są przeprowadzane i liczba cyfr do wyświetlania podczas drukowania numerów. Domyślnie jest to
prec = 53 = 15 i dps, podobnie jak pływa Python.
>>> Mpf.dps = 30
>>> MPF (2) / MPF (3)
MPF ("0,66666666666666666666666666666663")
>>> Print _
,666666666666666666666666666667
>>> mpf.dps = 15 # przywrócić domyślne
Można tworzyć MPFS i MPC z numerów Pythona, lub połączyć MPFS i MPC z numerami Pythona w operacji arytmetycznych, ale należy pamiętać, że regularne Python pływa tylko skończoną precyzję. Aby zainicjować MPF o wartości pełnej precyzji, należy użyć ciąg:
>>> MPF (0,1)
MPF ("+0,10000000000000001") # samą dokładnością jak pływaka
>>> Mpf.dps = 50
>>> MPF (0,1)
MPF ("0,1000000000000000055511151231257827021181583404541016") # śmieci
>>> MPF ("0,1")
MPF ("0,1000000000000000000000000000000000000000000000000001") # ok
Następujące funkcje dostępne są standardowe i wspierać oba argumenty prawdziwe i złożone:
sqrt, exp, log, moc, cos, sin, tan, pałka, sinh, tanh,
acos, asin, atan, acosh, asinh, atanh
Przykład:
>>> Mpf.dps = 15
>>> cos druku (1)
+0,540302305868140
>>> Mpf.dps = 50
>>> cos druku (1)
0,54030230586813971740093660744297660373231042061792
Niektóre rzadkie funkcje dostępne są również: gamma (funkcja gamma), silni, ERF (funkcja błędu), lower_gamma / upper_gamma (niekompletna funkcja gamma) i zeta (funkcja zeta Riemanna).
Wreszcie, funkcje convenience hypot i atan2 są dostępne (zdefiniowany tylko dla liczb rzeczywistych).
Stałe pi, e, i cgamma (stała Eulera) są dostępne także specjalne obiekty, które zachowują się jak MPFS ale których wartości automatycznie dostosuje się do precyzji.
>>> Mpf.dps = 15
>>> Print pi
+3,14159265358979
>>> Mpf.dps = 50
>>> Print pi
3,1415926535897932384626433832795028841971693993751
>>> Mpf.dps = 15
>>> E ** (- pi * 1j)
mpc (real = "- 1", urojona = '- 1.2289836075083701E-16')
>>> Mpf.dps = 50
>>> E ** (- pi * 1j)
mpc (real = "- 1", urojona = '1,0106 [...] E-51 ")
Reżyseria zaokrąglenie jest częściowo zrealizowane. Na przykład, to oblicza i sprawdza się 15-cyfrowy przedział przybliżenie pi:
>>> Mpf.dps = 15
>>> Mpf.round_down (); = + pi pi1
>>> Mpf.round_up (); pi2 = + pi
Pi1 >>>
MPF ("3,1415926535897931")
>>> Pi2
MPF ("3,1415926535897936")
>>> Mpf.dps = 30
>>> PI1
Co nowego w tym wydaniu:
- Ogólne
- Teraz można tworzyć wiele obiektów kontekstowe i użyć metod kontekstu lokalnego zamiast globalnych państwowych / funkcji (np mp2 = mp.clone (); mp2.dps = 50; mp2.cos (3)). Nie wszystkie funkcje zostały przeliczone metod kontekstowych, a są pewne błędy, dlatego ta funkcja jest obecnie eksperymentalne.
- Jeśli mpmath jest zainstalowany w Sage 4.0 lub nowszej, mpmath będą teraz używać sage.Integer zamiast Python długo wewnętrznie.
- Usunięto przypadki starym stylu dzielenia liczby całkowitej od kodzie.
- runtests.py można uruchomić z -coverage do generowania statystyk pokrycia.
- Rodzaje i podstawowe działania arytmetyczne,
- Poprawiono porównanie z inf.
- Zmiana formatu repr typu interwałowego mpi do eval (repr (x)) == x.
- Ulepszone drukowanie odstępach czasu, z konfiguracją formatu wyjściowego (nadesłane przez Vinzent Steinberg oparty na kodzie Don Peterson).
- Odstępy wspierane przez mpmathify () i nstr () (wniesionego przez Vinzent Steinberg).
- RPP jest obecnie hashable.
- Dodano więcej opcji formatowania wewnętrznej to_str funkcji.
- Szybsza czystej Python pierwiastek kwadratowy.
- Usuń spacje daje błędne wartości w str- & gt;. Mpf konwersji
- Rachunek
- Poprawiono nsum () z Eulera-Maclaurina sumowanie, które wcześniej ignorować indeks początkowy i sumę od n = 1.
- Wdrożone Metoda Newtona dla findroot () (nadesłane przez Vinzent Steinberg).
- algebry liniowej
- Poprawiono LU_decomp () do rozpoznawania pojedynczych macierzy (nadesłane przez Vinzent Steinberg).
- Różne funkcje norma zostały zastąpione przez normy normy wektora funkcji generycznych (x, p) i rodzajowe funkcji mnorm normę macierzy (x, p).
- Funkcje specjalne:
- Niektóre wewnętrzne bufory zostały zmienione na zawsze nieco overallocate precyzją. To rozwiązuje najgorszy zachowanie gdzie wcześniej buforowane wartość musiała być przeliczane na każdym wywołaniu funkcji.
- Poprawiono log (mała ilość) powrót bzdury na dużą precyzją.
- Poprawiono gamma () i funkcje pochodne, takie jak dwumianowy () powrót złe wyniki w całkowitych jest podzielna wejść przez dużą moc 2.
- Poprawiono asin () nie zgłasza wyjątek w wysokiej precyzji (nadesłane przez Vinzent Steinberg).
- Zoptymalizowany kod AGM dla logarytmu naturalnego, dzięki czemu wcześniej stosowaną metodą Newtona na dokładności pośrednich nieaktualne.
- Funkcja AGM średnia arytmetyczna, geometryczna () jest teraz o wiele szybsze, przy niskiej precyzji.
- Szybsze implementacje ellipk () i ellipe ().
- Analityczne kontynuacja ellipe (), aby | x | & gt;. = 1 realizowane
- Funkcja dziennika Wdrożony gamma (loggamma ()) z odpowiednimi cięciami branży (powolne, wdrożeniowych zastępczy).
- Poprawiono cięcia gałęzi o hyperfac ().
- Wdrożone Riemanna-Siegel Z-function (siegelz ()).
- Funkcja theta Wdrożony Riemanna-Siegel (siegeltheta ()).
- Wdrożone obliczenie punktów Gram (grampoint ()).
- Wdrożone obliczenie funkcji zeta Riemanna zer (zetazero ()).
- Zaimplementowane funkcje zliczania prime: powoli, dokładna wersja (primepi ()). i szybka wersja przybliżone (primepi2 ()), który daje przedział obwiedni.
- Funkcja Wdrożony prime liczenia Riemanna R (riemannr ()).
- Wprowadzone numery wielomiany (Bell i dzwon ()).
- Funkcja expm1 Wdrożony ().
- Wdrożone "funkcja wielowykładniczym" (polyexp ()).
- Wdrożone liczby bliźniacze stałe (twinprime) i stałe (Mertens Mertens ').
- Funkcja zeta Wdrożony premier (primezeta ()).
Co nowego w wersji 0.10:
- Dodatki obejmują kreślenia wsparcia, macierze i algebry liniowej, nowe funkcje korzeniowe rozpoznawczej i kwadratury algorytmy, wzmocnione interwał arytmetyki i niektóre nowe funkcje specjalne.
- Wiele ulepszeń prędkości zostały popełnione (kilka funkcji, są o wiele szybsze niż w 0.9), i różne błędy zostały poprawione.
- Co ważne, to wydanie poprawki mpmath do pracy z Python 2.6.
Wymagania :
- Python
Komentarze nie znaleziono