php实现矩阵

PHP 实现矩阵操作
在 PHP 中,矩阵通常以二维数组的形式表示。以下是一些常见的矩阵操作实现方法:
矩阵初始化
// 创建一个 3x3 的矩阵
$matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
矩阵转置
function matrixTranspose($matrix) {
$transposed = [];
foreach ($matrix as $row => $columns) {
foreach ($columns as $col => $value) {
$transposed[$col][$row] = $value;
}
}
return $transposed;
}
矩阵相加
function matrixAdd($matrix1, $matrix2) {
$result = [];
for ($i = 0; $i < count($matrix1); $i++) {
for ($j = 0; $j < count($matrix1[0]); $j++) {
$result[$i][$j] = $matrix1[$i][$j] + $matrix2[$i][$j];
}
}
return $result;
}
矩阵相乘
function matrixMultiply($matrix1, $matrix2) {
$result = [];
$rows1 = count($matrix1);
$cols1 = count($matrix1[0]);
$cols2 = count($matrix2[0]);
for ($i = 0; $i < $rows1; $i++) {
for ($j = 0; $j < $cols2; $j++) {
$result[$i][$j] = 0;
for ($k = 0; $k < $cols1; $k++) {
$result[$i][$j] += $matrix1[$i][$k] * $matrix2[$k][$j];
}
}
}
return $result;
}
矩阵行列式计算
function matrixDeterminant($matrix) {
$size = count($matrix);
if ($size == 1) {
return $matrix[0][0];
}
if ($size == 2) {
return $matrix[0][0] * $matrix[1][1] - $matrix[0][1] * $matrix[1][0];
}
$det = 0;
for ($i = 0; $i < $size; $i++) {
$minor = [];
for ($j = 1; $j < $size; $j++) {
$row = [];
for ($k = 0; $k < $size; $k++) {
if ($k != $i) {
$row[] = $matrix[$j][$k];
}
}
$minor[] = $row;
}
$det += pow(-1, $i) * $matrix[0][$i] * matrixDeterminant($minor);
}
return $det;
}
矩阵打印
function printMatrix($matrix) {
foreach ($matrix as $row) {
echo implode("\t", $row) . "\n";
}
}
使用示例
$matrixA = [
[1, 2],
[3, 4]
];
$matrixB = [
[5, 6],
[7, 8]
];
echo "Matrix A:\n";
printMatrix($matrixA);
echo "Matrix B:\n";
printMatrix($matrixB);
echo "Sum:\n";
printMatrix(matrixAdd($matrixA, $matrixB));
echo "Product:\n";
printMatrix(matrixMultiply($matrixA, $matrixB));
echo "Determinant of A: " . matrixDeterminant($matrixA) . "\n";
这些函数提供了基本的矩阵操作功能,可以根据需要进行扩展。对于更复杂的矩阵运算,可以考虑使用专门的数学库如 MathPHP。







