SymPy

2013-03-18 11 views
8

में किसी बिंदु पर फ़ंक्शन का मूल्यांकन करना मैं संशोधित करने के तरीके के रूप में विभिन्न अनुकूलन विधियों को कोड करने का प्रयास कर रहा हूं। मैं किसी दिए गए बिंदु पर एक मनमानी संख्या के चर के साथ फ़ंक्शन का मूल्यांकन करने के लिए SymPy का उपयोग करने में सक्षम होना चाहता हूं, जहां बिंदु के समन्वय किसी सरणी में संग्रहीत होते हैं।SymPy

उदाहरण के लिए, मैं b = [1,2] पर f(x,y) = 3*x**2 - 2*x*y + y**2 + 4*x + 3*y का मूल्यांकन करना चाहता हूं। लेकिन मुझे वास्तव में ऐसा करने का एक सामान्य तरीका पसंद आएगा, जो कि किसी भी प्रकार के चर के साथ एक फ़ंक्शन को संभाल सकता है और उचित लंबाई सरणी के रूप में मूल्यांकन किया जा सकता है, इसलिए sympy.evalf(f, subs = {foo}) वास्तव में बहुत उपयोगी नहीं है।

+0

तुम सिर्फ नक्शे का इस्तेमाल कर सकता(): मक्खी zip के प्रयोग पर एक dict बना सकते हैं? http://docs.python.org/2/library/functions.html#map – Samizdis

+0

http://Whathaveyoutried.com –

+0

SO में आपका स्वागत है! पोस्ट कोड और आपके द्वारा किए गए कार्यों के कुछ विनिर्देशों की यहां अनुशंसा की जाती है, कृपया अक्सर पूछे जाने वाले प्रश्न पढ़ें और उम्मीद है कि आप बेहतर उत्तर प्राप्त कर सकते हैं! – span

उत्तर

4

आप सिम्पी अभिव्यक्ति पेड़ के साथ काम कर रहे हैं, कार्यों में नहीं। किसी भी अभिव्यक्ति पर आप कर सकते हैं:

>>> vars = sorted(expression.free_symbols) 
>>> evaluated = expression.subs(*zip(vars, your_values)) 
+0

बहुत बहुत धन्यवाद - मुझे उन आदेशों पर दस्तावेज़ कहां मिल सकता है? मैं समझ में नहीं आता कि वे बिना समझ के क्रियापद प्रतिलिपि बनाने के बजाय क्या करते हैं! पूरी तरह से –

+1

http://docs.sympy.org। दस्तावेज बेहतर हो सकता है। – Krastanov

1

मैं भी यह करने के लिए आसान होने की उम्मीद है, लेकिन यहां तो एक अच्छी युक्ति है:

आप प्रतीक नाम पता है ('x', 'y', जैसे), तो आपको

fvars = sympy.symbols('x, y') #these probably already exist, use: fvars = [x,y] 

b = [1,2] 
sympy.evalf(f, subs = dict(zip(fvars,b))) 
+2

'मानचित्र (sympy.Symbol, ['x', 'y']) '' प्रतीक (' x, y ') ' – Krastanov

+0

के रूप में लिखा जा सकता है धन्यवाद, @ Krastanov, इसे ठीक किया गया। – askewchan

+0

त्रुटि 'मॉड्यूल' ऑब्जेक्ट कॉल करने योग्य नहीं है ' – Abolfazl

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