एक मैट्रिक्स का LU अपघटन इसके निचले त्रिकोणीय मैट्रिक्स और ऊपरी त्रिकोणीय मैट्रिक्स के उत्पाद के रूप में एक मैट्रिक्स का निर्माण करता है। मैट्रिक्स के LU अपघटन में LU लोअर अपर के लिए होता है।
मैट्रिक्स के LU अपघटन का एक उदाहरण नीचे दिया गया है -
Given matrix is: 1 1 0 2 1 3 3 1 1 The L matrix is: 1 0 0 2 -1 0 3 -2 -5 The U matrix is: 1 1 0 0 1 -3 0 0 1
एक प्रोग्राम जो मैट्रिक्स का LU अपघटन करता है, नीचे दिया गया है -
उदाहरण
#include<iostream> using namespace std; void LUdecomposition(float a[10][10], float l[10][10], float u[10][10], int n) { int i = 0, j = 0, k = 0; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { if (j < i) l[j][i] = 0; else { l[j][i] = a[j][i]; for (k = 0; k < i; k++) { l[j][i] = l[j][i] - l[j][k] * u[k][i]; } } } for (j = 0; j < n; j++) { if (j < i) u[i][j] = 0; else if (j == i) u[i][j] = 1; else { u[i][j] = a[i][j] / l[i][i]; for (k = 0; k < i; k++) { u[i][j] = u[i][j] - ((l[i][k] * u[k][j]) / l[i][i]); } } } } } int main() { float a[10][10], l[10][10], u[10][10]; int n = 0, i = 0, j = 0; cout << "Enter size of square matrix : "<<endl; cin >> n; cout<<"Enter matrix values: "<endl; for (i = 0; i < n; i++) for (j = 0; j < n; j++) cin >> a[i][j]; LUdecomposition(a, l, u, n); cout << "L Decomposition is as follows..."<<endl; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { cout<<l[i][j]<<" "; } cout << endl; } cout << "U Decomposition is as follows..."<<endl; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { cout<<u[i][j]<<" "; } cout << endl; } return 0; }
आउटपुट
उपरोक्त कार्यक्रम का आउटपुट इस प्रकार है
Enter size of square matrix : 3 Enter matrix values: 1 1 0 2 1 3 3 1 1 L Decomposition is as follows... 1 0 0 2 -1 0 3 -2 -5 U Decomposition is as follows... 1 1 0 0 1 -3 0 0 1
उपरोक्त कार्यक्रम में, फ़ंक्शन LU अपघटन दिए गए मैट्रिक्स के L और U अपघटन का पता लगाता है। यह लूप के लिए नेस्टेड का उपयोग करके किया जाता है जो एल और यू अपघटन की गणना करता है और उन्हें मैट्रिक्स ए [] [] से एल [] [] और यू [] [] मैट्रिक्स में संग्रहीत करता है।
इसे प्रदर्शित करने वाला कोड स्निपेट इस प्रकार दिया गया है -
for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { if (j < i) l[j][i] = 0; else { l[j][i] = a[j][i]; for (k = 0; k < i; k++) { l[j][i] = l[j][i] - l[j][k] * u[k][i]; } } } for (j = 0; j < n; j++) { if (j < i) u[i][j] = 0; else if (j == i) u[i][j] = 1; else { u[i][j] = a[i][j] / l[i][i]; for (k = 0; k < i; k++) { u[i][j] = u[i][j] - ((l[i][k] * u[k][j]) / l[i][i]); } } } }
मुख्य () फ़ंक्शन में, उपयोगकर्ता से मैट्रिक्स और उसके तत्वों का आकार प्राप्त किया जाता है। यह इस प्रकार दिया गया है -
cout << "Enter size of square matrix : "<<endl; cin >> n; cout<<"Enter matrix values: "<endl; for (i = 0; i < n; i++) for (j = 0; j < n; j++) cin >> a[i][j];
फिर LU अपघटन फ़ंक्शन को कॉल किया जाता है और L और U अपघटन प्रदर्शित किया जाता है। यह नीचे दिया गया है -
LUdecomposition(a, l, u, n); cout << "L Decomposition is as follows..."<<endl; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { cout<<l[i][j]<<" "; } cout << endl; } cout << "U Decomposition is as follows..."<<endl; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { cout<u[i][j]<<" "; } cout << endl; }