यह प्रश्न काफी पुराना है, लेकिन मैं इसका उत्तर दूंगा क्योंकि यह कुछ Google खोजों में लगभग शीर्ष पर दिखाई देता है।
मैं अपने उदाहरण के लिए जादू (एन) फ़ंक्शन का उपयोग करूंगा जो एन-बाय-एन जादू वर्ग लौटाता है।
मैं एक 3x3 जादू वर्ग एम 3 बनाएंगे, जिसमें Pseudoinverse PI_M3 लेते हैं और उन्हें गुणा करते हैं:
prompt_$ M3 = magic(3) , PI_M3 = pinv(M3) , M3 * PI_M3
M3 =
8 1 6
3 5 7
4 9 2
PI_M3 =
0.147222 -0.144444 0.063889
-0.061111 0.022222 0.105556
-0.019444 0.188889 -0.102778
ans =
1.0000e+00 -1.2212e-14 6.3283e-15
5.5511e-17 1.0000e+00 -2.2204e-16
-5.9952e-15 1.2268e-14 1.0000e+00
आप देख सकते हैं इस सवाल का जवाब पहचान मैट्रिक्स कुछ राउंडिंग त्रुटियों के लिए बचाने के लिए है। मैं एक 4x4 जादू वर्ग के साथ आपरेशन दोहराने की आवश्यकता होगी:
prompt_$ M4 = magic(4) , PI_M4 = pinv(M4) , M4 * PI_M4
M4 =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
PI_M4 =
0.1011029 -0.0738971 -0.0613971 0.0636029
-0.0363971 0.0386029 0.0261029 0.0011029
0.0136029 -0.0113971 -0.0238971 0.0511029
-0.0488971 0.0761029 0.0886029 -0.0863971
ans =
0.950000 -0.150000 0.150000 0.050000
-0.150000 0.550000 0.450000 0.150000
0.150000 0.450000 0.550000 -0.150000
0.050000 0.150000 -0.150000 0.950000
परिणाम पहचान मैट्रिक्स, इसका मतलब है कि 4x4 जादू वर्ग एक व्युत्क्रम नहीं है नहीं है। मैं मूर-Penrose Pseudoinverse के नियमों में से एक कोशिश कर रहा द्वारा इस की पुष्टि कर सकते हैं:
prompt_$ M4 * PI_M4 * M4
ans =
16.00000 2.00000 3.00000 13.00000
5.00000 11.00000 10.00000 8.00000
9.00000 7.00000 6.00000 12.00000
4.00000 14.00000 15.00000 1.00000
शासन ए * बी * एक = एक संतुष्ट है। इससे पता चलता है कि जब यह उपलब्ध होता है तो पिनव उलटा मैट्रिक्स देता है और जब उलटा उपलब्ध नहीं होता है तो छद्म कनेक्ट होता है। यही कारण है कि कुछ स्थितियों में आपको थोड़ा अंतर मिलता है, बस कुछ गोल करने वाली त्रुटियां होती हैं, और अन्य परिस्थितियों में आपको एक बड़ा अंतर मिलता है। यह दिखाने के लिए मैं दोनों जादू चतुर्थ भाग का उल्टा और उन्हें Pseudoinverse से घटा देंगे: [? क्यों Matlab के निवेश संबंधी निर्णय निर्माताओं धीमी और गलत है]
prompt_$ I_M3 = inv(M3) , I_M4 = inv(M4) , DIFF_M3 = PI_M3 - I_M3, DIFF_M4 = PI_M4 - I_M4
I_M3 =
0.147222 -0.144444 0.063889
-0.061111 0.022222 0.105556
-0.019444 0.188889 -0.102778
warning: inverse: matrix singular to machine precision, rcond = 1.30614e-17
I_M4 =
9.3825e+13 2.8147e+14 -2.8147e+14 -9.3825e+13
2.8147e+14 8.4442e+14 -8.4442e+14 -2.8147e+14
-2.8147e+14 -8.4442e+14 8.4442e+14 2.8147e+14
-9.3825e+13 -2.8147e+14 2.8147e+14 9.3825e+13
DIFF_M3 =
4.7184e-16 -1.0270e-15 5.5511e-16
-9.9226e-16 2.0470e-15 -1.0825e-15
5.2042e-16 -1.0270e-15 4.9960e-16
DIFF_M4 =
-9.3825e+13 -2.8147e+14 2.8147e+14 9.3825e+13
-2.8147e+14 -8.4442e+14 8.4442e+14 2.8147e+14
2.8147e+14 8.4442e+14 -8.4442e+14 -2.8147e+14
9.3825e+13 2.8147e+14 -2.8147e+14 -9.3825e+13
के संभावित डुप्लिकेट (http: // stackoverflow। कॉम/प्रश्न/1419580/क्यों-है-matlabs-inv-slow-and -accaccurate) – Shai
@Shai, मेरा मानना है कि ओपी से जुड़े प्रश्न के उत्तर पढ़ने से लाभ हो सकता है (कम से कम यदि ओपी 'inv' का उपयोग कर रहा है 'x = ए^-1 * बी' को हल करना), लेकिन आईएमओ यह एक डुप्लिकेट नहीं है। –