/** * * @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(); }
public function testGetRowsCount() { $this->assertEquals(2, $this->A->getRowsCount()); }