function testSolveEC() { $adata = array(array(-4.0, 3.0, -4.0, -1.0), array(-2.0, 0.0, -5.0, 3.0), array(-1.0, -1.0, -3.0, -4.0), array(-3.0, 2.0, 4.0, -1.0)); $bdata = array(-37.0, -20.0, -27.0, 7.0); $res = array(2.0, -2.0, 5.0, 3.0); $a = new Math_Matrix($adata); $b = new Math_Vector($bdata); $x = Math_Matrix::solveEC($a, $b); $t = $x->getTuple(); $this->assertEquals($res, $t->data); }
); $bdata = array(0,4,2); // solution: <4,-2,-2> */ $adata = array(array(-4, 3, -4, -1), array(-2, 0, -5, 3), array(-1, -1, -3, -4), array(-3, 2, 4, -1)); $bdata = array(-37, -20, -27, 7); // solution: <2,-2,5,3> echo "\nSolving another Ax = b\n"; $a = new Math_Matrix($adata); $b = new Math_Vector($bdata); $x = Math_Matrix::solve($a, $b); echo "\nA\n" . $a->toString('%8.4f') . "\n"; echo "B " . $b->toString() . "\n"; echo "Solution " . $x->toString() . "\n"; echo "\nSolving with error correction\n"; $x = Math_Matrix::solveEC($a, $b); echo "EC Solution " . $x->toString() . "\n"; $Adata = array(array(1, 1, 2), array(2, 3, 4)); $Bdata = array(array(-1, 3), array(-3, 4), array(-5, 2)); $A = new Math_Matrix($Adata); $A1 = $A->clone(); $B = new Math_Matrix($Bdata); $B1 = $B->clone(); $A1->multiply($B1); $B->multiply($A); echo $A1->toString() . "\n"; echo $B->toString() . "\n"; /* echo "\n"; $data = array ( array(1,0,1),
function testSolveEC() { $adata = array(array(-4.0, 3.0, -4.0, -1.0), array(-2.0, 0.0, -5.0, 3.0), array(-1.0, -1.0, -3.0, -4.0), array(-3.0, 2.0, 4.0, -1.0)); $bdata = array(-37.0, -20.0, -27.0, 7.0); $res = array(2.0, -2.0, 5.0, 3.0); $resVector = new Math_Vector($res); $a = new Math_Matrix($adata); $b = new Math_Vector($bdata); $x = Math_Matrix::solveEC($a, $b); $this->assertEquals($resVector->toString(), $x->toString()); }