Witam, otóż liczę wyznacznik macierzy nxn rozwinięciem Laplacea i w wyniku zawsze dostaję taką wartość jaką ma na początku przypisana zmienna "wynik". A jeśli robię algorytm ten na papierze wychodzi, co zrobić aby wynik był poprawny?
RowCount to liczba wierszy a ColCount liczba kolumna
public class macierz extends MATRIX {
public macierz(int a, int b){
super(a,b); //wywolanie konstruktora klasy bazowej
}
public macierz Add(float wartosc){
macierz wynik= new macierz(RowCount,ColCount);
for(int i=0;i<RowCount;i++)
for(int j=0;j<ColCount;j++)wynik.VALS[i][j]=this.VALS[i][j]+wartosc;
return wynik;
}
public float wyznacznik(macierz M){
float wynik=0;
if(M.RowCount==1)return VALS[0][0];
if(M.RowCount==2)return VALS[0][0]*VALS[1][1]-VALS[0][1]*VALS[1][0];
for(int i=0;i<M.RowCount;i++){
System.out.println("wynik ="+wynik);
if(i%2==0){
wynik+=M.VALS[0][i]*wyznacznik(dopelnienie(M,i));
System.out.println("wynik ="+wynik);
}
else wynik-=M.VALS[0][i]*wyznacznik(dopelnienie(M,i));
}
return wynik;
}
public macierz dopelnienie(macierz M,int k_skreslona){
macierz dopelniona= new macierz(M.RowCount-1,M.ColCount-1);
for(int i=1;i<M.RowCount;i++){
for(int j=0;j<M.ColCount-1;j++){
if(j==k_skreslona)dopelniona.VALS[i-1][j]=M.VALS[i][j+1];
else dopelniona.VALS[i-1][j]=M.VALS[i][j];
}
}
dopelniona.Print();
return dopelniona;
}
}