मैं प्रोलॉग और हास्केल द्वारा आंशिक रूप से प्रेरित एक वेब-आधारित प्रोग्रामिंग भाषा बना रहा हूं (हंसो मत)।वोल्फ्राम अल्फा या गणित जैसी प्रणाली कैसे समीकरण हल करती है?
इसमें पहले से ही कार्यक्षमता है, आप http://www.lastcalc.com/ पर प्रोटोटाइप देख सकते हैं। आप स्रोत here देख सकते हैं और आर्किटेक्चर here के बारे में पढ़ सकते हैं। याद रखें यह एक प्रोटोटाइप है।
वर्तमान में LastCalc अभिव्यक्तियों को सरल या समीकरणों को हल नहीं कर सकता है। जावा में इसे कड़ी-कोडिंग करने की बजाय, मैं मौलिक भाषा को बढ़ाना चाहता हूं जैसे कि इन चीजों को कुछ भी नहीं बल्कि भाषा (प्रोलॉग के साथ) का उपयोग करके इन चीजों को करने के लिए बढ़ाया जा सकता है। प्रोलॉग के विपरीत, लास्टकैल्क के पास एक और अधिक शक्तिशाली खोज एल्गोरिदम है, प्रोलॉग "बैकट्रैकिंग के साथ गहराई से पहली खोज" है, लास्टकैल्क वर्तमान में एक ह्यूरिस्टिक सर्वश्रेष्ठ-पहली खोज का उपयोग करता है।
इससे पहले कि मैं इस समस्या को हल करता हूं, इस बारे में और अधिक समझना चाहता हूं कि अन्य सिस्टम इस समस्या को कैसे हल करते हैं, खासकर मैथमैटिका/वोल्फ्राम अल्फा।
मुझे लगता है कि कम से कम सामान्य मामले में, यह विचार है कि आप सिस्टम को समीकरणों (जैसे a*(b+c) = a*b + a+c
) में हेरफेर के लिए नियमों का एक गुच्छा देते हैं (जैसे। वेरिएबल एक्स को अलग करें) और फिर इसे ढीला करें।
तो, मेरे सवाल कर रहे हैं:
- मेरी धारणा सही है?
- नियम लागू करने के लिए खोज रणनीति क्या है? जैसे। गहराई पहले, चौड़ाई पहले, गहराई से गहराई से पहले गहराई, किसी तरह का सबसे अच्छा पहले?
- यदि यह "सबसे अच्छा पहला" है, तो यह निर्धारित करने के लिए क्या हेरिस्टिक का उपयोग किया जाता है कि यह संभव है कि किसी विशेष नियम एप्लिकेशन ने हमें अपने लक्ष्य के करीब ले लिया हो?
मैं किसी भी अन्य सलाह की सराहना करता हूं ("छोड़ देना" को छोड़कर - मैं नियमित रूप से उस सलाह के टुकड़े को अनदेखा करता हूं और ऐसा करने से मुझे अच्छी तरह से सेवा मिली है;)।
कृपया लोग, व्यापक नहीं इस के रूप में बहुत करीब ... एर, दूसरे के चारों ओर जिस तरह से करते हैं। यह दिलचस्प और उत्तरदायी है - और वैसे भी, उनमें से कुछ "gimme teh codez" या "क्यों करता है" foo "[0] = 'b'; 'segfault?" प्रश्न, आपका सीवी वहां एक बेहतर उद्देश्य प्रदान करेगा। –
क्या आप समीकरणों को हल करने, या पार्सिंग अभिव्यक्तियों को हल करने के बारे में पूछ रहे हैं? "150sin (x) -gamma (x) = 0" एक बात है, "पार्स (((((x + 1) -1) +1) -सिन (x) -1))" एक और बात है, हालांकि पहले दूसरा शामिल हो सकता है। – hexafraction
अच्छा सवाल। LastCalc यह सब कुछ करता है कि यह सब कुछ करता है, चाहे पार्सिंग, इकाई रूपांतरण कर रहा है, या (जल्द ही) अभिव्यक्ति को सरल बनाना और समीकरणों को हल करना, केवल परिवर्तनों की एक श्रृंखला है - प्रारंभिक बिंदु टोकन की एक सूची है। हालांकि, पार्सिंग एक चुनौती नहीं है, इसलिए कृपया हल करने पर ध्यान केंद्रित करें, पार्सिंग नहीं। – sanity