菜鸟实现 PHP 二阶、三阶行列式计算和矩阵运算的加、减、乘


 1 <?php  2 
 3 //三阶行列式计算 函数名嘛,看懂就好
 4 function sanjie($array){  5  $k=$array[0]*$array[4]*$array[8]*+$array[1]*$array[5]*$array[6]*+$array[2]*$array[3]*$array[7]-($array[2]*$array[4]*$array[6]*+$array[1]*$array[3]*$array[8]*+$array[0]*$array[5]*$array[7]);  6     echo $k;  7     echo "<br />";  8 }  9 
 10 //二阶行列式计算
 11 function erjie($array){  12 
 13     $k=$array[0]*$array[3]-$array[1]*$array[2];  14     echo $k;  15     echo "<br />";  16 }  17 
 18 
 19 //矩阵运算 加法
 20 function juzhen_plus($array1,$b,$array2){  //b是列数
 21 
 22     $n=count($array1);  23     $c=array();  24     for ($i=0;$i<$n;$i++){  25 
 26         $c[$i]=$array1[$i]+$array2[$i];  27 
 28  }  29     echo "|";  30     for ($i=0;$i<$n;$i++){  31         $j=$i+1;  32         echo $c[$i];  33         echo " ";  34         if($j%$b==0){  35             echo "|";  36             echo "<br />";  37             if ($i!=($n-1))  38                 echo "|";  39  }  40 
 41  }  42     echo "<br />";  43 }  44 
 45 
 46 //矩阵运算 减法
 47 function juzhen_sub($array1,$b,$array2){  48 
 49     $n=count($array1);  50     $c=array();  51     for ($m=0;$m<$n;$m++){  52 
 53         $array2[$m]=0-$array2[$m];  54 
 55  }  56     for ($i=0;$i<$n;$i++){  57 
 58         $c[$i]=$array1[$i]+$array2[$i];  59 
 60  }  61     echo "|";  62     for ($i=0;$i<$n;$i++){  63         $j=$i+1;  64         echo $c[$i];  65         echo " ";  66         if($j%$b==0){  67             echo "|";  68             echo "<br />";  69             if ($i!=($n-1))  70                 echo "|";  71  }  72 
 73  }  74     echo "<br />";  75 }  76 
 77 
 78 //矩阵运算 矩阵X矩阵
 79 function juzhen_mult_ju($array1,$a,$b,$array2,$d,$e){  80     $c=array();  81     if ($b==$d){  82 
 83          for ($i=0;$i<$a;$i++){  84              for ($j=0;$j<$e;$j++){  85                  for ($s=0;$s<=$b;$s++){  86                      $c[$i][$j]=$c[$i][$j]+$array1[$i][$s]*$array2[$s][$j];  87  }  88  }  89  }  90 
 91          echo "|";  92          for ($h=0;$h<$a;$h++){  93              for ($f=0;$f<$e;$f++){  94                  echo $c[$h][$f];  95                  echo " ";  96                  if($f==($e-1)){  97                      echo "|";  98                      echo "<br />";  99                      if ($h!=($a-1)) 100                          echo "|"; 101  } 102 
103  } 104  } 105 
106  } 107     else{ 108         echo "这两个矩阵无法相乘!"; 109  } 110     echo "<br />"; 111 } 112 
113 
114 
115 //矩阵运算 常数X矩阵
116 function juzhen_mult_shu($array1,$b,$d){ 117 
118     $n=count($array1); 119     $c=array(); 120     for ($i=0;$i<$n;$i++){ 121 
122         $c[$i]=$array1[$i]*$d; 123 
124  } 125     echo "|"; 126     for ($i=0;$i<$n;$i++){ 127         $j=$i+1; 128         echo $c[$i]; 129         echo " "; 130         if($j%$b==0){ 131             echo "|"; 132             echo "<br />"; 133             if ($i!=($n-1)) 134                 echo "|"; 135  } 136 
137  } 138 
139     echo "<br />"; 140 } 141 
142 
143 
144 $array1=array(5,15,6,7);//用作二阶行列式
145 $array2=array(5,15,6,7,2,1,5,6,7);//用作三阶行列式
146 $array3=array(100,15,6,35,35,5);//用作3行2列
147 $array4=array(5,5,6,7,50,5);//2行3列或作3行2列来用
148 
149 $array5=array  
150 ( 151     array(10,1),
152     array(6,3),
153     array(5,7) 154 ); 155 //$array6=array(5,5,6,7,5,5,8,6);
156 $array6=array
157 ( 158     array(5,5,6,7),
159     array(8,9,2,6) 160 ); 161 
162 sanjie($array2); 163 erjie($array1); 164 juzhen_plus($array3,2,$array4);//
165 juzhen_sub($array3,2,$array4);//
166 juzhen_mult_ju($array5,3,2,$array6,2,4);//
167 juzhen_mult_shu($array3,3,3);//

  运算结果如下:

 

 

  除法的话,放在下一篇。

  上述代码纯属菜鸟练手之作。

  在得知更好的方法之前不妨先用最笨的方法试试,加深印象。

  哈哈,欢迎吐槽。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM