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

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

এলগরিদম

গাউস-সাইডেল মেথড একটি ইটারেটিভ পদ্ধতি লিনিয়ার সমীকরণ সিস্টেম Ax = b সমাধানের জন্য। এটি প্রতিটি ইটারেশনে ভেরিয়েবলগুলিকে আপডেট করে, নতুন মানটা उसी ইটারেশনে ব্যবহার করে (গাউস-জ্যাকোবির বিপরীতে)।

ধাপসমূহ:

  1. ম্যাট্রিক্স A, ভেক্টর b, আর আপসামানিক গেস x(0) ইনপুট নিন।
  2. প্রতিটি ইটারেশনে প্রতিটি ভেরিয়েবল xi আপডেট করুন: xi(k+1) = (bi - Σj≠i aijxj(k+1)) / aii
  3. নির্দিষ্ট ইটারেশন বা কনভারজেন্স না হওয়া পর্যন্ত চালান।

উদাহরণ কোড

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

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

    vector<vector<double>> a(n, vector<double>(n));
    vector<double> b(n), x(n), x_new(n);

    cout << "ম্যাট্রিক্স A এর উপাদান:\n";
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            cin >> a[i][j];

    cout << "ভেক্টর b এর উপাদান:\n";
    for (int i = 0; i < n; i++) cin >> b[i];

    cout << "আরম্ভিক গেস x:\n";
    for (int i = 0; i < n; i++) cin >> x[i];

    cout << "ইটারেশন সংখ্যা: ";
    int iter; cin >> iter;

    cout << fixed << setprecision(6);
    for (int it = 1; it <= iter; it++) {
        for (int i = 0; i < n; i++) {
            double sum = b[i];
            for (int j = 0; j < n; j++) {
                if (j != i) sum -= a[i][j] * x[j];
            }
            x_new[i] = sum / a[i][i];
        }
        x = x_new;
        cout << "ইটারেশন " << it << ": ";
        for (int i = 0; i < n; i++)
            cout << "x" << i+1 << "=" << x[i] << " ";
        cout << "\n";
    }
    return 0;
}

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

ইনপুট:
ম্যাট্রিক্সের আকার: 2
A: 1 2
   3 4
b: 1 2
আরম্ভিক গেস: 0 0
ইটারেশন: 3

আউটপুট:
ইটারেশন 1: x1=1.000000 x2=-0.250000
ইটারেশন 2: x1=1.500000 x2=-0.625000
ইটারেশন 3: x1=2.250000 x2=-1.187500

ব্যাখ্যা

গাউস-সাইডেল মেথডে প্রতিটি ভেরিয়েবল আপডেট होतेই তা পরবর্তী ভেরিয়েবল ক্যালকুলেশনে ব্যবহার করা হয়, যা কনভারজেন্স ত্বরান্বিত করে। ম্যাট্রিক্স ডায়গোনালি ডোমিন্যান্ট হলে কনভার্জ করে।

  1. বাইসেকশন মেথড (Bisection Method) C++ প্রোগ্রাম

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

  3. C++ প্রোগ্রাম: AVL ট্রি ইমপ্লিমেন্টেশন

  4. C++ STL-এ Set Symmetric Difference বাস্তবায়ন