numpy
Np.linalg के साथ रैखिक बीजगणित
खोज…
टिप्पणियों
संस्करण 1.8 के अनुसार, np.linalg में कई रूटीन मैट्रिसेस के 'स्टैक' पर काम कर सकते हैं। यही है, अगर वे एक साथ ढेर हो गए हैं, तो रूट कई मेट्रिक्स के परिणामों की गणना कर सकते हैं। उदाहरण के लिए, A की व्याख्या यहां दो स्टैक किए गए 3-बाय -3 मैट्रिसेस के रूप में की गई है:
np.random.seed(123)
A = np.random.rand(2,3,3)
b = np.random.rand(2,3)
x = np.linalg.solve(A, b)
print np.dot(A[0,:,:], x[0,:])
# array([ 0.53155137, 0.53182759, 0.63440096])
print b[0,:]
# array([ 0.53155137, 0.53182759, 0.63440096])
आधिकारिक np डॉक्स इसे पैरामीटर विनिर्देशों जैसे a : (..., M, M) array_like माध्यम से निर्दिष्ट करते हैं।
Np.solve के साथ रैखिक प्रणालियों को हल करें
निम्नलिखित तीन समीकरणों पर विचार करें:
x0 + 2 * x1 + x2 = 4
x1 + x2 = 3
x0 + x2 = 5
हम इस प्रणाली को मैट्रिक्स समीकरण A * x = b साथ व्यक्त कर सकते हैं:
A = np.array([[1, 2, 1],
[0, 1, 1],
[1, 0, 1]])
b = np.array([4, 3, 5])
फिर, x हल के लिए np.linalg.solve का उपयोग करें:
x = np.linalg.solve(A, b)
# Out: x = array([ 1.5, -0.5, 3.5])
A वर्ग और पूर्ण-रैंक मैट्रिक्स होना चाहिए: इसकी सभी पंक्तियाँ रैखिक रूप से स्वतंत्र होनी चाहिए। A उल्टा / गैर-एकवचन होना चाहिए (इसका निर्धारण शून्य नहीं है)। उदाहरण के लिए, यदि A की एक पंक्ति A दूसरे की कई है, तो linalg.solve कॉल करना linalg.solve LinAlgError: Singular matrix :
A = np.array([[1, 2, 1],
[2, 4, 2], # Note that this row 2 * the first row
[1, 0, 1]])
b = np.array([4,8,5])
इस तरह के सिस्टम को np.linalg.lstsq हल किया जा सकता है।
Np.linalg.lstsq के साथ एक रेखीय प्रणाली के लिए कम से कम वर्गों का समाधान खोजें
लीस्टर वर्ग अज्ञात की तुलना में अधिक समीकरणों के साथ समस्याओं के लिए एक मानक दृष्टिकोण है, जिसे अतिव्यापी सिस्टम के रूप में भी जाना जाता है।
चार समीकरणों पर विचार करें:
x0 + 2 * x1 + x2 = 4
x0 + x1 + 2 * x2 = 3
2 * x0 + x1 + x2 = 5
x0 + x1 + x2 = 4
हम इसे एक मैट्रिक्स गुणा A * x = b रूप में व्यक्त कर सकते हैं:
A = np.array([[1, 2, 1],
[1,1,2],
[2,1,1],
[1,1,1]])
b = np.array([4,3,5,4])
फिर np.linalg.lstsq साथ हल करें:
x, residuals, rank, s = np.linalg.lstsq(A,b)
x , समाधान है residuals योग, rank मैट्रिक्स रैंक इनपुट के A , और s विलक्षण मूल्यों की A । यदि b में एक से अधिक आयाम हैं, तो lstsq b प्रत्येक कॉलम के अनुरूप सिस्टम को हल करेगा:
A = np.array([[1, 2, 1],
[1,1,2],
[2,1,1],
[1,1,1]])
b = np.array([[4,3,5,4],[1,2,3,4]]).T # transpose to align dimensions
x, residuals, rank, s = np.linalg.lstsq(A,b)
print x # columns of x are solutions corresponding to columns of b
#[[ 2.05263158 1.63157895]
# [ 1.05263158 -0.36842105]
# [ 0.05263158 0.63157895]]
print residuals # also one for each column in b
#[ 0.84210526 5.26315789]
rank और s केवल A पर निर्भर करते हैं, और इस प्रकार ऊपर के समान हैं।