19

मैं प्रोलॉग और हास्केल द्वारा आंशिक रूप से प्रेरित एक वेब-आधारित प्रोग्रामिंग भाषा बना रहा हूं (हंसो मत)।वोल्फ्राम अल्फा या गणित जैसी प्रणाली कैसे समीकरण हल करती है?

इसमें पहले से ही कार्यक्षमता है, आप http://www.lastcalc.com/ पर प्रोटोटाइप देख सकते हैं। आप स्रोत here देख सकते हैं और आर्किटेक्चर here के बारे में पढ़ सकते हैं। याद रखें यह एक प्रोटोटाइप है।

वर्तमान में LastCalc अभिव्यक्तियों को सरल या समीकरणों को हल नहीं कर सकता है। जावा में इसे कड़ी-कोडिंग करने की बजाय, मैं मौलिक भाषा को बढ़ाना चाहता हूं जैसे कि इन चीजों को कुछ भी नहीं बल्कि भाषा (प्रोलॉग के साथ) का उपयोग करके इन चीजों को करने के लिए बढ़ाया जा सकता है। प्रोलॉग के विपरीत, लास्टकैल्क के पास एक और अधिक शक्तिशाली खोज एल्गोरिदम है, प्रोलॉग "बैकट्रैकिंग के साथ गहराई से पहली खोज" है, लास्टकैल्क वर्तमान में एक ह्यूरिस्टिक सर्वश्रेष्ठ-पहली खोज का उपयोग करता है।

इससे पहले कि मैं इस समस्या को हल करता हूं, इस बारे में और अधिक समझना चाहता हूं कि अन्य सिस्टम इस समस्या को कैसे हल करते हैं, खासकर मैथमैटिका/वोल्फ्राम अल्फा।

मुझे लगता है कि कम से कम सामान्य मामले में, यह विचार है कि आप सिस्टम को समीकरणों (जैसे a*(b+c) = a*b + a+c) में हेरफेर के लिए नियमों का एक गुच्छा देते हैं (जैसे। वेरिएबल एक्स को अलग करें) और फिर इसे ढीला करें।

तो, मेरे सवाल कर रहे हैं:

  • मेरी धारणा सही है?
  • नियम लागू करने के लिए खोज रणनीति क्या है? जैसे। गहराई पहले, चौड़ाई पहले, गहराई से गहराई से पहले गहराई, किसी तरह का सबसे अच्छा पहले?
  • यदि यह "सबसे अच्छा पहला" है, तो यह निर्धारित करने के लिए क्या हेरिस्टिक का उपयोग किया जाता है कि यह संभव है कि किसी विशेष नियम एप्लिकेशन ने हमें अपने लक्ष्य के करीब ले लिया हो?

मैं किसी भी अन्य सलाह की सराहना करता हूं ("छोड़ देना" को छोड़कर - मैं नियमित रूप से उस सलाह के टुकड़े को अनदेखा करता हूं और ऐसा करने से मुझे अच्छी तरह से सेवा मिली है;)।

+9

कृपया लोग, व्यापक नहीं इस के रूप में बहुत करीब ... एर, दूसरे के चारों ओर जिस तरह से करते हैं। यह दिलचस्प और उत्तरदायी है - और वैसे भी, उनमें से कुछ "gimme teh codez" या "क्यों करता है" foo "[0] = 'b'; 'segfault?" प्रश्न, आपका सीवी वहां एक बेहतर उद्देश्य प्रदान करेगा। –

+0

क्या आप समीकरणों को हल करने, या पार्सिंग अभिव्यक्तियों को हल करने के बारे में पूछ रहे हैं? "150sin (x) -gamma (x) = 0" एक बात है, "पार्स (((((x + 1) -1) +1) -सिन (x) -1))" एक और बात है, हालांकि पहले दूसरा शामिल हो सकता है। – hexafraction

+0

अच्छा सवाल। LastCalc यह सब कुछ करता है कि यह सब कुछ करता है, चाहे पार्सिंग, इकाई रूपांतरण कर रहा है, या (जल्द ही) अभिव्यक्ति को सरल बनाना और समीकरणों को हल करना, केवल परिवर्तनों की एक श्रृंखला है - प्रारंभिक बिंदु टोकन की एक सूची है। हालांकि, पार्सिंग एक चुनौती नहीं है, इसलिए कृपया हल करने पर ध्यान केंद्रित करें, पार्सिंग नहीं। – sanity

उत्तर

10

मैंने कुछ समय पहले इस तरह के प्रश्नों का सामना किया था। मैंने अभिव्यक्ति के सरलीकरण के बारे में this document पाया। यह शीर्षक का नियम-आधारित सरलीकरण है और मुपद में सरलीकरण के बारे में कुछ विवरण दिखाता है, जो बाद में मैटलैब का हिस्सा बन गया।

इस दस्तावेज़ के अनुसार, आपकी धारणा सही है। अभिव्यक्तियों में हेरफेर के लिए नियमों का एक सेट है। सरलीकरण के लिए एक लक्ष्य कार्य के रूप में एक ह्युरिस्टिक गुणवत्ता मीट्रिक का उपयोग किया जाता है।

+0

बहुत उपयोगी, धन्यवाद। दुर्भाग्य से यह अपेक्षाकृत कम या कम है, या शायद वह भाग्यशाली है, मुझे यकीन नहीं है :-) – sanity

+0

नहीं मिला :(क्या आप जानते हैं कि वर्तमान लिंक कहां हो सकता है? – Uzebeckatrente

2

Wolfram अल्फा

  • mathematica स्टीफन wolphram के दिमाग की उपज है मेथेमेटिका

    द्वारा विकसित की है। गणित 1.0 को 1 9 88 में रिलीज़ किया गया था। गणित मैपल की तरह बहुत अधिक है और वे दोनों लापैक जैसे पुराने सॉफ्टवेयर पुस्तकालयों पर भारी निर्भर हैं।
  • पुस्तकालय जो इन कार्यक्रमों पर आधारित हैं, और अक्सर, विरासत सॉफ्टवेयर पर आधारित हैं। वे बहुत लंबे समय तक आसपास रहे हैं, और संशोधित हैं।

यदि आप पृष्ठभूमि कार्यक्रमों के बारे में जानना चाहते हैं, ऋषिनाथ एक मुक्त मुक्त स्रोत विकल्प है; आप संभव रिवर्स आपके प्रश्नों के समाधान इंजीनियर सकता है:

SageMath.org

संबंधित मुद्दे