function testInvert() { $unit = Math_Matrix::makeUnit(4); $q = new Math_Matrix($this->data); $p = $q->clone(); $q->invert(); $p->multiply($q); $this->assertEquals($unit->getData(), $p->getData()); }
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), array(1,1,1), array(1,1,0), ); $m = new Math_Matrix($data); echo $m->toString()."\n"; $det = $m->determinant(); echo "Determinant = $det\n";
function testMultiply() { $Adata = array(array(1, 1, 2), array(2, 3, 4)); $Bdata = array(array(-1, 3), array(-3, 4), array(-5, 2)); $ABdata = array(array(-14, 11), array(-31, 26)); $BAdata = array(array(5, 8, 10), array(5, 9, 10), array(-1, 1, -2)); $A = new Math_Matrix($Adata); $A1 = $A->clone(); $B = new Math_Matrix($Bdata); $B1 = $B->clone(); $A1->multiply($B); $B1->multiply($A); $AB = new Math_Matrix($ABdata); $BA = new Math_Matrix($BAdata); $this->assertEquals($A1->toString(), $AB->toString()); $this->assertEquals($B1->toString(), $BA->toString()); }