से गोल करने वाली त्रुटियों को खत्म करना मेरी समस्या यह है कि मेरे पास एक मैट्रिक्स है जहां सभी पंक्तियों का योग है, और सभी स्तंभों का योग शून्य है। सभी संख्याओं को x decimals के लिए गोल कर रहे हैं।मैट्रिक्स
फिर मैं पूरे मैट्रिक्स को 0 और 1 (उदाहरण के लिए 1/6) के बीच एक संख्या के साथ गुणा करता हूं और सभी संख्याओं को x दशमलव तक गोल करता हूं। अब मैं यह सुनिश्चित नहीं कर सकता कि पंक्तियों और स्तंभों का योग शून्य होगा। मैं चाहता हूं कि कम से कम संभव समायोजन (या कम से कम बहुत छोटा समायोजन)
क्या कोई एल्गोरिदम मौजूद है जो ऐसी समस्या को ठीक कर सकता है?
उदाहरण (बहुत सरल): मैट्रिक्स:
200 -200 0
400 400 -800
-600 -200 800
round2 ((1/6) * मैट्रिक्स)
33.33 -33.33 0
66.67 66.67 -133.33
-100 -33.33 133.33
मैं सिर्फ पंक्तियों और स्तंभों को जोड़ होता है और परीक्षण के बजाय अगर वे शून्य, परीक्षण करता है, तो निरपेक्ष मूल्य के बराबर योग की एक निश्चित सहिष्णुता से कम है - इस मामले में, शायद 'abs (sum) <= 0.01' – Blazemonger
यह" एल्गोरिदम "प्रश्न नहीं है। आप गोल करके एक समस्या पेश करते हैं और इससे कोई फर्क नहीं पड़ता कि आप इसे कैसे "मरम्मत" करते हैं, आप अन्य मुद्दों को पेश करेंगे, उदाहरण के लिए मैट्रिक्स के भीतर कुछ तत्वों के बीच समरूपता तोड़ना। गणितीय प्रसंस्करण के लिए पूर्ण मूल्य रखते हुए, क्या आप राउंडिंग को केवल "प्रदर्शित" करने के लिए सीमित नहीं कर सकते हैं? आपके पास अभी भी कुछ 'शोर' होगा जो रकम को संभावित रूप से गैर-शून्य बनाते हैं, लेकिन उस मुद्दे को आपको "परिभाषित" शून्य से "कुछ सहिष्णुता से छोटे" के रूप में संभालना चाहिए। –