如何在php中实现3*3矩阵乘法?

myzjeezk  于 2023-06-04  发布在  PHP
关注(0)|答案(3)|浏览(423)

如何在php中用下面的代码做33或31矩阵乘法。我应该在哪里改变逻辑呢?????
这段代码完全只适用于2*2矩阵乘法
下面是我的代码:

$a = Array( Array(1,2),Array(4,5));
$b = Array( Array(7,5), Array(3,2));

$sumArray = array();

$c = array();

for($i=0;$i<2;$i++)
{
    for($j=0;$j<2;$j++)
    {
        $c[$i][$j]=0;
        for($k=0;$k<2;$k++)
        {

            $c[$i][$j]=$c[$i][$j]+($a[$i][$k]*$b[$k][$j]);
        }
    }
}

echo "<pre/>";
print_r($c);
?>
ycggw6v2

ycggw6v21#

矩阵乘法规则:

第一个矩阵的列和第二个矩阵的行必须相同
结果矩阵的大小为第一个矩阵的行和第二个矩阵的

$a = Array( Array(1,2),Array(4,5));
$b = Array( Array(7,5), Array(3,2));

$r=count($a);
$c=count($b[0]);
$p=count($b);
if(count($a[0]) != $p){
    echo "Incompatible matrices";
    exit(0);
}
$result=array();
for ($i=0; $i < $r; $i++){
    for($j=0; $j < $c; $j++){
        $result[$i][$j] = 0;
        for($k=0; $k < $p; $k++){
            $result[$i][$j] += $a[$i][$k] * $b[$k][$j];
        }
    }
}
print_r($result);
6rqinv9w

6rqinv9w2#

矩阵计算通过将任何列或行元素乘以它们自己的余因子来实现。
根据您的要求进行编码;

<?php
if ($_POST['hsp']) {
$de3t11=$_POST['m11']; $de3t12=$_POST['m12'];  $de3t13=$_POST['m13']; 
$de3t21=$_POST['m21'];  $de3t22=$_POST['m22'];  $de3t23=$_POST['m14']; 
$de3t31=$_POST['m31'];  $de3t32=$_POST['m23'];  $de3t33=$_POST['m15']; 

//show on screen
 echo $de3t11 ." ". $de3t12. " ". $de3t13;
 echo "<br>";
 echo $de3t21 ." ". $de3t22. " ". $de3t23;
 echo "<br>";
 echo $de3t31 ." ". $de3t32. " ". $de3t33;
 echo "<br>";

//calculate matrix
$m3m11=(($de3t22*$de3t33)-($de3t23*$de3t32))*(1);
$m3m12=(($de3t21*$de3t33)-($de3t23*$de3t31))*(-1);
$m3m13=(($de3t21*$de3t32)-($de3t22*$de3t31))*(1);

//Determinant
$det3t3=(($de3t11*$m3m11)+($de3t12*$m3m12)+($de3t13*$m3m13));

echo $det3t3;

}


 ?>

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>

<form action="" method="POST">
    <input type="number" name="m11">
    <input type="number" name="m12">
    <input type="number" name="m13">
    <br><br>
    <input type="number" name="m21">
    <input type="number" name="m22">
    <input type="number" name="m23">
    <br><br>
    <input type="number" name="m31">
    <input type="number" name="m32">
    <input type="number" name="m33">

    <input type="submit" name="hsp">
</form>

</body>
</html>
vwhgwdsa

vwhgwdsa3#

试试这个

<?php
$m1 = array(
    array(1,2,3),
    array(1,2,3),
    array(1,2,3)
);

$m2 = array(
    array(1,2,3),
    array(1,2,3),
    array(1,2,3)
);

$ans = array(
    array(0,0,0),
    array(0,0,0),
    array(0,0,0)
);
for($i=0;$i<3;$i++){
    for($j=0;$j<3;$j++){
        for($k=0;$k<3;$k++){
            $ans[$i][$j] += $m1[$i][$k] * $m2[$k][$j];
        }
    }
}
for($i=0;$i<3;$i++){
    for($j=0;$j<3;$j++){
        echo $ans[$i][$j] . " ";
    }
    echo "<br>";
}

?>

相关问题