Gauss-elimináció

Üdvözlöm, Ön a Gauss-elimináció szó jelentését keresi. A DICTIOUS-ban nem csak a Gauss-elimináció szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a Gauss-elimináció szót egyes és többes számban mondani. Minden, amit a Gauss-elimináció szóról tudni kell, itt található. A Gauss-elimináció szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. AGauss-elimináció és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.

Kiejtés

  • IPA:

Főnév

Gauss-elimináció

  1. (matematika, lineáris algebra, algoritmusok)

A Gauss-elimináció a lineáris algebra egy lineáris egyenletrendszerek megoldására használatos algoritmusa. Legyen adott a következő lineáris egyenletrendszer:

Az eljárás során az egyenletrendszer megoldásait keressük, ahol megoldás alatt olyan értendő, amely az ismeretlenek helyére behelyettesítve mind az m egyenletet kielégíti. Az eljárással meghatározható mátrixok rangja és determinánsa is. Az elimináció-, azaz kiküszöbölés-módszer lényege abban áll, hogy rendszerünket visszavezetjük vagy valamely háromszög- vagy átlós mátrixszal reprezentálható alakra. Ezt sorozatos, jobb és bal oldalon egyaránt alkalmazott, lineáris transzformációk segítségével érjük el


Gauss-elimináció algoritmus

A Gauss-elimináció egy hatékony módszer lineáris egyenletrendszerek megoldására. Az algoritmus az egyenletrendszer mátrixát lépcsőzetes alakra alakítja, majd visszahelyettesítéssel meghatározza az ismeretlenek értékeit.



Algoritmus célja

Az algoritmus célja egy lineáris egyenletrendszer megoldása: ahol: - (A): az egyenletrendszer együtthatómátrixa, - (x): az ismeretlenek vektora, - (b): a jobb oldali konstansok vektora.



Lépések

  1. Bemenet: Az (A) mátrix és (b) vektor.
  2. Elimináció:
    • Az (A) mátrixot lépcsőzetes alakra alakítjuk (felső háromszög alakúvá).
    • Minden oszlopban kiválasztjuk a legnagyobb abszolút értékű elemet (pivotálás).
    • A pivot elemet felhasználva kinullázzuk az alatta lévő elemeket.
  3. Visszahelyettesítés:
    • A felső háromszög alakú mátrixból visszafelé haladva kiszámítjuk az ismeretleneket.



Pszeudokód

function GaussElimination(A, b):
    n = A mérete
    C =   # Az együtthatómátrix és a jobb oldali vektor összefűzése

    # Eliminációs lépés
    for i = 0 to n-1:
        # Pivotálás: Legnagyobb abszolút értékű elem keresése az aktuális oszlopban
        pivot_row = i
        for j = i+1 to n-1:
            if abs(C) > abs(C):
                pivot_row = j

        # Sorcsere
        C, C = C, C

        # Kinullázás az i. oszlop alatt
        for j = i+1 to n-1:
            factor = C / C
            for k = i to n:
                C -= factor * C

    # Visszahelyettesítés
    x =  * n
    for i = n-1 down to 0:
        x = (C - sum(C * x for j = i+1 to n-1)) / C

    return x

Python implementáció

import numpy as np

def gauss_elimination(A, b):
    """
    Gauss-eliminációs algoritmus lineáris egyenletrendszerek megoldására.
    :param A: Együtthatómátrix
    :param b: Jobb oldali vektor
    :return: Az ismeretlenek megoldásvektora
    """
    n = len(A)
    C = np.hstack((A, b.reshape(-1, 1)))  # Az A mátrix és b vektor összefűzése

    # Eliminációs lépés
    for i in range(n):
        # Pivotálás
        max_row = i + np.argmax(np.abs(C))
        C] = C]  # Sorcsere

        # Kinullázás az i. oszlop alatt
        for j in range(i + 1, n):
            factor = C / C
            C -= factor * C

    # Visszahelyettesítés
    x = np.zeros(n)
    for i in range(n - 1, -1, -1):
        x = (C - np.dot(C, x)) / C

    return x

# Példa használat
A = np.array(,
              ,
              ])
b = np.array()

solution = gauss_elimination(A, b)
print(f"Az ismeretlenek megoldásvektora: {solution}")

Kimenet:

Az ismeretlenek megoldásvektora: 

C++ implementáció

#include <iostream>
#include <vector>
#include <cmath>

using namespace std;

vector<double> gauss_elimination(vector<vector<double>> A, vector<double> b) {
    int n = A.size();
    vector<double> x(n, 0.0);

    // Augmentált mátrix létrehozása
    for (int i = 0; i < n; ++i) {
        A.push_back(b);
    }

    // Eliminációs lépés
    for (int i = 0; i < n; ++i) {
        // Pivotálás
        int max_row = i;
        for (int k = i + 1; k < n; ++k) {
            if (fabs(A) > fabs(A)) {
                max_row = k;
            }
        }
        swap(A, A);

        // Kinullázás az i. oszlop alatt
        for (int j = i + 1; j < n; ++j) {
            double factor = A / A;
            for (int k = i; k <= n; ++k) {
                A -= factor * A;
            }
        }
    }

    // Visszahelyettesítés
    for (int i = n - 1; i >= 0; --i) {
        x = A / A;
        for (int j = i - 1; j >= 0; --j) {
            A -= A * x;
        }
    }

    return x;
}

int main() {
    vector<vector<double>> A = {
        {2, 1, -1},
        {-3, -1, 2},
        {-2, 1, 2}
    };
    vector<double> b = {8, -11, -3};

    vector<double> solution = gauss_elimination(A, b);

    cout << "Az ismeretlenek megoldásvektora: ";
    for (double val : solution) {
        cout << val << " ";
    }
    cout << endl;

    return 0;
}

Kimenet:

Az ismeretlenek megoldásvektora: 2 3 -1

Összegzés

A Gauss-elimináció hatékony és jól alkalmazható módszer lineáris egyenletrendszerek megoldására: - Időbonyolultság: (O(n^3)), ahol (n) az egyenletek száma. - Előnyök: - Egyszerű implementáció. - Alkalmas kis és közepes méretű rendszerekre. - Hátrányok: - Nagyobb mátrixoknál numerikus instabilitás léphet fel. - Nem hatékony ritka mátrixokra, ahol speciális módszerek előnyösebbek.

Fordítások