mpmath is 'n plaasvervanger vir Python se float / komplekse tipes en wiskunde / cmath modules met 'n onbeperkte presisie en eksponent groottes. Die mpmath sagteware is heeltemal geskryf in Python sonder enige eksterne afhanklikhede en dus loop byna oral, sonder die noodsaaklikheid vir samestelling.
Om te installeer, pak die mpmath argief en hardloop
python setup.py installeer
Dokumentasie en gebruik:
Invoer mpmath met
van mpmath invoer *
Dit bied die klasse MPF en mgv wat analoog werk om Python se float en komplekse tipes:
>>> MPF (2) / MPF (3)
MPF (',66666666666666663')
>>> MBK (0, -1)
MBK (real = "0", verbeelden = '- 1')
>>> MPF (-0,6) ** MPF (-0,2)
MBK (real = ',89603999408558288, verbeelden =' - ,65101116249684809 ')
Vir mooier uitset (wat ook huide klein afrondingsfoute), gebruik die gedrukte of str ():
>>> Druk MPF (2) / MPF (3)
,666666666666667
>>> Druk MBK (1 + 2j) ** 0,5
(1,27201964951407 + 0.786151377757423j)
Die presisie word beheer deur die eienskappe mpf.prec (aantal bisse) en mpf.dps (aantal desimale). Hierdie eienskappe is gekoppel, so verander een outomaties die ander aan te pas. Opstel van Prec of DPS verander die akkuraatheid waarteen alle bedrywighede uitgevoer word en die nommer van syfers te vertoon wanneer die druk getalle. Die standaard is
Prec = 53 en DPS = 15, dieselfde as Python dryf.
>>> Mpf.dps = 30
>>> MPF (2) / MPF (3)
MPF ('0,66666666666666666666666666666663')
>>> Druk _
,666666666666666666666666666667
>>> Mpf.dps = 15 # herstel en die standaard
Jy kan mpfs en mpcs skep van Python getalle, of 'n kombinasie mpfs en mpcs met Python getalle in rekenkundige operasies, maar wees bewus dat gereelde Python dryf net beperkte akkuraatheid. Om 'n MPF met 'n full-presisie waarde inisialiseer, gebruik 'n string:
>>> MPF (0,1)
MPF ('0,10000000000000001') # dieselfde akkuraatheid as float
>>> Mpf.dps = 50
>>> MPF (0,1)
MPF ('0,1000000000000000055511151231257827021181583404541016') # junk
>>> MPF ('0,1')
MPF ('0,1000000000000000000000000000000000000000000000000001') # ok
Die volgende standaard funksies is beskikbaar en ondersteun beide werklike en komplekse argumente:
sqrt, exp, log, krag, cos, sonde, tan, cosh, sinh, tanh,
acos, Asin, atan, acosh, asinh, Atanh
Voorbeeld:
>>> Mpf.dps = 15
>>> Druk cos (1)
,540302305868140
>>> Mpf.dps = 50
>>> Druk cos (1)
0,54030230586813971740093660744297660373231042061792
Sommige minder algemene funksies is ook beskikbaar: gamma (gamma funksie), faktoriaal, erf (fout funksie), lower_gamma / upper_gamma (onvolledige gamma funksie) en zeta (Riemann zeta-funksie).
Ten slotte, die gerief funksies hypot en atan2 beskikbaar is (gedefinieer vir net reële getalle).
Die konstantes pi, e, en cgamma (Euler se konstante) is beskikbaar as 'n spesiale voorwerpe wat optree soos mpfs, maar wie se waardes outomaties aan te pas om die akkuraatheid.
>>> Mpf.dps = 15
>>> Druk pi
3,14159265358979
>>> Mpf.dps = 50
>>> Druk pi
3,1415926535897932384626433832795028841971693993751
>>> Mpf.dps = 15
>>> E ** (- pi * 1J)
MBK (real = '- 1, verbeelden =' - 1.2289836075083701E-16 ')
>>> Mpf.dps = 50
>>> E ** (- pi * 1J)
MBK (real = '- 1, verbeelden =' 1,0106 [...] E-51 ')
Gerig afronding word gedeeltelik geïmplementeer word. Byvoorbeeld, hierdie bere en verifieer 'n 15-syfer benadering interval vir 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 nuut in hierdie release:
- Algemene
- Dit is nou moontlik om verskeie konteks voorwerpe te skep en gebruik konteks plaaslike metodes in plaas van globale staat / funksies (bv MP2 = mp.clone (); mp2.dps = 50; mp2.cos (3)). Nie alle funksies is omgeskakel na konteks metodes, en daar is 'n paar foute, so hierdie funksie is tans eksperimentele.
- As mpmath geïnstalleer in Sage 4,0 of later, mpmath sal nou gebruik sage.Integer plaas van Python lank intern.
- verwyder gevalle van ou-styl heelgetal afdeling van die programkode.
- runtests.py kan hardloop met -coverage dekking statistieke te genereer.
- Tipes en basiese rekenkundige
- Vaste vergelyking met -inf.
- verander repr formaat van die tipe MPI interval te eval (repr (x)) == x. maak
- Verbeterde druk van intervalle, met konfigureerbare uitset formaat (bygedra deur Vinzent Steinberg gebaseer op kode deur Don Peterson).
- Intervalle deur mpmathify () en nstr () (bygedra deur Vinzent Steinberg).
- MBK nou hashable.
- Bygevoeg meer opmaak opsies om die interne funksie to_str.
- Faster suiwer Python vierkantswortel.
- Fix sleep witspasie gee verkeerde waardes in str- & gt;. MPF omskakeling
- Calculus
- Vaste nsum () met Euler-Maclaurin opsomming wat voorheen sou ignoreer die beginspan indeks en som van n = 1.
- Geïmplementeer Newton se metode vir findroot () (bygedra deur Vinzent Steinberg).
- Lineêre algebra
- Vaste LU_decomp () om singuliere matrikse (bygedra deur Vinzent Steinberg) erken.
- Die verskillende norm funksies is vervang deur die generiese vektor norm funksie norm (x, p) en die generiese matriks norm funksie mnorm (x, p).
- Spesiale funksies:
- 'n interne caches verander om altyd effens overallocate presisie. Hierdie fixes ergste geval gedrag waar voorheen die kas waarde moes word recomputed elke funksie oproep.
- Vaste log (klein aantal) terugkeer nonsens op 'n hoë presisie.
- Vaste gamma () en afgeleide funksies soos binomiaal () terug verkeerde resultate op heelgetal insette om deelbaar deur 'n groot krag van 2.
- Vaste Asin () om nie 'n uitsondering op 'n hoë presisie (bygedra deur Vinzent Steinberg) in te samel.
- Geoptimaliseerd die AGM-kode vir die natuurlike logaritme, die maak van die voorheen gebruik Newton metode op intermediêre verduidelijk uitgedien.
- Die rekenkundige-geometriese gemiddelde funksie AJV () is nou 'n orde van grootte vinniger teen lae akkuraatheid.
- Faster implementering van ellipk () en ellipe ().
- Analitiese voortsetting van ellipe () om | x | & gt;. = 1 geïmplementeer
- geïmplementeer om die log gamma funksie (loggamma ()) met die korrekte tak snitte (stadig, plekhouer implementering).
- Vaste tak snitte van hyperfac ().
- geïmplementeer om die Riemann-Siegel Z-funksie (siegelz ()).
- geïmplementeer om die Riemann-Siegel theta funksie (siegeltheta ()).
- Geïmplementeer berekening van Gram punte (grampoint ()).
- Geïmplementeer berekening van Riemann zeta funksie nulle (zetazero ()).
- geïmplementeer om die eerste tel funksie: 'n stadige, presiese weergawe (primepi ()). en 'n vinnige benaderde weergawe (primepi2 ()) wat 'n jaag interval gee.
- geïmplementeer om die Riemann R eerste tel funksie (riemannr ()).
- Geïmplementeer Bell getalle en polinome (klok ()).
- geïmplementeer om die expm1 () funksie.
- geïmplementeer om die 'polyexponential funksie (polyexp ()).
- geïmplementeer om die tweeling eerste konstante (twinprime) en Mertens se konstante (Mertens).
- geïmplementeer om die eerste zeta funksie (primezeta ()).
Wat is nuut in weergawe 0,10:
- Toevoegings sluit plot ondersteuning, matrikse en lineêre algebra funksies, nuwe wortel-bevinding en kwadratuur algoritmes, verbeterde interval rekenkunde, en 'n paar nuwe spesiale funksies.
- Baie verbeterings spoed gepleeg ('n paar funksies is 'n orde van grootte vinniger as in 0.9), en verskeie foute is vasgestel.
- Wat belangrik is, is hierdie release fixes mpmath om te werk met Python 2,6.
Vereistes :
- Python
Kommentaar nie gevind