কম্পিউটার

যেকোন ম্যাট্রিক্সের LU পচন সঞ্চালনের জন্য C++ প্রোগ্রাম


একটি ম্যাট্রিক্সের 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 পচন খুঁজে পায়। এটি লুপগুলির জন্য নেস্টেড ব্যবহার করে করা হয় যা L এবং U পচন গণনা করে এবং ম্যাট্রিক্স a[][][] থেকে 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]);
         }  
      }
   }
}

main() ফাংশনে, ম্যাট্রিক্সের আকার এবং এর উপাদানগুলি ব্যবহারকারীর কাছ থেকে পাওয়া যায়। এটি নিম্নরূপ দেওয়া হয় -

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;
}

  1. C++ এ ম্যাট্রিক্স নিম্ন ত্রিভুজাকার কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম

  2. C++ এ ইনভোলুটরি ম্যাট্রিক্স চেক করার প্রোগ্রাম

  3. C++-এ idempotent ম্যাট্রিক্স চেক করার প্রোগ্রাম

  4. অ্যাডজাসেন্সি ম্যাট্রিক্স বাস্তবায়নের জন্য C++ প্রোগ্রাম