function testSolve() { $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::solve($a, $b); $t = $x->getTuple(); $this->assertEquals($res, $t->data); }
/* $adata = array( array(1,1,1), array(1,-2,2), array(1,2,-1) ); $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";
<?php // performs matrix functions to fit a template to a 3-point delineation require_once $_SERVER['DOCUMENT_ROOT'] . '/include/main_func.php'; auth(); include_once "Math/Matrix.php"; $temPoints = $_POST['temPoints']; $eyeclicks = $_POST['eyeclicks']; $original = array(array($temPoints[0]['x'], $temPoints[0]['y'], 1.0), array($temPoints[1]['x'], $temPoints[1]['y'], 1.0), array($temPoints[2]['x'], $temPoints[2]['y'], 1.0)); $m = new Math_Matrix($original); $xnew = array($eyeclicks[0]['x'], $eyeclicks[1]['x'], $eyeclicks[2]['x']); $ynew = array($eyeclicks[0]['y'], $eyeclicks[1]['y'], $eyeclicks[2]['y']); $xvector = new Math_Vector($xnew); $yvector = new Math_Vector($ynew); $m1 = $m->cloneMatrix(); $x = @Math_Matrix::solve($m1, $xvector); $a = round($x->get(0), 3); $b = round($x->get(1), 3); $c = round($x->get(2), 3); $m2 = $m->cloneMatrix(); $y = @Math_Matrix::solve($m2, $yvector); $d = round($y->get(0), 3); $e = round($y->get(1), 3); $f = round($y->get(2), 3); $variables = array('a' => $a, 'b' => $b, 'c' => $c, 'd' => $d, 'e' => $e, 'f' => $f, 'fitPoints' => $_POST['fitPoints']); echo json_encode($variables); exit;
function testSolve() { $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::solve($a, $b); $this->assertEquals($resVector->toString(), $x->toString()); }