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

Python में मैट्रिक्स स्टैक का मूर-पेनरोज़ सूडोइनवर्स निकालें

NumPy का numpy.linalg.pinv() फंक्शन मैट्रिक्स या मैट्रिक्स के स्टैक का मूर-पेनरोज़ सूडोइनवर्स (Moore-Penrose pseudoinverse) निकालता है। यह सिंगुलर वैल्यू डीकंपोजिशन (SVD) का उपयोग करता है और गैर-वर्ग या सिंगुलर मैट्रिक्स के लिए भी काम करता है।

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

numpy.linalg.pinv(a, rcond=1e-15, hermitian=False)
  • a: मैट्रिक्स या मैट्रिक्स का स्टैक (..., M, N) आकार का।
  • rcond: छोटे सिंगुलर मानों के लिए कटऑफ। डिफ़ॉल्ट 1e-15।
  • hermitian: यदि True, मैट्रिक्स हर्मिटियन माना जाता है (तेज़ गणना)।
  • वापसी: सूडोइनवर्स, आकार (..., N, M)।

मूर-पेनरोज़ सूडोइनवर्स के गुण

मैट्रिक्स A के लिए सूडोइनवर्स A⁺ निम्न शर्तें पूरी करता है:

  1. A A⁺ A = A
  2. A⁺ A A⁺ = A⁺
  3. (A A⁺)ᴴ = A A⁺ (हर्मिटियन)
  4. (A⁺ A)ᴴ = A⁺ A (हर्मिटियन)

उदाहरण: 3 मैट्रिक्स का स्टैक

import numpy as np

# 3 मैट्रिक्स का स्टैक: आकार (3, 2, 2)
arr = np.array([
    [[1, 2], [3, 4]],   # मैट्रिक्स 1
    [[1, 2], [2, 1]],   # मैट्रिक्स 2
    [[1, 3], [3, 1]]    # मैट्रिक्स 3
])

print("मूल स्टैक आकार:", arr.shape)
print("मैट्रिक्स 1:\n", arr[0])
print("मैट्रिक्स 2:\n", arr[1])
print("मैट्रिक्स 3:\n", arr[2])

# स्टैक का सूडोइनवर्स
pinv_stack = np.linalg.pinv(arr)
print("\nसूडोइनवर्स स्टैक आकार:", pinv_stack.shape)
print("सूडोइनवर्स 1:\n", pinv_stack[0])
print("सूडोइनवर्स 2:\n", pinv_stack[1])
print("सूडोइनवर्स 3:\n", pinv_stack[2])

आउटपुट

मूल स्टैक आकार: (3, 2, 2)
मैट्रिक्स 1:
 [[1 2]
 [3 4]]
मैट्रिक्स 2:
 [[1 2]
 [2 1]]
मैट्रिक्स 3:
 [[1 3]
 [3 1]]

सूडोइनवर्स स्टैक आकार: (3, 2, 2)
सूडोइनवर्स 1:
 [[-2.   1. ]
 [ 1.5 -0.5]]
सूडोइनवर्स 2:
 [[-0.33333333  0.66666667]
 [ 0.66666667 -0.33333333]]
सूडोइनवर्स 3:
 [[-0.125  0.375]
 [ 0.375 -0.125]]

सत्यापन

# प्रत्येक मैट्रिक्स के लिए A @ A⁺ @ A ≈ A जांचें
for i in range(3):
    A = arr[i]
    A_pinv = pinv_stack[i]
    check = A @ A_pinv @ A
    print(f"मैट्रिक्स {i+1}: A @ A⁺ @ A ≈ A ? {np.allclose(check, A)}")

pinv बनाम inv

rcond पैरामीटर

# छोटे सिंगुलर मानों को शून्य मानने के लिए थ्रेशोल्ड
A = np.array([[1, 2], [2, 4]])  # रैंक 1 मैट्रिक्स
print("डिफ़ॉल्ट rcond:", np.linalg.pinv(A))
print("rcond=1e-10:", np.linalg.pinv(A, rcond=1e-10))
print("rcond=0.1:", np.linalg.pinv(A, rcond=0.1))  # अधिक आक्रामक

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

  • ओवरडिटरमाइंड सिस्टम (लीस्ट स्क्वेयर्स समाधान)।
  • अंडरडिटरमाइंड सिस्टम (न्यूनतम नॉर्म समाधान)।
  • सिंगुलर या खराब कंडीशन वाले मैट्रिक्स।
  • मशीन लर्निंग में रिज रिग्रेशन।
  • कंप्यूटर विजन में होमोग्राफी अनुमान।
  1. - पायथन में सरणी का डिटरमिनेंट निकालना

    रैखिक बीजगणित में सरणी का डिटरमिनेंट निकालने के लिए, पायथन NumPy में np.linalg.det() का उपयोग करें। पहला पैरामीटर a वह इनपुट सरणी है जिसके लिए डिटरमिनेंट की गणना की जाती है। यह विधि डिटरमिनेंट लौटाती है। चरण सबसे पहले, आवश्यक लाइब्रेरी आयात करें: import numpy as np एक सरणी बनाएं: arr = np.array([[

  1. - पायथन में जटिल हर्मिटियन या वास्तविक सममित मैट्रिक्स के आइगेनवैल्यू निकालना

    जटिल हर्मिटियन या वास्तविक सममित मैट्रिक्स के आइगेनवैल्यू निकालने के लिए, numpy.eigvalsh() विधि का उपयोग करें। यह विधि आइगेनवैल्यू को आरोही क्रम में लौटाती है, प्रत्येक को उसकी बहुलता के अनुसार दोहराया जाता है। पहला पैरामीटर a एक जटिल-या वास्तविक-मूल्य मैट्रिक्स है जिसके आइगेनवैल्यू की गणना की जानी

  1. - पायथन में ऐरे एलिमेंट्स का हाइपरबोलिक टैंजेंट निकालें

    पायथन नम्पी में ऐरे एलिमेंट्स का हाइपरबोलिक टैंजेंट निकालने के लिए numpy.tanh() मेथड का उपयोग करें। यह मेथड np.sinh(x)/np.cosh(x) या -1j * np.tan(1j*x) के बराबर है। संबंधित हाइपरबोलिक टैंजेंट मान लौटाता है। यदि x स्केलर है तो यह स्केलर होता है। पहला पैरामीटर x इनपुट ऐरे है। दूसरा और तीसरा पैरामीटर

© कॉपीराइट https://in.wsxdn.com सर्वाधिकार सुरक्षित
विशेषताinv()pinv()
आवश्यकतावर्ग, नॉन-सिंगुलरकोई भी आकार, सिंगुलर भी
विधिLU डीकंपोजिशनSVD
गतितेज़धीमी
आउटपुट आकार(N, N)(N, M)