Доброго времени суток, дорогие форумчане! Есть проблема с перемножением матриц.. Алгоритм правильный, но вот выходит ошибка. Есть две матрицы $matrix1 и $matrix2 Необходимо их перемножить, но PHP выдаёт ошибку: Код (Text): Notice: Undefined offset: 3 in C:\xampp\htdocs\task\index.php on line 78 Насколько я понимаю, она связана с тем, что идёт ссылка на несуществующую строку/столбец в массиве, хотя, вроде, всё правильно..(наверное).. Помогите, пожалуйста, понять, в чём дело. Вот код функции (будем считать, что матрицы квадратные): Код (Text): function MultiplyMatrix($matrix1, $matrix2) { $product = array(); // Создаём массив значений $row = count($matrix1); // Количество строк в первой матрице for ($z=0; $z < 1; $z++) { $col = count($matrix2[$z]); // Количество строк во втрой матрице } for ($i=0; $i < $row; $i++) { for ($j=0; $j < $col; $j++) { for ($k=0; $k < $col; $k++) { $product[$row][$col] += $matrix1[$row][$k] * $matrix2[$k][$col]; } echo $product[$row][$col] . " "; } echo "<br>"; } } P.S. Если у кого есть функция перемножения матриц, поделитесь, пожалуйста!
поиск: php multiplication of matrices а свой код отладь: http://phpfaq.ru/debug https://netbeans.org/kb/docs/php/debugging_ru.html
Проблему решил, вот код перемножения матриц. Код (Text): function matrixmult($m1,$m2){ $r=count($m1); $c=count($m2[0]); $p=count($m2); if(count($m1[0])!=$p){throw new Exception('Incompatible matrixes');} $m3=array(); for ($i=0;$i< $r;$i++){ for($j=0;$j<$c;$j++){ $m3[$i][$j]=0; for($k=0;$k<$p;$k++){ $m3[$i][$j]+=$m1[$i][$k]*$m2[$k][$j]; } } } return($m3); }