के बहुत करीब संख्याओं की जांच और संभाल कैसे करूं, मेरे पास कुछ गणित (सी ++ में) है जो लगता है कि कुछ बहुत छोटे, शून्य के करीब, संख्याएं (मुझे संदेह है कि ट्रिग फ़ंक्शन कॉल मेरी वास्तविक समस्या है) लेकिन मैं इन मामलों का पता लगाना चाहता हूं ताकि मैं उन्हें अधिक विस्तार से पढ़ सकूं।मैं शून्य
मैं वर्तमान में निम्नलिखित का प्रयास कर रहा हूं, क्या यह सही है?
if (std::abs(x) < DBL_MIN) {
log_debug("detected small num, %Le, %Le", x, y);
}
दूसरा, गणित की प्रकृति प्रकृति में त्रिकोणमितीय, परिवर्तनों किस तरह मैं गणितीय त्रुटियों से बचने के लिए कर सकते हैं (उर्फ आदि रेडियन/डिग्री रूपांतरण का एक बहुत और sin
/cos
/tan
कॉल, का उपयोग) है ?
स्पष्ट रूप से गुणाओं के लिए मैं log transform का उपयोग कर सकता हूं - और क्या?
क्या हम गणित के उदाहरण को देख सकते हैं, ताकि हम कुछ सुरुचिपूर्ण तैयार कर सकें? मेरे दिमाग में जो कुछ है वह 'cos x - 1' जैसी चीजें हैं जब आप शून्य के आसपास धीरे-धीरे परिणाम बदल सकते हैं, और सावधानीपूर्वक सहिष्णुता का चयन करना होगा। –
परिवर्तनों के लिए अंडरफ्लो से बचने के लिए, सबसे प्रत्यक्ष एक टेलर को आपके अभिव्यक्तियों का विस्तार करना है और छोटे तर्कों के लिए क्या आता है इसका उपयोग करना है। उदाहरण के लिए, '1-cos (x)' के बजाय 'x * x/2' का उपयोग 'x' के लिए कुछ कटऑफ से छोटा है। –