Witaj,
dzięki za linka do LU, bo nie znałem wcześniej tej metody :]
odnośnie kodu - zawsze chciłem to powiedzieć - u mnie działa

dobra, było parę błędów w kodzie, ale jakoś poszło:
1. inicjalizuj zmienne, np. $suma = 0;
2. wg mnie sprawdzenie w liczeniu kolumn u[i][i]!=0 mija się z celem, bo wtedy cała metoda idzie sie j*** na łąkę i trzeba zastosować - z tego co tam jest napisane - metodę Crouta
3. zrób sobie z tego klase, zeby nie trzeba bylo przekazywac co chwilę macierzy, i,j,n

4. nie kamufluj błędów @-małpą, w ifie $i =1 (przypisanie!), akurat ten warunek był cały zbędny
5. natomiast główne błąd to logiczny w iteracji pętli, np. sumuje się włącznie do k-1, oraz w kolumnach bierzemy za $j o jeden więcej niż w wierszach
kod:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Mnozenie Macierzy</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<style type="text/css">
.pro{
text-align: center;
}
.proo{
margin-left: auto;
margin-right: auto;
width: 200px
}
body {
background-color:#ff9900;
}
</style>
</head>
<?php
//Budujemy 3 tablice, A = L * U (przyklad ponizej to przyklad dla macierzy 3x3)
//macierz A:
$A = array( 'a11' => '5', 'a12' => '3', 'a13' => '2',
'a21' => '1', 'a22' => '2', 'a23' => '0',
'a31' => '3', 'a32' => '0', 'a33' => '4',
);
//kolumny macierzy:
$L = array( 'l11' => '1', 'l12' => '0', 'l13' => '0',
'l21' => '' , 'l22' => '1', 'l23' => '0',
'l31' => '' , 'l32' => '' , 'l33' => '1',
);
//wiersze macierzy:
$U = array( 'u11' => '' , 'u12' => '' , 'u13' => '' ,
'u21' => '0', 'u22' => '' , 'u23' => '' ,
'u31' => '0', 'u32' => '0', 'u33' => '' ,
);
//Aby wynik byl poprawny musimy obliczac na przemian wiersze macierzy U i kolumny macierzy L
//funkcja liczaca $U czyli wiersze macierzy
function liczWiersz(&$A, &$L, &$U, $i, $j) {
$suma = 0;
for($k=1;$k<=$i-1;$k++)
$suma += ($L['l'.$i.$k] * $U['u'.$k.$j]);
$U['u'.$i.$j] = round($A['a'.$i.$j] - $suma, 3
); }
// funkcja liczaca $L czyli kolumny macierzy
function liczKolumne(&$A, &$L, &$U, $i, $j) {
$suma = 0;
if($U['u'.$i.$i] != 0 ) {
for($k=1;$k<=$i-1;$k++)
{
$suma += ($L['l'.$j.$k] * $U['u'.$k.$i]);
}
$L['l'.$j.$i] = round( (1
/ $U['u'.$i.$i]) * ($A['a'.$j.$i] - $suma), 3
);
}
}
for($i=1;$i<=3;$i++) {
for($j=$i;$j<=3;$j++) {
liczWiersz($A, $L, $U, $i, $j);
}
for($j=$i+1;$j<=3;$j++) {
liczKolumne($A, $L, $U, $i, $j);
}
}
//funkcja wyswietlajaca macierz
// $M - dana macierz jaka chcemy wyswietlic
// $p - przedrostek kolumny
function wyswietlMacierz(&$M, $p) {
// strtoupper - zwraca ciag znakow z wszystkimi literami alfabetu przekonwertowanymi na duże.
echo "<table style=\"border: 1px solid black; width: 150px; text-align: center;\">";
for($i=1;$i<=3;$i++) {
echo "<td>".$M[$p.$i.'1']."</td><td>".$M[$p.$i.'2']."</td><td>".$M[$p.$i.'3']."</td>";
}
}
wyswietlMacierz($A, 'a');
wyswietlMacierz($L, 'l');
wyswietlMacierz($U, 'u');
?>
<br>
<br>
<br>
<br>
<br>
<br>
<footer>Stworzone na podstawie przykĹadu z Wikipedia.pl</footer>