Advertisement
chmdznr

power of matrix

Sep 8th, 2014
335
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.09 KB | None | 0 0
  1. set_time_limit(0);
  2.  
  3. function mkonematrix ($rows, $cols) {
  4.     $mx = array();
  5.     for ($i=0; $i<$rows; $i++) {
  6.     for ($j=0; $j<$cols; $j++) {
  7.         $mx[$i][$j] = ($i==$j);
  8.     }
  9.     }
  10.     return $mx;
  11. }
  12.  
  13. function mmult($m1, $m2) {
  14.     $m3=array();
  15.     for ($i=0; $i<count($m1); $i++) {
  16.         for ($j=0; $j<count($m2[0]); $j++) {
  17.             $x=0;
  18.             for ($k=0; $k<count($m1[0]); $k++) {
  19.                 $x+=$m1[$i][$k] * $m2[$k][$j];
  20.             }
  21.             $m3[$i][$j]=$x;
  22.         }
  23.     }
  24.     return $m3;
  25. }
  26.  
  27. function mat_pow($a, $n)
  28. {
  29.     $res=array();
  30.     $res=mkonematrix(count($a), count($a[0]));
  31.  
  32.     while ($n > 0) {
  33.         if ($n % 2 == 0)
  34.         {
  35.         $a=mmult( $a, $a);
  36.             $n /= 2;
  37.         }
  38.         else {
  39.         $res=mmult($res, $a);
  40.             $n--;
  41.         }
  42.     }
  43.    
  44.     return $res;
  45. }
  46.  
  47. function print_matrix($mat) {
  48.     echo '<table cellspacing="4" cellpadding="2">';
  49.     for($i=0;$i<count($mat);$i++){
  50.         echo '<tr>';
  51.         for($j=0;$j<count($mat[$i]);$j++){
  52.             echo '<td>'.number_format($mat[$i][$j], 4).'</td>';
  53.         }
  54.         echo '</tr>';
  55.     }
  56.     echo '</table>';
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement