2015-07-21 9 views
7

क्षमा करें, मैं सामान्य रूप से sympy और पायथन के लिए काफी नया हूँ।मैं सिम्पी में रैखिक समीकरणों की प्रणाली को कैसे हल कर सकता हूं?

मैं समीकरणों के निम्नलिखित underdetermined रेखीय प्रणाली को हल करना चाहते:

x + y + z = 1 
x + y + 2z = 3 
+1

क्या आप अब तक की कोशिश की है ? आपके शोध प्रयासों ने क्या हासिल किया है? एक वेबसार्च कई उदाहरण पेश करता प्रतीत होता है। कृपया मुझे बताएं कि आप दस्तावेज़ीकरण पढ़ते हैं और पूछने से पहले खोजे जाते हैं। –

+0

मैंने यह कोशिश की: resol_linear_system (एम, (एक्स, वाई, जेड)), जहां एम = मैट्रिक्स (((1, 1, 1, - 1), (1, 1, 2, - 3))), यह दिया गया मुझे एक इंडेक्स त्रुटि। –

उत्तर

12

SymPy हाल ही में एक नया रैखिक प्रणाली solver मिला: sympy.solvers.solveset में linsolve, तो आप उपयोग कर सकते हैं कि इस प्रकार है:

In [38]: from sympy import * 

In [39]: from sympy.solvers.solveset import linsolve 

In [40]: x, y, z = symbols('x, y, z') 

समीकरणों की सूची फॉर्म:

In [41]: linsolve([x + y + z - 1, x + y + 2*z - 3 ], (x, y, z)) 
Out[41]: {(-y - 1, y, 2)} 

संवर्धित मैट्रिक्स प्रपत्र:

In [59]: linsolve(Matrix(([1, 1, 1, 1], [1, 1, 2, 3])), (x, y, z)) 
Out[59]: {(-y - 1, y, 2)} 

ए * एक्स = ख फार्म

In [59]: M = Matrix(((1, 1, 1, 1), (1, 1, 2, 3))) 

In [60]: system = A, b = M[:, :-1], M[:, -1] 

In [61]: linsolve(system, x, y, z) 
Out[61]: {(-y - 1, y, 2)} 

नोट: समाधान के आदेश दिए गए प्रतीकों में से आदेश मेल खाती है।

+2

यह ध्यान दिया जाना चाहिए कि लिन्सोलव अभी तक किसी भी रिलीज में उपलब्ध नहीं है। वर्तमान में केवल विकास संस्करण के माध्यम से सुलभ। –

+0

धन्यवाद! मैंने इसे गिट रेपो से इस्तेमाल किया! :) –

+0

मैं sympy 0.7 का उपयोग कर रहा हूँ।6, सबसे पहले मैं लिन्सोलव नहीं मिला, इसलिए हल किया गया, दूसरा अग्रेषित मैट्रिक्स और एक्स = बी फॉर्म ईएमपीटीई सूची [] उत्तर देता है, केवल पहली विधि उपरोक्त की तरह समाधान देती है, हम इसे कैसे ठीक कर सकते हैं? –

1

आप (एक underdetermined प्रणाली इस मामले में लेकिन हम solve_linear_system उपयोग कर सकते हैं) मैट्रिक्स प्रपत्र Ax=b में हल कर सकते हैं:

from sympy import Matrix, solve_linear_system 

x, y, z = symbols('x, y, z') 
A = Matrix(((1, 1, 1, 1), (1, 1, 2, 3))) 
solve_linear_system(A, x, y, z) 

{x: -y - 1, z: 2} 

या के रूप में फिर से लिखने (मेरे संपादन, sympy नहीं):

[x]= [-1] [-1] 
[y]= y[1] + [0] 
[z]= [0] [2] 

वर्ग A के मामले में हम b परिभाषित कर सकते हैं और A.LUsolve(b) का उपयोग कर सकते हैं।

3

@ एएमआईटी कुमार और @ स्कॉट द्वारा दिए गए महान उत्तरों के अलावा, सिम्पी 1.0 ने और भी कार्यक्षमताओं को जोड़ा है। समीकरणों की अंतर्निहित रैखिक प्रणाली के लिए, मैंने नीचे कोशिश की और इसे sympy.solvers.solveset में गहराई से बिना काम करने के लिए प्राप्त किया। ऐसा कहा जा रहा है, अगर जिज्ञासा आपको ले जाती है तो वहां जाएं।

from sympy import * 
x, y, z = symbols('x, y, z') 
eq1 = x + y + z 
eq2 = x + y + 2*z 
solve([eq1-1, eq2-3], (x, y,z)) 

जो मुझे {z: 2, x: -y - 1} देता है। फिर से, महान पैकेज, SymPy डेवलपर्स!

0

मैट्रिक्स रेखीय प्रणाली समीकरणों पर एक और उदाहरण देता है कि हम इस प्रणाली के लिए हल करते है मान:

enter image description here

SymPy में हम जैसे कुछ कर सकता है:

>>> import sympy as sy 
... sy.init_printing() 

>>> a, b, c, d = sy.symbols('a b c d') 
... A = sy.Matrix([[a-b, b+c],[3*d + c, 2*a - 4*d]]) 
... A 

⎡ a - b  b + c ⎤ 
⎢     ⎥ 
⎣c + 3⋅d 2⋅a - 4⋅d⎦ 


>>> B = sy.Matrix([[8, 1],[7, 6]]) 
... B 

⎡8 1⎤ 
⎢ ⎥ 
⎣7 6⎦ 


>>> A - B 

⎡ a - b - 8  b + c - 1 ⎤ 
⎢       ⎥ 
⎣c + 3⋅d - 7 2⋅a - 4⋅d - 6⎦ 


>>> sy.solve(A - B, (a, b, c, d)) 
{a: 5, b: -3, c: 4, d: 1} 
संबंधित मुद्दे