Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

Python में SVD से रैंक-डेफिसिट मैट्रिक्स की रैंक निकालें

NumPy का numpy.linalg.matrix_rank() फंक्शन सिंगुलर वैल्यू डीकंपोजिशन (SVD) का उपयोग करके मैट्रिक्स की रैंक निकालता है। रैंक उन सिंगुलर मानों की संख्या है जो थ्रेशोल्ड tol

सिंटैक्स और पैरामीटर्स

numpy.linalg.matrix_rank(A, tol=None, hermitian=False)
  • A: इनपुट मैट्रिक्स या मैट्रिक्स स्टैक (..., M, N)।
  • tol: थ्रेशोल्ड; इससे कम सिंगुलर मान शून्य माने जाते हैं। डिफ़ॉल्ट: S.max() * max(M, N) * eps।
  • hermitian: यदि True, मैट्रिक्स हर्मिटियन माना जाता है (तेज़ SVD)।
  • वापसी: रैंक (इंट या ऐरे स्टैक के लिए)।

उदाहरण: रैंक-डेफिसिट मैट्रिक्स

import numpy as np
from numpy.linalg import matrix_rank

# 5x5 आइडेंटिटी मैट्रिक्स (फुल रैंक = 5)
arr = np.eye(5)

print("मूल ऐरे (आइडेंटिटी 5x5):\n", arr)
print("\nडायमेंशन्स:", arr.ndim)
print("डेटा टाइप:", arr.dtype)
print("आकार:", arr.shape)

# फुल रैंक
rank_full = matrix_rank(arr)
print("\nफुल रैंक:", rank_full)

# रैंक-डेफिसिट बनाएं: अंतिम विकर्ण एलिमेंट को 0 करें
arr[-1, -1] = 0.
print("\nअपडेटेड ऐरे (अंतिम विकर्ण 0):\n", arr)

# रैंक-डेफिसिट रैंक
rank_deficit = matrix_rank(arr)
print("\nरैंक-डेफिसिट रैंक:", rank_deficit)

आउटपुट

मूल ऐरे (आइडेंटिटी 5x5):
 [[1. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]]
डायमेंशन्स: 2
डेटा टाइप: float64
आकार: (5, 5)
फुल रैंक: 5
रैंक-डेफिसिट रैंक: 4

SVD और रैंक

मैट्रिक्स A का SVD: A = U Σ Vᴴ
जहां Σ विकर्ण मैट्रिक्स है जिसमें सिंगुलर मान σ₁ ≥ σ₂ ≥ ... ≥ σᵣ > 0 हैं।
रैंक = गैर-शून्य सिंगुलर मानों की संख्या (थ्रेशोल्ड tol से ऊपर)।

टॉलरेंस (tol) का प्रभाव


# खराब कंडीशन वाला मैट्रिक्स
A = np.array([[1, 1], [1, 1.0000001]])

print("डिफ़ॉल्ट tol:", np.linalg.matrix_rank(A))
print("tol=1e-10:", np.linalg.matrix_rank(A, tol=1e-10))
print("tol=1e-5:", np.linalg.matrix_rank(A, tol=1e-5))
print("tol=0.1:", np.linalg.matrix_rank(A, tol=0.1))

सिंगुलर मान देखें


A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])  # रैंक 2
U, s, Vh = np.linalg.svd(A)
print("सिंगुलर मान:", s)
print("रैंक (डिफ़ॉल्ट):", np.linalg.matrix_rank(A))
print("रैंक (tol=1e-10):", np.linalg.matrix_rank(A, tol=1e-10))

स्टैक के लिए रैंक


# मैट्रिक्स स्टैक
stack = np.array([
    [[1, 0], [0, 1]],      # रैंक 2
    [[1, 2], [2, 4]],      # रैंक 1
    [[0, 0], [0, 0]]       # रैंक 0
])
ranks = np.linalg.matrix_rank(stack)
print("स्टैक रैंक्स:", ranks)  # [2 1 0]

उपयोग के मामले

  • रैखिक सिस्टम की हल करने योग्यता जांचना।
  • PCA में मुख्य घटकों की संख्या निर्धारित करना।
  • कंट्रोल थ्योरी में कंट्रोलेबिलिटी/ऑब्जर्वेबिलिटी।
  • कम्प्रेस्ड सेंसिंग में स्पार्सिटी माप।
  • न्यूरल नेटवर्क वेट मैट्रिक्स विश्लेषण।

नोट

डिफ़ॉल्ट tol मशीन प्रिसिजन पर आधारित होता है। विशिष्ट अनुप्रयोगों के लिए (जैसे संख्यात्मक शोर वाला डेटा), डोमेन ज्ञान के आधार पर कस्टम tol सेट करें।

  1. - Python में map() फ़ंक्शन का उपयोग करके 2D सरणी का योग

    इस ट्यूटोरियल में, हम Python में map फ़ंक्शन का उपयोग करके 2D सरणी का योग ढूंढने जा रहे हैं। map फ़ंक्शन दो तर्क लेता है यानी function और iterable। यह इटरेटेबल के प्रत्येक तत्व को फ़ंक्शन में पास करता है और परिणाम को map ऑब्जेक्ट में संग्रहीत करता है। हम map ऑब्जेक्ट को एक इटरेटेबल में बदल सकते हैं।

  1. - पायथन में 2D मैट्रिक्स II में खोजें

    मान लीजिए हमारे पास एक m x n मैट्रिक्स है। हमें उस मैट्रिक्स में एक वैल्यू खोजने के लिए एक कुशल एल्गोरिदम लिखना है। इस मैट्रिक्स में निम्न गुण हैं - प्रत्येक पंक्ति में पूर्णांक बाएं से दाएं आरोही क्रम में सॉर्टेड हैं। प्रत्येक कॉलम में पूर्णांक ऊपर से नीचे आरोही क्रम में सॉर्टेड हैं। इसलिए यदि मै

  1. - पायथन का उपयोग करके मैथमेटिकल फ़ंक्शन्स

    पायथन में निम्नलिखित फ़ंक्शन्स शामिल हैं जो मैथमेटिकल गणना करते हैं। क्र.सं. फ़ंक्शन और रिटर्न्स (विवरण) 1 abs(x)x का निरपेक्ष मान: x और शून्य के बीच की (पॉजिटिव) दूरी। 2 ceil(x)x की सीलिंग: x से कम नहीं सबसे छोटा इंटीजर। 3 cmp(x, y)-1 यदि x y। 4 exp(x)x का एक्सपोनेंशियल: e^x। 5 fa