mpmath är en ersättning för Pythons float / komplexa typer och matematik / CMATH moduler med obegränsade precision och exponent storlekar. Den mpmath programvara är skriven helt i Python utan externa beroenden och därmed löper nästan var som helst, utan behov av sammanställningen.
För att installera, packa upp mpmath arkivet och kör
python setup.py installera
Dokumentation och användning:
Import mpmath med
från mpmath import *
Detta ger klasser MPF och MPC som arbetar analogt med Pythons float och komplexa typer:
>>> MPF (2) / MPF (3)
MPF (',66666666666666663')
>>> MPC (0, -1)
MPC (verkliga = "0", imag = '- 1 ")
>>> MPF (-0,6) ** MPF (-0,2)
MPC (verkliga = ",89603999408558288 ', imag =' - ,65101116249684809)
För snyggare utgång (som också döljer små avrundningsfel), använda utskrift eller str ():
>>> Utskrifts MPF (2) / MPF (3)
,666666666666667
>>> Print MPC (1 + 2j) ** 0,5
(1,27201964951407 + 0.786151377757423j)
Precisionen styrs av egenskaperna mpf.prec (antal bitar) och mpf.dps (antal decimaler). Dessa egenskaper är kopplade, så ändrar man uppdaterar automatiskt den andra för att matcha. Ställa prec eller dps ändrar precisionen där alla arbetsmoment utförs och hur många siffror som ska visas när du skriver ut tal. Standardvärdet är
Prec = 53 och dps = 15, samma som Python flyter.
>>> Mpf.dps = 30
>>> MPF (2) / MPF (3)
MPF ('0,66666666666666666666666666666663')
>>> Trycket _
,666666666666666666666666666667
>>> mpf.dps = 15 # återställa till standard
Du kan skapa MPFS och Medelhavsländerna från Python-nummer, eller kombinera MPFS och Medelhavsländerna med Python nummer i aritmetiska operationer, men tänk på att regelbunden Python flyter bara har ändlig precision. För att initiera en MPF med en fullständig precision värde, använda en sträng:
>>> MPF (0,1)
MPF (0,10000000000000001 ') # samma noggrannhet som flyttal
>>> Mpf.dps = 50
>>> MPF (0,1)
MPF ('0,1000000000000000055511151231257827021181583404541016') # skräp
>>> MPF (0,1 ')
MPF ('0,1000000000000000000000000000000000000000000000000001') # OK
Följande standardfunktioner finns tillgängliga och stödja både reella och komplexa argument:
sqrt, exp, logga, makt, cos, sin solbränna, cosh, sinh, tanh,
Acos, asin, atan, ARCCOSH, ARCSINH, ATANH
Exempel:
>>> Mpf.dps = 15
>>> utskrifts cos (1)
,540302305868140
>>> Mpf.dps = 50
>>> utskrifts cos (1)
0,54030230586813971740093660744297660373231042061792
Vissa mindre vanliga funktioner finns också tillgängliga: gamma (gamma-funktion), fakultet, ERF (felfunktion), lower_gamma / upper_gamma (ofullständig gammafunktion) och zeta (Riemann zeta funktion).
Slutligen, de komfortfunktioner hypot och atan2 finns (definierad endast reella tal).
Konstanterna pi, e och cgamma (Eulers konstant) är tillgängliga som särskilda objekt som beter sig som MPFS men vars värden automatiskt anpassa sig till den precision.
>>> Mpf.dps = 15
>>> Trycket pi
3,14159265358979
>>> Mpf.dps = 50
>>> Trycket 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)
Riktad avrundning delvis genomförts. Till exempel, beräknar detta och verifierar ett 15-siffrigt approximationsintervallet för 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
Vad är nytt i den här versionen:
- Allmänt
- Det är nu möjligt att skapa flera kontext objekt och använda kontext lokala metoder i stället för globala statliga / funktioner (t.ex. MP2 = mp.clone (); mp2.dps = 50, mp2.cos (3)). Inte alla funktioner har konverterats till kontext metoder, och det finns en del buggar, så den här funktionen är för närvarande experimentell.
- Om mpmath installeras i Sage 4.0 eller senare, mpmath kommer nu använda sage.Integer istället för Python länge internt.
- Borttagna fall av gammaldags heltalsdivision från kodbasen.
- runtests.py kan köras med -coverage att ta fram statistik täckning.
- Typer och grundläggande aritmetiska
- Fast jämförelse med -inf.
- Ändrad repr format av typen mpi intervallet för att göra eval (repr (x)) == x.
- Förbättrad utskrift av intervaller, med konfigurerbar videoformat (bidragit med Vinzent Steinberg baserat på koden genom Don Peterson).
- Intervall stöds av mpmathify () och nstr () (bidragit med Vinzent Steinberg).
- MPC är nu hashable.
- Inkom mer formateringsalternativ till intern funktion to_str.
- Snabbare ren-Python kvadratroten.
- Fix avslutande blank ge felaktiga värden i str- & gt;. MPF konvertering
- Calculus
- Fast nsum () med Euler-Maclaurin summerat som tidigare skulle ignorera startindex och summan från n = 1.
- Genomfört Newtons metod för findroot () (bidragit med Vinzent Steinberg).
- Linjär algebra
- Fixat LU_decomp () att erkänna singulära matriser (bidragit med Vinzent Steinberg).
- De olika norm funktioner ersattes av den generiska vektorn normfunktion norm (x, p) och den generiska matrisnorm funktion mnorm (x, p).
- Specialfunktioner:
- Vissa interna cachar ändrades alltid något overallocate precision. Detta fixar värsta fall beteende där tidigare cachade värdet måste räknas om på varje funktionsanrop.
- Fast log (litet antal) åter nonsens med hög precision.
- Fast gamma () och derivat funktioner såsom binomial () återvänder fel resultat på heltal ingångar är delbart med en stor makt 2.
- Fast asin () att inte göra ett undantag på hög precision (bidragit med Vinzent Steinberg).
- Optimerad årsstämman koden för den naturliga logaritmen, vilket gör att tidigare använda Newtons metod vid mellanprecisions föråldrade.
- Det aritmetiska-geometriska medelvärdet funktion agm () är nu en storleksordning snabbare vid låg precision.
- Snabbare implementeringar av ellipk () och ellipe ().
- Analytisk fortsättning på ellipe () för att | x | & gt;. = 1 genomföras
- Genomfört log gammafunktionen (loggamma ()) med rätt gren nedskärningar (långsam, genomförande platshållare).
- Fasta grenstyckningsdelar av hyperfac ().
- Genomfört Riemann-Siegel Z-funktion (siegelz ()).
- Genomfört theta funktion Riemann-Siegel (siegeltheta ()).
- Genomfört beräkning av grampunkter (grampoint ()).
- Genomfört beräkning av Riemann zeta funktion nollor (zetazero ()).
- Genomfört främsta räkning funktion: en långsam, exakt version (primepi ()). och en ungefärlig snabb version (primepi2 ()) som ger en begränsningsintervall.
- Genomfört Riemann R prime räkning funktion (riemannr ()).
- Genomförda Bell tal och polynom (klocka ()).
- Genomfört den expm1 funktion ().
- Genomfört den "polyexponentiell funktion" (polyexp ()).
- Genomfört twin främsta konstanten (twinprime) och Mertens "konstant (Mertens).
- Genomfört främsta zetafunktion (primezeta ()).
Vad är nytt i version 0.10:
- Tillägg inkluderar konspirera support, matriser och linjära algebra funktioner, nya rot-finding och kvadratur algoritmer, förbättrad intervall aritmetik, och några nya specialfunktioner.
- Många hastighet förbättringar har begåtts (några funktioner är en storleksordning snabbare än 0,9), och olika buggar har åtgärdats.
- Det är viktigt att denna utgåva rättar mpmath att arbeta med Python 2.6.
Krav :
- Python
Kommentarer hittades inte