<math.h>
एस के लिए log(1+x)
की गणना के लिए एक और सटीक विधि प्रदान करता है।लॉग (1 + x) लॉग 1p के रूप में लॉग (1-x) है?
log(1-x)
कंप्यूटिंग के लिए एक समान सटीक तरीका है?
कारण मैं पूछता हूं क्योंकि मैं अधिक सटीकता के लिए लॉग-स्पेस में कुछ काम करने की कोशिश कर रहा हूं (मैं अधिकतर गुणा और शून्य के बहुत करीब संख्याओं को जोड़ रहा हूं)। मुझे log1p
का उपयोग करके log(exp(log_of_a) + exp(log_of_b)) = log(a + b)
देता है जो एक फ़ंक्शन लिखना आसान लगता है। मैं अंतर के लिए एक समान कार्य करने की कोशिश कर रहा हूं:
log(exp(log_of_a) - exp(log_of_b)) = log(a - b)
जहां a > b
, ज़ाहिर है।
अनिवार्य रूप से, जब तक न log_a
या log_b
== -inf
के रूप में, समारोह बस लौटना चाहिए:
return log(1 - exp(log_b-log_a)) + log_a;
मेरी log_add
समारोह में, मैं एक log(1 + ...)
साथ खत्म हो, और इसलिए मैं log1p
का उपयोग करें। लेकिन यहां मेरे पास log(1 - ...)
है। शायद ज़रुरत पड़े, मैं भी log1m googled, लेकिन कोई किस्मत ...
जब तर्क x
रेंज [-inf, 1)
में है, तो मैं बस log1p(-x)
इस्तेमाल कर सकते हैं (मेरे जोर a > b
दिया)।
क्या सर्वोत्तम इसे हल करने के लिए सबसे अच्छा तरीका है? मुझे लगता है कि मुझे पहले ऐसा किया जा रहा है जो पहले किया गया है ...
मैं वास्तव में आपकी सहायता की सराहना करता हूं कि मैं सबसे सटीक परिणाम कैसे प्राप्त कर सकता हूं (या समझाता हूं कि मुझे इससे अधिक सटीक परिणाम क्यों नहीं मिल सकते हैं)।
मुझे लगता है कि आप 'लॉग (exp (log_of_a) - exp (log_of_b)) = log (a - b) ', सही है? आपके पास 'ए + बी' है। – Gabe
+1 ओह! अच्छी पकड़। देर हो चुकी है ... – user
फ़्लोटिंग पॉइंट नंबरों की नकारात्मकता सटीक है, इसलिए 'log1p (-x) '' log1p (x) 'के रूप में सटीक है। –