php实现矩阵
PHP实现矩阵操作
创建矩阵
在PHP中,矩阵可以通过二维数组来表示。以下是一个3x3矩阵的创建示例:
$matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
矩阵加法
两个相同维度的矩阵可以进行加法运算:
function matrixAdd($a, $b) {
$result = [];
for ($i = 0; $i < count($a); $i++) {
for ($j = 0; $j < count($a[0]); $j++) {
$result[$i][$j] = $a[$i][$j] + $b[$i][$j];
}
}
return $result;
}
矩阵乘法
矩阵乘法需要满足第一个矩阵的列数等于第二个矩阵的行数:
function matrixMultiply($a, $b) {
$result = [];
$rowsA = count($a);
$colsA = count($a[0]);
$colsB = count($b[0]);
for ($i = 0; $i < $rowsA; $i++) {
for ($j = 0; $j < $colsB; $j++) {
$result[$i][$j] = 0;
for ($k = 0; $k < $colsA; $k++) {
$result[$i][$j] += $a[$i][$k] * $b[$k][$j];
}
}
}
return $result;
}
矩阵转置
矩阵转置是将矩阵的行列互换:
function matrixTranspose($matrix) {
$transposed = [];
foreach ($matrix as $i => $row) {
foreach ($row as $j => $value) {
$transposed[$j][$i] = $value;
}
}
return $transposed;
}
矩阵行列式计算
对于2x2矩阵,行列式可以这样计算:
function determinant2x2($matrix) {
return $matrix[0][0] * $matrix[1][1] - $matrix[0][1] * $matrix[1][0];
}
对于更大的矩阵,可以使用递归方法计算行列式:
function matrixDeterminant($matrix) {
$size = count($matrix);
if ($size == 1) {
return $matrix[0][0];
}
if ($size == 2) {
return determinant2x2($matrix);
}
$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 += $matrix[0][$i] * pow(-1, $i) * matrixDeterminant($minor);
}
return $det;
}
矩阵打印
可以创建一个函数来格式化输出矩阵:
function printMatrix($matrix) {
foreach ($matrix as $row) {
echo implode("\t", $row) . "\n";
}
}
这些基本操作涵盖了矩阵在PHP中的常见实现方式,可以根据需要扩展更多功能如求逆矩阵、特征值计算等高级操作。







