<?php
// 矩阵的定义形式为二维数组,如M1和M2为两个两行两列的矩阵
$M1 = array(
array(1,1),
array(1,1)
);
$M2 = array(
array(1,1),
array(1,1)
);
/****************************************************************************/
/*******************************封装矩阵相减函数******************************/
function Matrix_subtraction($M1,$M2)
{
$M3 = array();
if((count($M1)==count($M2))&&(count($M1[0])==count($M2[0])))
{
for($i=0;$i<count($M1);$i++)
{
for($j=0;$j<count($M1[0]);$j++)
{
$M3[$i][$j] = $M1[$i][$j] - $M2[$i][$j];
}
}
return $M3;
}
else
{
exit('矩阵的行数或列数不相等,不满足运算规则!');
}
}
/****************************************************************************/
/*******************************封装矩阵相加函数******************************/
function Matrix_addition($M1,$M2)
{
$M3 = array();
if((count($M1)==count($M2))&&(count($M1[0])==count($M2[0])))
{
for($i=0;$i<count($M1);$i++)
{
for($j=0;$j<count($M1[0]);$j++)
{
$M3[$i][$j] = $M1[$i][$j] + $M2[$i][$j];
}
}
return $M3;
}
else
{
exit('矩阵的行数或列数不相等,不满足运算规则!');
}
}
/****************************************************************************/
/*******************************封装矩阵叉乘函数******************************/
function Matrix_cross_product($M1,$M2)
{
$M3 = array();
if(count($M1[0])!=count($M2))
{
exit('前者的列数不等于后者的行数,不满足运算规则!');
}
// 左矩阵行数
else
{
for($i=0;$i<count($M1);$i++)
{
// 右矩阵列数
for($k=0;$k<count($M2[0]);$k++)
{
// 左矩阵列数
for($j=0;$j<count($M1[0]);$j++)
{
@$M3[$i][$k] += $M1[$i][$j]*$M2[$j][$k];
}
}
}
return $M3;
}
}
/****************************************************************************/
/*******************************封装矩阵点乘函数******************************/
function Matrix_dot_multiplication($M1,$M2)
{
$M3 = array();
if(count($M1)!=count($M2))
{
exit('矩阵的行数不一致!');
}
else if(count($M1[0])!=count($M2[0]))
{
if(count($M1[0])==1)
{
for($i=0;$i<count($M1);$i++)
{
for($j=0;$j<count($M2[0]);$j++)
{
$M3[$i][$j] = $M1[$i][0]*$M2[$i][$j];
}
}
return $M3;
}
else
{
exit('矩阵的列数不满足要求!');
}
}
else
{
for($i=0;$i<count($M1);$i++)
{
for($j=0;$j<count($M1[0]);$j++)
{
$M3[$i][$j] = $M1[$i][$j]*$M2[$i][$j];
}
}
return $M3;
}
}
/****************************************************************************/
/*******************************封装矩阵转置函数******************************/
function Matrix_transpose($M)
{
$M_transpose = array();
for($i=0;$i<count($M);$i++)
{
for($j=0;$j<count($M[0]);$j++)
{
$M_transpose[$j][$i] = $M[$i][$j];
}
}
return $M_transpose;
}
?>
PHP矩阵运算(矩阵相加、矩阵相减、矩阵点乘、矩阵叉乘、矩阵转置)
于 2023-12-15 08:52:44 首次发布