Odwracanie macierzy metodą Gaussa-Jordana.

0

Hej, mam do napisania program odwracający macierz metodą Gaussa-Jordana. Problem polega na tym, że nigdzie nie mogę znaleźć tej metody opisanej w taki sposób, aby można było łatwo napisać algorytm. Jeśli dobrze rozumiem to po utworzeniu macierzy jednostkowej należy przekształcać wiersze według dwóch wzorów: *najpierw w[i]/a[i][i], a potem w[i]=w[i]-a[i][1]w[i-1].
I teraz co jak i gdzie, bo coś takiego wyzeruje mi tylko kolumnę, a co z wierszem?

to do tej pory napisałem:

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

int main() {
   int n;
  cout << "Podaj Wymairy macierzy:\n";
  cin>>n;
  vector <vector<double>> macierz;
  macierz.resize(n);
  for(int i=0;i<n;i++)  //wypelnainie vectora
  {
    macierz[i].resize(n*2);
    cout<<"Wiersz "<<i+1<<endl;
    for(int j=0; j<n; j++)
    {
      int war;
      cout<<"Podaj wartosc "<<j+1<<":";
      cin>>war;
      macierz[i][j]=war;
      
      
      cout<<endl;
    }
    for(int k=n;k<n*2;k++)
    {
      if(k==i+n)
      macierz[i][k]=1;
      else
      macierz[i][k]=0;
    }
  }
  for(int i=0; i<n; i++) //wyświetlanie
  {
     for(int j=0; j<n*2; j++)
     {
       cout<<macierz[i][j]<<" ";
     }
     cout<<"\n";
  }
  cout<<"\n\n";
} 

mam też osobny program liczący wyznacznik metodą Gaussa.
Byłbym wdzięczny za kod/pseudokod z jakimś objaśnieniem, bo mam wrażenie że jeszcze trochę i oszaleje.
Z góry dzięki

1

Podstawą tej metody jest Gauss Jordan eliminacja:
https://introcs.cs.princeton.edu/java/95linear/GaussianElimination.java.html

0

@lion137: Przepraszam powinienem wspomnieć o tym na początku, ale nie ogarniam javy. Mogę prosić o coś w stylu c++ albo nawet pseudokodu?

2

Jeśli będziesz próbował to robić jedynie w funkcji main (tak jak w złączonym przykładzie), to zapewne polegniesz.
Dziel program na male funkcje. ZAWSZE! A będzie ci latwiej pisać, a co ważniejsze czytać kod.

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