mpmath is een vervanging voor Python float / complexe vormen en wiskunde / CMATH modules met onbeperkte precisie en exponent maten. De mpmath software is volledig geschreven in Python zonder externe afhankelijkheden en dus loopt bijna overal, zonder dat compilatie.
Om te installeren, pak het mpmath archief en voer
python setup.py installeren
Documentatie en gebruik:
Import mpmath met
van mpmath import *
Dit geeft de klassen mpf en mpc die analoog werken om Python's float en complexe types:
>>> Mpf (2) / MPF (3)
MPF (',66666666666666663')
>>> Mpc (0, -1)
MPC (real = '0', imag = '- 1')
>>> Mpf (-0,6) ** MPF (-0,2)
mpc (echte = ',89603999408558288', imag = '- ,65101116249684809')
Voor mooier uitgang (die ook verbergt kleine afrondingsfouten), gebruik print of str ():
>>> Print mpf (2) / MPF (3)
0,666666666666667
>>> Print mpc (1 + 2j) ** 0,5
(1,27201964951407 + 0.786151377757423j)
De nauwkeurigheid wordt bestuurd door de eigenschappen mpf.prec (aantal bits) en mpf.dps (aantal decimalen). Deze eigenschappen zijn gekoppeld, zodat het veranderen van een automatisch de andere aan te passen. Instellen prec of dps verandert de precisie waarmee alle bewerkingen worden uitgevoerd en het aantal cijfers weer te geven bij het afdrukken van nummers. De standaard is
prec = 53 en dps = 15, hetzelfde als Python drijft.
>>> Mpf.dps = 30
>>> Mpf (2) / MPF (3)
MPF ('0,66666666666666666666666666666663')
>>> Print _
,666666666666666666666666666667
>>> Mpf.dps = 15 # herstellen naar standaard
U kunt MPFS en mediterrane partnerlanden te maken van Python nummers, of combineer MPFS en mediterrane partnerlanden met Python cijfers in rekenkundige bewerkingen, maar wees ervan bewust dat regelmatige Python drijft alleen eindige precisie. Om een mpf met een volledige precisie waarde initialiseren, gebruik dan een string:
>>> Mpf (0,1)
MPF ('0,10000000000000001 ") # dezelfde nauwkeurigheid als float
>>> Mpf.dps = 50
>>> Mpf (0,1)
MPF ('0,1000000000000000055511151231257827021181583404541016 ") # junk
>>> Mpf ('0.1')
MPF ('0,1000000000000000000000000000000000000000000000000001 ") # ok
De volgende standaard functies zijn beschikbaar en ondersteunen zowel reële en complexe argumenten:
sqrt, exp, log, macht, cos, zonde, tan, cosh, Sinh, tanh,
ACOS, asin, atan, ACOSH, ASINH, ATANH
Voorbeeld:
>>> Mpf.dps = 15
>>> Print cos (1)
,540302305868140
>>> Mpf.dps = 50
>>> Print cos (1)
0,54030230586813971740093660744297660373231042061792
Sommige minder voorkomende functies zijn ook beschikbaar: gamma (gamma-functie), faculteit, erf (error-functie), lower_gamma / upper_gamma (incomplete gamma functie) en Zeta (Riemann zeta functie).
Tot slot, het gemak functies de st en atan2 beschikbaar zijn (gedefinieerd voor enige echte getallen).
De constanten pi, e, en Cgamma (Euler's constant) zijn beschikbaar als speciale objecten die zich gedragen als MPFS maar waarvan de waarden automatisch aanpassen aan de precisie.
>>> 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')
Geregisseerd afronding is gedeeltelijk uitgevoerd. Bijvoorbeeld, dit berekent en controleert een 15-cijferige aanpassing interval voor 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
Wat is nieuw in deze release:
- Algemeen
- Het is nu mogelijk om meerdere context objecten te maken en te gebruiken context-lokale methoden in plaats van globale staat / functies (bijv mp2 = mp.clone (); mp2.dps = 50; mp2.cos (3)). Niet alle functies zijn omgebouwd tot context methoden, en er zijn een aantal bugs, dus deze functie is momenteel experimenteel.
- Als mpmath wordt geïnstalleerd in Sage 4.0 of hoger, mpmath zal nu gebruik sage.Integer plaats van Python lang intern.
- verwijderd voorbeelden van oude stijl integer deling uit de codebase.
- runtests.py kan worden uitgevoerd met -coverage dekking statistieken te genereren.
- Soorten en elementaire rekenkundige
- Vast vergelijking met -inf.
- Gewijzigde repr format van het type MPI interval om eval (repr (x)) == x. maken
- Verbeterde printen van intervallen, met configureerbare output formaat (bijgedragen door Vinzent Steinberg gebaseerd op code door Don Peterson).
- intervallen ondersteund door mpmathify () en nstr () (bijgedragen door Vinzent Steinberg).
- MPC is nu hashable.
- Toegevoegd meer opmaakopties om de interne functie to_str.
- Sneller pure-Python vierkantswortel.
- Fix achterstand witruimte geven verkeerde waarden in str- & gt;. Mpf conversie
- Calculus
- Vast nsum () met Euler-Maclaurin sommering die eerder zou voorbijgaan aan de start-index en de som van n = 1.
- Implemented methode van Newton voor findroot () (bijgedragen door Vinzent Steinberg).
- Lineaire algebra
- Vast LU_decomp () naar enkelvoud matrices (bijgedragen door Vinzent Steinberg) herkennen.
- De verschillende norm functies werden vervangen door de generieke vector norm functie norm (x, p) en de generieke matrix norm functie mnorm (x, p).
- Speciale functies:
- Een aantal interne caches werden veranderd om altijd iets overallocate precisie. Dit lost worst-case gedrag waar voorheen in de cache waarde moest worden herberekend op elke functie oproep.
- Vast log (klein aantal) terug onzin bij hoge precisie.
- Vast gamma () en afgeleide functies zoals binomiale () terugkeert verkeerde resultaten op integer ingangen zijn deelbaar door een grote macht van 2.
- Vast asin () niet tot een uitzondering op hoge precisie (bijgedragen door Vinzent Steinberg) te verhogen.
- Geoptimaliseerd de AVA code voor de natuurlijke logaritme, waardoor de eerder gebruikte Newton methode op tussenliggende precisie achterhaald.
- Het rekenkundig-meetkundig gemiddelde functie AGM () is nu een orde van grootte sneller bij lage precisie.
- Snellere implementaties van ellipk () en ellipe ().
- Analytisch voortzetting van ellipe () aan | x | & gt;. = 1 geïmplementeerd
- Implemented de log gammafunctie (loggamma ()) met de juiste branche bezuinigingen (traag, placeholder implementatie).
- Vast tak stukken hyperfac ().
- Implementatie van de Riemann-Siegel Z-functie (siegelz ()).
- Implementatie van de Riemann-Siegel theta-functie (siegeltheta ()).
- Implemented berekening van Gram punten (grampoint ()).
- Implemented berekening van de Riemann zetafunctie nullen (zetazero ()).
- Implemented de belangrijkste telfunctie: een trage, exacte versie (primepi ()). en een snelle benaderende versie (primepi2 ()) die een bounding interval geeft.
- Implemented de Riemann R prime telfunctie (riemannr ()).
- Implemented Bell getallen en veeltermen (bel ()).
- Implementatie van de expm1 () functie.
- Implementatie van de 'polyexponentiële function' (polyexp ()).
- Implemented de priemtweeling constant (twinprime) en Mertens 'constant (mertens).
- Implemented de prime zetafunctie (primezeta ()).
Wat is nieuw in versie 0.10:
- toevoegingen zijn plotten ondersteuning, matrices en lineaire algebra functies, nieuwe wortel-finding en kwadratuur algoritmen, verbeterde interval rekenkunde, en een aantal nieuwe speciale functies.
- Veel verbeteringen snelheid zijn gepleegd (een paar functies zijn een orde van grootte sneller dan in 0,9), en diverse bugs zijn opgelost.
- Het is belangrijk deze release fixes mpmath te werken met Python 2.6.
Eisen
- Python
Reacties niet gevonden