Algorytm bezwyznacznikowej metody odwracania macierzy kwadratowej wymiaru n>=2

0

Witajcie

Od jakiegoś czasu próbuję stworzyć w cpp algorytm odwracania macierzy kwadratowych. Z wyznacznikiem udało mi się odwracać macierze 2x2, 3x3 i 4x4. Jednak ten algorytm ma być częścią innego programu, zatem założenia podstawowe to:

-odwracanie macierzy bezwyznacznikowo (sprowadzanie macierzy wyjściowej do macierzy jednostkowej) http://orzelzmatmy.pl/macierze/119-jak-obliczyc-macierz-odwrotna

-macierze mogą być spore: nawet po 100x100 i algorytm musi działać poprawnie (nie koniecznie szybko).

Znalazłem ciekawy algorytm na Wiki: Metoda eliminacji Gaussa-Jordana, jednak problem z wdrożeniem go powyżej macierzy 2x2 jest dla mnie zbyt duży. W moim programie macierze testowo maja 100x100:

double macierzX[100][100]; 

Użytkownik wprowadza dane w taki sposób:

cout << "\nMacierze X i Y zainicjalizowane zerami:\n\n";
        for(int i = 0; i < w; i++) //petla wypisujaca macierz na ekran konsoli
        {
            for(int j = 0; j < k; j++)
            {
                macierzX[ i ][ j ];
                cout << setw(5) << "0";
            }
            cout << endl << endl;
        }

        cout << "\n\nWpisz elementy macierzy X:\n";
        for(int i = 0; i < w; i++)
        {
            for(int j = 0; j < k; j++)
            {
                cin >> macierzX[ i ][ j ];
            }
            cout << endl;
        } 

Był bym wdzięczny za pseudo kod albo za info jak zrealizować zestaw pętli odwracający bezwyznacznikowo macierze.

0

Po co Ci to? Odwracanie macierzy jest mało stabilne numerycznie i poza szkolnymi zadaniami nie jest do niczego potrzebne. Zainteresuj się rozkładem LU dla macierzy rzadkich.

http://www.johndcook.com/blog/2010/01/19/dont-invert-that-matrix/

0

Muszę odwrócić macierz - to jest mi potrzebne do innej części programu obliczającego metodę najmniejszych kwadratów. Znasz inne rozwiązanie dla MNK?
Poza tym taka jest specyfikacja programu. Spróbuj powiedzieć kiedyś swojemu szefowi: "Po co ci to?".

Tak więc potrzebuję bezwyznacznikową metodę odwr. macierzy. Ewentualnie może być wyznacznik, choć nie mam pojęcia jak to zrobić dla macierzy powyżej 3x3.

0

Bardzo ładnie przedstawiony problem - teraz umiem odwracać macierze na kartce papieru, jednak implementacja tego wydaje mi się jakimś koszmarem na moim poziome zaawansowania. (czytałem tylko symfonie J.Grębosza o c++ i nic więcej).

1 użytkowników online, w tym zalogowanych: 0, gości: 1