mpmath je náhradou za float / komplexních typů Python a math / CMATH moduly s neomezenými přesných a exponent velikostí. Mpmath software je napsán v Pythonu zcela bez jakýchkoli vnějších závislostí, a proto běží téměř kdekoli, bez nutnosti kompilace.
Chcete-li nainstalovat, rozbalte archiv mpmath a spusťte
python setup.py nainstalovat
Dokumentace a využití:
Importovat mpmath s
od mpmath import *
To poskytuje Třídy MPF a MPC, které pracují analogicky jako Python plovákem a komplexní typy:
>>> MPF (2) / MPF (3)
MPF (",66666666666666663 ')
>>> MPC (0, -1)
MPC (Real = '0', imag = '- 1')
>>> MPF (-0.6) ** MPF (-0.2)
MPC (Real = ',89603999408558288', imag = '- ,65101116249684809 ")
Pro krásnější výstupu (který také skrývá drobné chyby zaokrouhlení), použití nebo tisk str ():
>>> Print MPF (2) / MPF (3)
,666666666666667
>>> Print MPC (1 + 2j) ** 0.5
(1,27201964951407 + 0.786151377757423j)
Přesnost je řízen vlastnostmi mpf.prec (počtem bitů) a mpf.dps (počet desetinných míst). Tyto vlastnosti jsou spojeny, takže změna jednoho automaticky aktualizuje druhé, aby odpovídaly. Nastavení Prec nebo DPS změní přesnosti, ve kterém jsou všechny operace provedeny a počet číslic se zobrazí při tisku čísel. Výchozí hodnota je
Prec = 53 a DPS = 15, stejně jako Python plave.
>>> Mpf.dps = 30
>>> MPF (2) / MPF (3)
MPF ("0,66666666666666666666666666666663 ')
>>> Print _
,666666666666666666666666666667
>>> mpf.dps = 15 # obnovit výchozí
Můžete vytvářet MPFS a MPC z Pythonu čísel, nebo kombinovat MPFS a MPC s Python čísly aritmetické operace, ale uvědomte si, že pravidelná Python plave jen mít konečný přesnost. Chcete-li inicializovat MPF s full-přesné hodnoty, použijte řetězec:
>>> MPF (0,1)
MPF ("0,10000000000000001") # stejnou přesností jako float
>>> Mpf.dps = 50
>>> MPF (0,1)
MPF ("0,1000000000000000055511151231257827021181583404541016") # nevyžádanou
>>> MPF ("0.1")
MPF ("0,1000000000000000000000000000000000000000000000000001") # ok
Následující standardní funkce jsou dostupné a podporují oba skutečné a komplexní argumenty:
sqrt, exp, log, energie, cos, sin, pálením, gumový obušek, sinh, tanh,
Acos, asin, Atan, acosh, asinh, atanh
Příklad:
>>> Mpf.dps = 15
>>> print cos (1)
,540302305868140
>>> Mpf.dps = 50
>>> print cos (1)
0,54030230586813971740093660744297660373231042061792
Některé méně běžné funkce jsou také k dispozici: gamma (gama funkce), faktoriál, ERF (funkce chyba), lower_gamma / upper_gamma (funkce nekompletní gama) a zeta (funkce Riemann zeta).
Konečně, komfortní funkce hypot a atan2 jsou k dispozici (definována pouze pro reálná čísla).
Konstanty pi, e, a cgamma (Eulerova konstanta) jsou k dispozici jako speciální objekty, které se chovají jako MPFS ale jejichž hodnoty se automaticky nastaví na přesnosti.
>>> Mpf.dps = 15
>>> Print pi
3,14159265358979
>>> Mpf.dps = 50
>>> Print pi
3,1415926535897932384626433832795028841971693993751
>>> Mpf.dps = 15
>>> E ** (- pi * 1J)
MPC (real = '- 1', imag = '- 1.2289836075083701E-16')
>>> Mpf.dps = 50
>>> E ** (- pi * 1J)
MPC (real = '- 1', imag = '1,0106 [...] E-51 ")
Režie zaokrouhlení je částečně implementována. Například, to počítá a ověřuje na 15-místné sbližování interval pro PI:
>>> Mpf.dps = 15
>>> Mpf.round_down (); PI1 = + pi
>>> Mpf.round_up (); PI2 = + pi
>>> PI1
MPF ("3,1415926535897931 ')
>>> PI2
MPF ("3,1415926535897936 ')
>>> Mpf.dps = 30
>>> PI1
Co je nového v této verzi:
- Obecné
- Nyní je možné vytvořit více kontext objekty a použití kontextu-local metod místo globálních Stát / funkcí (např MP2 = mp.clone (); mp2.dps = 50; mp2.cos (3)). Ne všechny funkce byly převedeny na kontextu metod, a tam jsou některé chyby, takže tato funkce je zatím experimentální.
- Pokud je mpmath instalován v Sage 4.0 nebo novější, mpmath bude nyní používat sage.Integer místo Pythonu dlouho interně.
- Odstraněny případy old-stylu celočíselné dělení z codebase.
- runtests.py lze spustit s -coverage vytvářet statistiky pokrytí.
- Typy a základní aritmetika
- Pevná porovnání s -INF.
- Změnil repr formát typu MPI intervalu, aby se eval (repr (x)) == x.
- Vylepšený tisk intervalů, s nastavitelnou výstupní formát (přispěl Vinzent Steinberg na základě kódu Don Peterson).
- Intervaly podporované mpmathify () a nstr () (přispěl Vinzent Steinberg).
- MPC je teď hashable.
- přidali další možnosti formátování na interní funkce to_str.
- Rychlejší pure-Python odmocniny.
- Fix koncové mezery dávat chybné hodnoty v str- & gt;. MPF konverze
- Matematická analýza
- Pevná nsum () s Euler-Maclaurin sčítání, které by dříve ignorovat index startovní a částku z n = 1.
- Realizace Newtonova metoda pro findroot () (přispěl Vinzent Steinberg).
- Lineární algebra
- Pevná LU_decomp () uznat singulární matice (přispěl Vinzent Steinberg).
- Jednotlivé norma funkce byly nahrazeny obecný vektor normy funkci normy (x, P) a obecný matice normy funkce mnorm (x, p).
- Speciální funkce:
- Některé vnitřní vyrovnávací paměti byly změněny, aby vždy mírně overallocate přesností. To řeší nejhorší-případ chování, kde dříve měli mezipaměti hodnota přepočítávat na každém volání funkce.
- Pevná log (nepatrný počet) vracet nesmysly na vysokou přesností.
- Pevná gama () a deriváty funkce jako dvojčlen () vrací špatné výsledky na celočíselných vstupů je dělitelné velkou silou 2.
- Pevná asin () nevznášet výjimku na vysokou přesností (přispěl Vinzent Steinberg).
- Optimalizované AGM kód pro přirozený logaritmus, což dříve používanou Newtonova metoda v mezilehlých přesnosti zastaralých.
- aritmetický-geometrický průměr Funkce AGM () je nyní řádově rychlejší při nízké přesnosti.
- Rychlejší implementace ellipk () a ellipe ().
- Analytické pokračování ellipe () pro | x | & gt;. = 1 implementován
- Implementována funkce log gamma (loggamma ()) s správnými pobočky řezy (pomalý, implementace zástupný symbol).
- Pevné větve kusy hyperfac ().
- Realizované Riemann-Siegel Z-funkce (siegelz ()).
- Implementována funkce Riemann-Siegel theta (siegeltheta ()).
- Realizace výpočet Gram bodů (grampoint ()).
- Realizace výpočet Riemann funkce zeta nul (zetazero ()).
- Realizace prvotní funkci počítání: pomalý, přesné provedení (primepi ()). a rychle přibližné verze (primepi2 ()), která dává interval ohraničující.
- Realizace hlavní funkcí Riemann R počítání (riemannr ()).
- Realizované čísla Bell a polynomy (zvonek ()).
- expm1 ().
- Provedeno "polyexponenciální funkce" (polyexp ()).
- Realizace dvojče prime konstanta (twinprime) a Mertens 'konstanta (Mertens).
- Realizace primární funkce zeta (primezeta ()).
Implementována funkce
Co je nového ve verzi 0.10:
- Přírůstky zahrnují vykreslování podporu, matice a lineární algebry funkce, nové kořen pro vyhledávání a kvadraturní algoritmy, vylepšené interval aritmetika, a některé nové speciální funkce.
- Mnoho vylepšení rychlosti byly spáchány (několik funkce jsou řádově rychleji než v 0.9), a různé chyby byly opraveny.
- Důležité je, že tato řeší uvolnění mpmath pracovat s Python 2.6.
Požadavky na :
- Python
Komentáře nebyl nalezen