विवरण
numpy.linalg.slogdet() फंक्शन एक वर्ग मैट्रिक्स के निर्धारक का चिह्न (sign) और प्राकृतिक लघुगणक (natural logarithm) गणना करता है। यह संख्यात्मक स्थिरता के लिए उपयोगी है जब निर्धारक बहुत बड़ा या बहुत छोटा हो सकता है (ओवरफ्लो/अंडरफ्लो से बचने के लिए)।
पैरामीटर्स
a- इनपुट ऐरे, वर्ग 2-D मैट्रिक्स होना चाहिए(M, M)।
रिटर्न मान
sign- निर्धारक का चिह्न। वास्तविक मैट्रिक्स के लिए: 1, 0, या -1। कॉम्प्लेक्स के लिए: निरपेक्ष मान 1 की कॉम्प्लेक्स संख्या या 0।logdet- निर्धारक के निरपेक्ष मान का प्राकृतिक लघुगणक। यदि निर्धारक शून्य है, तोsign=0औरlogdet=-Inf।
संबंध: determinant = sign * exp(logdet)
चरण
import numpy as np
# 2x2 मैट्रिक्स बनाएं
arr = np.array([[1, 2], [3, 4]])
print("हमारा ऐरे...\n", arr)
print("\nहमारे ऐरे के आयाम...\n", arr.ndim)
print("\nहमारे ऐरे ऑब्जेक्ट का डेटाटाइप...\n", arr.dtype)
print("\nहमारे ऐरे ऑब्जेक्ट का आकार...\n", arr.shape)
# निर्धारक (तुलना के लिए)
print("\nनिर्धारक...\n", np.linalg.det(arr))
# चिह्न और लघुगणक निर्धारक गणना करें
sign, logdet = np.linalg.slogdet(arr)
print("\nपरिणाम....\n", (sign, logdet))
पूर्ण उदाहरण
import numpy as np
# 2x2 मैट्रिक्स बनाएं
arr = np.array([[1, 2], [3, 4]])
# ऐरे प्रदर्शित करें
print("हमारा ऐरे...\n", arr)
print("\nहमारे ऐरे के आयाम...\n", arr.ndim)
print("\nहमारे ऐरे ऑब्जेक्ट का डेटाटाइप...\n", arr.dtype)
print("\nहमारे ऐरे ऑब्जेक्ट का आकार...\n", arr.shape)
# निर्धारक
print("\nनिर्धारक...\n", np.linalg.det(arr))
# चिह्न और लघुगणक निर्धारक
sign, logdet = np.linalg.slogdet(arr)
print("\nपरिणाम....\n", (sign, logdet))
# सत्यापन: sign * exp(logdet) = det
print("\nसत्यापन:", sign * np.exp(logdet))
आउटपुट
हमारा ऐरे...
[[1 2]
[3 4]]
हमारे ऐरे के आयाम...
2
हमारे ऐरे ऑब्जेक्ट का डेटाटाइप...
int64
हमारे ऐरे ऑब्जेक्ट का आकार...
(2, 2)
निर्धारक...
-2.0000000000000004
परिणाम....
(-1.0, 0.6931471805599455)
सत्यापन: -2.0000000000000004
क्यों slogdet का उपयोग करें?
- संख्यात्मक स्थिरता: बड़े मैट्रिक्स के लिए
detओवरफ्लो/अंडरफ्लो कर सकता है - लॉग-लिकलिहुड: सांख्यिकी/ML में लॉग-निर्धारक सीधे उपयोगी होता है
- चिह्न जानकारी: निर्धारक का चिह्न अलग से उपलब्ध
उदाहरण: बड़ा मैट्रिक्स
# 100x100 यादृच्छिक मैट्रिक्स
big = np.random.randn(100, 100)
# सीधा निर्धारक (ओवरफ्लो हो सकता है)
# det = np.linalg.det(big) # अक्सर inf या 0
# slogdet सुरक्षित है
sign, logdet = np.linalg.slogdet(big)
print(f"चिह्न: {sign}, लॉग-निर्धारक: {logdet}")
print(f"निर्धारक परिमाण: {np.exp(logdet):.2e}")
कॉम्प्लेक्स मैट्रिक्स
c = np.array([[1+1j, 2], [3, 4-1j]])
sign, logdet = np.linalg.slogdet(c)
print(sign) # कॉम्प्लेक्स चिह्न (|sign|=1)
print(logdet) # वास्तविक लॉग-निर्धारक