2015-11-19 11 views
5

मैं पाइथन (शायद सिम्पी) पुस्तकालयों के साथ x * max(x,15) = 10 जैसे समीकरण को कैसे हल कर सकता हूं?
max() का मतलब दो तर्कों के बीच अधिकतम है।
मेरे समीकरणों का एक और जटिल रूप है, लेकिन मैं इसे सरल रूप में हल करना चाहता हूं।पायथन समीकरण सॉल्वर (अधिकतम और न्यूनतम)

उत्तर

4

ऐसा लगता है कि SymPy इस समीकरण को हल कर सकते हैं जैसा कि आप किसी Piecewise को Max परिवर्तित।

In [4]: solve(x*Piecewise((x, x >=15), (15, x < 15)) - 10, x) 
Out[4]: [2/3] 
+0

@RomaKarageorgievich जैसा कि आप देख सकते हैं, मल्टीलाइन कोड एक टिप्पणी में इतना अच्छा काम नहीं करता है। क्या आप इसे शामिल करने के लिए अपना प्रश्न संपादित कर सकते हैं, और आपको जो त्रुटि मिल रही है? – asmeurer

+0

http://stackoverflow.com/questions/33878749/python-big-piecewise-equation –

+0

क्या आप सिम्पी के बिना इस समीकरण को हल करने के लिए अन्य विधि जानते हैं? शायद numpy या scipy के साथ? –

-1

आपके समीकरण का कोई जवाब नहीं है। आप x=3 असाइन कर रहे हैं, इसलिए हल करने के लिए कोई चर नहीं है।

x 
3 

Max(x, 15) 
15 

solve(x*Max(x, 15)-10, x) #No variable here 
[] 

हो सकता है, यदि आप ऐसा करने का मतलब: y*Max(x, 15) = 10

तो यह एक वैध सवाल बन जाता है।

In [1]: solve(y*Max(x, 15)-10, y) 
Out[1]: [2/3] 
+0

मुझे इस समीकरण का उत्तर क्यों नहीं मिला? रूट x = 10/15 है। मुझे इसे चयन संख्याओं से मिला है। लेकिन मुझे नहीं पता कि मैं पाइथन का उपयोग करके इसे कैसे हल कर सकता हूं। –

+0

ऐसा इसलिए है क्योंकि 'x' को मान 3 असाइन किया गया है। इसलिए,' x * अधिकतम (x, 15) -10' एक स्केलर मान है, इसके लिए हल करने के लिए कोई चर नहीं है। –

+0

@RomaKarageorgievich, मैंने जवाब संपादित किया है। –

1

जब मैं sympy.solve में अपना समीकरण प्लग, यह NotImplementedError देता है, जिसका अर्थ है एल्गोरिदम हल करने के लिए इसे लागू नहीं कर रहे हैं (मैं इस के लिए https://github.com/sympy/sympy/issues/10158 खोला)।

मैं इस तरह के समीकरणों को हल करने लगता है, तो आप प्रत्येक Max या Min अपने तर्कों के साथ समाधान जहां Max या Min वास्तव में अधिक से अधिक या उसके तर्क में कम से कम नहीं था बदलने के लिए और हर यात्रा का समाधान, और उसके बाद हटाने की आवश्यकता होगी।

मैं आपको या किसी अन्य उत्तरदाता को पूर्ण एल्गोरिदम छोड़ दूंगा (या उम्मीद है कि कोई इसे SymPy में लागू करेगा)। कुछ उपयोगी टिप्स:

  • expr.atoms(Max, Min)expr से Max और Min के सभी उदाहरणों निकाल देंगे।

  • expr.subs(old, new)old के साथ new के साथ expr में एक नई अभिव्यक्ति वापस कर देगा।

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