विभिन्न चीजों के लिए गणित कार्यों को कार्यान्वित करना काफी आसान है। int mul(int,int);
, int pow(int,int);
, यहां तक कि double div(float,float);
करना आसान है और लूप या रिकर्सन के साथ कार्यान्वित किया जा सकता है। (ये वही विधियां हैं जो इन कार्यों को हाथ से या सिर में करने के लिए उपयोग की जाती हैं।) गुणा करने के लिए, बार-बार संख्या को जोड़ दें। विभाजित करने के लिए, इसे बार-बार घटाएं। शक्ति प्राप्त करने के लिए, बार-बार गुणा करें। और इसी तरह।रूट-गणना फ़ंक्शन लागू करना
एक गणितीय फ़ंक्शन जिसे मैंने हमेशा के बारे में सोचा है, वह जड़ों है। उदाहरण के लिए, आप किसी संख्या (यानी double root(float num, float root);
) के वर्ग (या घन, आदि) रूट की गणना करने के लिए फ़ंक्शन कैसे लिखेंगे? मैंने चारों ओर देखने की कोशिश की और ऐसा करने के लिए एल्गोरिदम या विधि नहीं मिली।
जब मैं हाथ से रूट की गणना करने की कोशिश करता हूं, तो मैं आम तौर पर अनुमान विधि का उपयोग करता हूं (अनुमानित संख्या से शुरू होता हूं, एक अंश जोड़ता हूं, गुणा करता हूं, देखता हूं कि यह कितना दूर है, एक छोटा अंश जोड़ें, गुणा करें, फिर से जांचें, और संतुष्ट होने तक दोहराना)। मुझे लगता है कि काम कर सकता है, लेकिन निश्चित रूप से एक बेहतर और तेज़-विधि है (इस पर ध्यान दिए बिना कि कंप्यूटर कितनी तेजी से हाथ से कर सकता है)।
स्पष्ट रूप से LUT प्रासंगिक नहीं हैं क्योंकि इसे किसी भी ऑपरेंड लेने के लिए पर्याप्त सामान्य होना होगा (जब तक कि आप डेटा के सीमित सेट के साथ गेम नहीं लिख रहे हों)। Wikipedia article अनुमान विधि का उल्लेख करता है और कुछ प्राचीन लोगों को सूचीबद्ध करता है (कंप्यूटरों का आविष्कार करने से बहुत पहले) साथ ही कुछ शुद्ध गणित और यहां तक कि गणित विधियों (जिनमें से कुछ "घटक के रूप में" अनंतता "है)। इलेक्ट्रॉनिक्स के साथ ट्रिक या लॉजिरिथम का उपयोग करने वाले कुछ भी ऐसा लगता है। (और यह सिर्फ वर्ग-जड़ के लिए है, अकेले घन-जड़ें, और ऐसे।)
क्या कोई आसान रूट गणना विधि नहीं है? कैलकुलेटर यह कैसे करते हैं? कंप्यूटर यह कैसे करते हैं? (नहीं, बस double pow(a,0.5);
काम नहीं करेगा क्योंकि double pow(float,float)
लागू किया जाएगा?)
क्या मैं बस गलत कार्यों के साथ रूट फ़ंक्शंस को गलत तरीके से समूहीकृत कर रहा हूं? क्या वे प्रतीत होने से अधिक जटिल हैं?
हां, बार-बार जोड़ों के माध्यम से गुणा या विभाजित न करें। यह बहुत धूलदार है, लेकिन http://moneybender.com/transactor_article.pdf। –