Kod
function Wyznacznik ($macierz, $wymX, $wymY)
{
// Ustawiamy zmienna zawierajaca wynik
$wynik = 0;
// Jesli macierz jest jednoelementowa, to wyznacznik jest rowny temu
// elementowi. A zatem nie ma co robic tylko zwracamy wartosc tego elementu
if ($wymX == 1 && $wymY == 1) return $macierz[0][0];
// Glowna petla. Przesuwamy sie po kolumnach naszej macierzy
for($a = 0; $a < $wymY; $a++)
{
// Zmienna znaku
$znak = 1;
// Gdy jestesmy w nieparzystym wierszu znak jest ujemny
if( $a % 2!=0) $znak = -1;
// Wyliczamy mnoznik
$mnoznik = $macierz[0][$a];
// Deklarujemy tablice pomocnicze
$m = array();
$m2 = array();
// Jedziemy po wierszach macierzy
for($b=1;$b < $wymX; $b++)
{
// Zmienna pomocnicza
$d = 0;
// Jedziemy po kolumnach, ponownie, z tym ze konczymy na jednej kolumnie wczesniej
// niz w przypadku glownej petli.
for($c=0; $c < count($macierz[$b])-1; $c++)
{
if($c==$a) $d = 1;
// Twprzymy wektor liczb z macierzy
$m2[$c] = $macierz[$b][$c+$d];
}
// Przypisujemy wektor do macierzy tymczaswoej
$m[$b-1]= $m2;
// Czyscimy wektor pomocniczy
$m2 = array();
}
// Wywoljuemy rekurencyjnie funkcje Wyznacznik aby policzyc podwyznaczniki.
$wynik += $znak * $mnoznik * Wyznacznik($m, count($m), count($m[0]));
}
// Zwracamy wynik
echo("$wynik");
return $wynik;
}
{
// Ustawiamy zmienna zawierajaca wynik
$wynik = 0;
// Jesli macierz jest jednoelementowa, to wyznacznik jest rowny temu
// elementowi. A zatem nie ma co robic tylko zwracamy wartosc tego elementu
if ($wymX == 1 && $wymY == 1) return $macierz[0][0];
// Glowna petla. Przesuwamy sie po kolumnach naszej macierzy
for($a = 0; $a < $wymY; $a++)
{
// Zmienna znaku
$znak = 1;
// Gdy jestesmy w nieparzystym wierszu znak jest ujemny
if( $a % 2!=0) $znak = -1;
// Wyliczamy mnoznik
$mnoznik = $macierz[0][$a];
// Deklarujemy tablice pomocnicze
$m = array();
$m2 = array();
// Jedziemy po wierszach macierzy
for($b=1;$b < $wymX; $b++)
{
// Zmienna pomocnicza
$d = 0;
// Jedziemy po kolumnach, ponownie, z tym ze konczymy na jednej kolumnie wczesniej
// niz w przypadku glownej petli.
for($c=0; $c < count($macierz[$b])-1; $c++)
{
if($c==$a) $d = 1;
// Twprzymy wektor liczb z macierzy
$m2[$c] = $macierz[$b][$c+$d];
}
// Przypisujemy wektor do macierzy tymczaswoej
$m[$b-1]= $m2;
// Czyscimy wektor pomocniczy
$m2 = array();
}
// Wywoljuemy rekurencyjnie funkcje Wyznacznik aby policzyc podwyznaczniki.
$wynik += $znak * $mnoznik * Wyznacznik($m, count($m), count($m[0]));
}
// Zwracamy wynik
echo("$wynik");
return $wynik;
}