2012-11-18 4 views
8

डिफॉल्ट फ्लोटिंग पॉइंट नंबर सटीकता को दूसरे पर स्विच करने के लिए, शायद कस्टम? मुझे इसकी ज़रूरत है, क्योंकि मैं कुछ गणना करता हूं और मुझे लगता है कि मुझे डिफ़ॉल्ट फ्लोट पॉइंट सटीकता में वृद्धि करनी चाहिए।बढ़ती फ्लोट-पॉइंट संख्या सटीकता

+1

पायथन और numpy डिफ़ॉल्ट रूप से डबल परिशुद्धता फ्लोटिंग बिंदु का उपयोग करें। आपको क्या लगता है कि इसमें अपर्याप्त "सटीकता" है? – talonmies

+1

क्या आपने http://docs.python.org/2/library/decimal.html –

+1

पर देखा है, आप अपनी गणना के लिए 'दशमलव 'का उपयोग कर सकते हैं, लेकिन फिर आप' numpy' का प्रदर्शन लाभ खो देते हैं। मेरे सबसे अच्छे ज्ञान के लिए आप इस ट्रेडऑफ से बाहर नहीं निकल सकते हैं - सबसे सटीक डेटा प्रकार जो एक प्रोसेसर मूल रूप से काम कर सकता है वह एक 'numpy' उपयोग है। – millimoose

उत्तर

7

मुझे हाल ही में इस समस्या से निपटना पड़ा और mpmath सही था। बीएसडी लाइसेंस के तहत यह शुद्ध पायथन है।

Mpmath is a pure-Python library for multiprecision floating-point arithmetic. It provides an extensive set of transcendental functions, unlimited exponent sizes, complex numbers, interval arithmetic, numerical integration and differentiation, root-finding, linear algebra, and much more. Almost any calculation can be performed just as well at 10-digit or 1000-digit precision, and in many cases mpmath implements asymptotically fast algorithms that scale well for extremely high precision work

यह भी बहुत धीमी है, और यह gmpy पुस्तकालय का लाभ उठाने है नहीं कर सकते हैं स्थापित (एक C-coded Python extension modules that support fast multiple-precision arithmetic)।

+0

scipy.integrate.odeint का उपयोग करके मुझे "टाइप एरर: सरणी को सुरक्षित प्रकार से सुरक्षित रूप से नहीं डाला जा सकता है" = (ऐसा लगता है कि scipy.integrate.odeint सब कुछ फ्लोट करने के लिए कनवर्ट करें। – user983302

+1

लेकिन इसका अपना ओडे सॉल्वर है - [odefun] (http : //mpmath.googlecode.com/svn/trunk/doc/build/calculus/odes.html)। ठीक है, यह समाधान हो। – user983302

+0

[असीमितता] के बारे में अद्यतन पाठ (http://mpmath.org/doc/ वर्तमान/तकनीकी.html # प्रतिनिधित्व-संख्याओं): "एमपीएमएथ मंटिसा और एक्सपोनेंट दोनों के लिए मनमाना परिशुद्धता पूर्णांक का उपयोग करता है, इसलिए कंप्यूटर की स्मृति द्वारा अनुमत संख्या के रूप में संख्या उतनी बड़ी हो सकती है। कुछ देखभाल तब आवश्यक हो सकती है जब काम करना आवश्यक हो बहुत बड़ी संख्या। " –

2

यदि आप अधिक सटीकता चाहते हैं तो मैं आपको bigfloat पैकेज का उपयोग करने की सलाह दूंगा (क्योंकि यह वही है जो इसके लिए बनाया गया है)। वैकल्पिक रूप से, आप Decimal कक्षा में भी देख सकते हैं।

+0

क्या एक दूसरे के साथ सौदा करने के लिए scipy.integrate और bigfloat बनाना संभव है? वर्तमान में मुझे "TypeError: सरणी को सुरक्षित प्रकार से सुरक्षित नहीं किया जा सकता है" जब बिगफ्लैट तर्कों को scipy.integrate.odeint – user983302

+0

@ user983302 शायद [यह] (http://stackoverflow.com/questions/7770870/numpy-array-with -डिटाइप-दशमलव) आपकी मदद करेगा। – arshajii