public function testSubMatrices()
 {
     $c = MatrixFactory::fromArray(array(array(-2, 1, -1), array(-3, -6, -2)));
     $this->assertEquals($c->getArray(), $this->X->sub($this->Y)->getArray());
 }
Beispiel #2
0
 public function testMatrixFromOneRowArray()
 {
     $array = array(1, 2, 3);
     $matrix = MatrixFactory::fromArray($array);
     $this->assertEquals(array($array), $matrix->getArray());
 }
Beispiel #3
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();
 }