Exemplo n.º 1
0
 /**
  *
  * @static
  * @param Matrix $C
  * @param Matrix $P
  * @param Matrix $b
  * @return Matrix
  */
 public static function LUP_solve($C, $P, $b)
 {
     // TODO : Проверка входных
     $n = $C->getRowsCount();
     $y = array();
     for ($i = 0; $i < $n; $i++) {
         $sum = 0;
         for ($j = 0; $j < $i; $j++) {
             $sum += $C->getElem($i, $j) * $y[$j];
         }
         $y[$i] = $b->getElem($P[$i], 0) - $sum;
     }
     $x = array();
     for ($i = $n - 1; $i >= 0; $i--) {
         $sum = 0;
         for ($j = $i + 1; $j < $n; $j++) {
             $sum += $C->getElem($i, $j) * $x[$j];
         }
         $x[$i] = ($y[$i] - $sum) / $C->getElem($i, $i);
     }
     return MatrixFactory::fromArray($x)->T();
 }
Exemplo n.º 2
0
 public function testGetRowsCount()
 {
     $this->assertEquals(2, $this->A->getRowsCount());
 }