কম্পিউটার টিউটোরিয়াল

C++ প্রোগ্রাম: গাউস-জর্ডান এলিমিনেশন ইমপ্লিমেন্টেশন

এলগরিদম

গাউস-জর্ডান এলিমিনেশন পদ্ধতিতে অগমেন্টেড ম্যাট্রিক্সকে রিডিউসড রো-ইচেলন ফর্ম (RREF) এ রূপান্তর করা হয়। এটি প্রতিটি পিভট এলিমেন্টকে ১ করে এবং সেই কলামের বাকি সব উপাদানকে ০ করে দেয়। সমাধান সরাসরি পাওয়া যায়।

ধাপসমূহ:

  1. অগমেন্টেড ম্যাট্রিক্স [A|b] ইনপুট নিন।
  2. প্রতিটি কলাম j = 0 to n-1 এর জন্য:
    • পিভট রো খুঁজুন (নন-জিরো এলিমেন্ট) এবং সওয়াপ করুন।
    • পিভট রোকে পিভট এলিমেন্ট দিয়ে ভাগ করে ১ করুন।
    • অন্য সব রোতে পিভট কলামের উপাদান ০ করুন (রো অপারেশন)।
  3. সলিউশন ভেক্টর x[i] = aug[i][n] এক্সট্র্যাক্ট করুন।

উদাহরণ কোড

#include <iostream>
#include <vector>
#include <iomanip>
using namespace std;

int main() {
    cout << "ম্যাট্রিক্সের আকার (n): ";
    int n; cin >> n;

    vector<vector<double>> aug(n, vector<double>(n + 1));
    cout << "অগমেন্টেড ম্যাট্রিক্স রো-ওয়াইজ লিখুন:\n";
    for (int i = 0; i < n; i++)
        for (int j = 0; j <= n; j++)
            cin >> aug[i][j];

    // Gauss-Jordan Elimination
    for (int col = 0; col < n; col++) {
        // Find pivot
        int pivot = col;
        for (int i = col + 1; i < n; i++)
            if (abs(aug[i][col]) > abs(aug[pivot][col]))
                pivot = i;
        swap(aug[col], aug[pivot]);

        // Normalize pivot row
        double pivVal = aug[col][col];
        if (abs(pivVal) < 1e-9) continue; // Singular
        for (int j = col; j <= n; j++)
            aug[col][j] /= pivVal;

        // Eliminate other rows
        for (int i = 0; i < n; i++) {
            if (i == col) continue;
            double factor = aug[i][col];
            for (int j = col; j <= n; j++)
                aug[i][j] -= factor * aug[col][j];
        }
    }

    cout << "\nসমাধান:\n";
    for (int i = 0; i < n; i++)
        cout << "x" << i+1 << " = " << aug[i][n] << "\n";
    return 0;
}

আউটপুট উদাহরণ

ইনপুট:
ম্যাট্রিক্সের আকার: 3
অগমেন্টেড ম্যাট্রিক্স:
1 2 -4 2
7 6 -2 -5
0 -3 -5 -8

আউটপুট:
সমাধান:
x1 = -2.898305
x2 = 2.567797
x3 = 0.059322

ব্যাখ্যা

গাউস-জর্ডান এলিমিনেশন গাউস এলিমিনেশনের একটি এক্সটেনশন যেখানে ব্যাক-সাবস্টিটিউশন প্রয়োজন নেই। এটি সরাসরি রিডিউসড রো-ইচেলন ফর্মে আনে, যাতে সমাধান পাওয়া যায়। পিভটিং (pivoting) ব্যবহার করে न्यুমেরিক্যাল স্থিতিশীলতা নিশ্চিত করা হয়েছে।

  1. C++-এ ইনভোলিউটরি ম্যাট্রিক্স যাচাই করার প্রোগ্রাম

  2. C++-এ সিজার সাইফার (Caesar Cipher) ইমপ্লিমেন্টেশন

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

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