mirror of
https://github.com/Karaka-Management/phpOMS.git
synced 2026-01-22 06:18:41 +00:00
fix tests
This commit is contained in:
parent
1f9f97f8d9
commit
90b807093b
|
|
@ -569,7 +569,7 @@ class Matrix implements \ArrayAccess, \Iterator
|
|||
$newMatrixArr = $this->matrix;
|
||||
|
||||
foreach ($newMatrixArr as $i => $vector) {
|
||||
foreach ($vector as $j => $value) {
|
||||
foreach ($vector as $j => $_) {
|
||||
$newMatrixArr[$i][$j] *= $scalar;
|
||||
}
|
||||
}
|
||||
|
|
@ -913,21 +913,20 @@ class Matrix implements \ArrayAccess, \Iterator
|
|||
throw new InvalidDimensionException($this->m . 'x' . $this->n);
|
||||
}
|
||||
|
||||
$identity = new IdentityMatrix($this->m);
|
||||
$matrix = $identity;
|
||||
$sum = new IdentityMatrix($this->m);
|
||||
|
||||
$factorial = 1;
|
||||
$pow = clone $matrix;
|
||||
$pow = clone $sum;
|
||||
|
||||
for ($i = 1; $i <= $iterations; ++$i) {
|
||||
$factorial *= $i;
|
||||
$coeff = 1 / $factorial;
|
||||
|
||||
$term = clone $pow->mult($this);
|
||||
$matrix = $matrix->add($term->mult($coeff));
|
||||
$pow = $pow->mult($this);
|
||||
$sum = $sum->add($pow->mult($coeff));
|
||||
}
|
||||
|
||||
return $matrix;
|
||||
return $sum;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ final class MetricsND
|
|||
*/
|
||||
public static function cosine(array $a, array $b) : float
|
||||
{
|
||||
if (($length = \count($a)) !== \count($b)) {
|
||||
if (\count($a) !== \count($b)) {
|
||||
throw new InvalidDimensionException(\count($a) . 'x' . \count($b));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,11 +26,14 @@ use phpOMS\Math\Optimization\Simplex;
|
|||
*/
|
||||
final class SimplexTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testSimplex() : void
|
||||
public function testSimplexBasicInfeasible() : void
|
||||
{
|
||||
$simplex = new Simplex();
|
||||
self::assertEquals(
|
||||
[],
|
||||
self::assertEqualsWithDelta(
|
||||
[
|
||||
[11.333333, 3.333333, 0.0, 11.666667, 0.0],
|
||||
21.333333
|
||||
],
|
||||
$simplex->solve(
|
||||
[
|
||||
[-1, 1],
|
||||
|
|
@ -39,15 +42,19 @@ final class SimplexTest extends \PHPUnit\Framework\TestCase
|
|||
],
|
||||
[8, -3, 2],
|
||||
[1, 3]
|
||||
)
|
||||
),
|
||||
0.01
|
||||
);
|
||||
}
|
||||
|
||||
public function testSimplexBasicFeasible() : void
|
||||
{
|
||||
$simplex = new Simplex();
|
||||
self::assertEquals(
|
||||
[],
|
||||
self::assertEqualsWithDelta(
|
||||
[
|
||||
[1.0, 0.0, 0.0, 0.0],
|
||||
5.0
|
||||
],
|
||||
$simplex->solve(
|
||||
[
|
||||
[-1, 1],
|
||||
|
|
@ -55,24 +62,8 @@ final class SimplexTest extends \PHPUnit\Framework\TestCase
|
|||
],
|
||||
[1, 2],
|
||||
[5, -3]
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public function testSimplexBasicInfeasible() : void
|
||||
{
|
||||
$simplex = new Simplex();
|
||||
self::assertEquals(
|
||||
[],
|
||||
$simplex->solve(
|
||||
[
|
||||
[-1, 1],
|
||||
[1, 1],
|
||||
[1, -4],
|
||||
],
|
||||
[8, -3, 2],
|
||||
[1, 3]
|
||||
)
|
||||
),
|
||||
0.0
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -80,7 +71,10 @@ final class SimplexTest extends \PHPUnit\Framework\TestCase
|
|||
{
|
||||
$simplex = new Simplex();
|
||||
self::assertEquals(
|
||||
[],
|
||||
[
|
||||
[\INF, \INF],
|
||||
\INF
|
||||
],
|
||||
$simplex->solve(
|
||||
[
|
||||
[-1, -1],
|
||||
|
|
@ -95,8 +89,11 @@ final class SimplexTest extends \PHPUnit\Framework\TestCase
|
|||
public function testSimplexLPUnbound() : void
|
||||
{
|
||||
$simplex = new Simplex();
|
||||
self::assertEquals(
|
||||
[],
|
||||
self::assertEqualsWithDelta(
|
||||
[
|
||||
[\INF, \INF],
|
||||
\INF
|
||||
],
|
||||
$simplex->solve(
|
||||
[
|
||||
[2, -1],
|
||||
|
|
@ -104,7 +101,8 @@ final class SimplexTest extends \PHPUnit\Framework\TestCase
|
|||
],
|
||||
[-1, -2],
|
||||
[1, -1]
|
||||
)
|
||||
),
|
||||
0.01
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,91 +25,91 @@ final class Kernel2DTest extends \PHPUnit\Framework\TestCase
|
|||
{
|
||||
public function testUniform() : void
|
||||
{
|
||||
self::assertEquals(0.5, Kernel2D::uniformKernel(0, 1));
|
||||
self::assertEquals(0.5, Kernel2D::uniformKernel(-1, 1));
|
||||
self::assertEquals(0.5, Kernel2D::uniformKernel(1, 1));
|
||||
self::assertEquals(0.5, Kernel2D::uniformKernel(0, 2));
|
||||
self::assertEquals(0.5, Kernel2D::uniformKernel(-1, 2));
|
||||
self::assertEquals(0.5, Kernel2D::uniformKernel(1, 2));
|
||||
|
||||
self::assertEquals(0.0, Kernel2D::uniformKernel(2, 1));
|
||||
self::assertEquals(0.0, Kernel2D::uniformKernel(-2, 1));
|
||||
self::assertEquals(0.0, Kernel2D::uniformKernel(2, 2));
|
||||
self::assertEquals(0.0, Kernel2D::uniformKernel(-2, 2));
|
||||
}
|
||||
|
||||
public function testTriangle() : void
|
||||
{
|
||||
self::assertEquals(1.0, Kernel2D::triangularKernel(0, 1));
|
||||
self::assertEquals(0.0, Kernel2D::triangularKernel(-1, 1));
|
||||
self::assertEquals(0.0, Kernel2D::triangularKernel(1, 1));
|
||||
self::assertEquals(1.0, Kernel2D::triangularKernel(0, 2));
|
||||
self::assertEquals(0.0, Kernel2D::triangularKernel(-1, 2));
|
||||
self::assertEquals(0.0, Kernel2D::triangularKernel(1, 2));
|
||||
|
||||
self::assertEquals(0.0, Kernel2D::triangularKernel(2, 1));
|
||||
self::assertEquals(0.0, Kernel2D::triangularKernel(-2, 1));
|
||||
self::assertEquals(0.0, Kernel2D::triangularKernel(2, 2));
|
||||
self::assertEquals(0.0, Kernel2D::triangularKernel(-2, 2));
|
||||
}
|
||||
|
||||
public function testEpanechnikov() : void
|
||||
{
|
||||
self::assertEquals(3 / 4, Kernel2D::epanechnikovKernel(0, 1));
|
||||
self::assertEquals(0.0, Kernel2D::epanechnikovKernel(-1, 1));
|
||||
self::assertEquals(0.0, Kernel2D::epanechnikovKernel(1, 1));
|
||||
self::assertEquals(3 / 4, Kernel2D::epanechnikovKernel(0, 2));
|
||||
self::assertEquals(0.0, Kernel2D::epanechnikovKernel(-1, 2));
|
||||
self::assertEquals(0.0, Kernel2D::epanechnikovKernel(1, 2));
|
||||
|
||||
self::assertEquals(0.0, Kernel2D::epanechnikovKernel(2, 1));
|
||||
self::assertEquals(0.0, Kernel2D::epanechnikovKernel(-2, 1));
|
||||
self::assertEquals(0.0, Kernel2D::epanechnikovKernel(2, 2));
|
||||
self::assertEquals(0.0, Kernel2D::epanechnikovKernel(-2, 2));
|
||||
}
|
||||
|
||||
public function testQuartic() : void
|
||||
{
|
||||
self::assertEquals(15 / 6, Kernel2D::quarticKernel(0, 1));
|
||||
self::assertEquals(0.0, Kernel2D::quarticKernel(-1, 1));
|
||||
self::assertEquals(0.0, Kernel2D::quarticKernel(1, 1));
|
||||
self::assertEquals(15 / 6, Kernel2D::quarticKernel(0, 2));
|
||||
self::assertEquals(0.0, Kernel2D::quarticKernel(-1, 2));
|
||||
self::assertEquals(0.0, Kernel2D::quarticKernel(1, 2));
|
||||
|
||||
self::assertEquals(0.0, Kernel2D::quarticKernel(2, 1));
|
||||
self::assertEquals(0.0, Kernel2D::quarticKernel(-2, 1));
|
||||
self::assertEquals(0.0, Kernel2D::quarticKernel(2, 2));
|
||||
self::assertEquals(0.0, Kernel2D::quarticKernel(-2, 2));
|
||||
}
|
||||
|
||||
public function testTriweight() : void
|
||||
{
|
||||
self::assertEquals(35 / 32, Kernel2D::triweightKernel(0, 1));
|
||||
self::assertEquals(0.0, Kernel2D::triweightKernel(-1, 1));
|
||||
self::assertEquals(0.0, Kernel2D::triweightKernel(1, 1));
|
||||
self::assertEquals(35 / 32, Kernel2D::triweightKernel(0, 2));
|
||||
self::assertEquals(0.0, Kernel2D::triweightKernel(-1, 2));
|
||||
self::assertEquals(0.0, Kernel2D::triweightKernel(1, 2));
|
||||
|
||||
self::assertEquals(0.0, Kernel2D::triweightKernel(2, 1));
|
||||
self::assertEquals(0.0, Kernel2D::triweightKernel(-2, 1));
|
||||
self::assertEquals(0.0, Kernel2D::triweightKernel(2, 2));
|
||||
self::assertEquals(0.0, Kernel2D::triweightKernel(-2, 2));
|
||||
}
|
||||
|
||||
public function testTricube() : void
|
||||
{
|
||||
self::assertEquals(70 / 81, Kernel2D::tricubeKernel(0, 1));
|
||||
self::assertEquals(0.0, Kernel2D::tricubeKernel(-1, 1));
|
||||
self::assertEquals(0.0, Kernel2D::tricubeKernel(1, 1));
|
||||
self::assertEquals(70 / 81, Kernel2D::tricubeKernel(0, 2));
|
||||
self::assertEquals(0.0, Kernel2D::tricubeKernel(-1, 2));
|
||||
self::assertEquals(0.0, Kernel2D::tricubeKernel(1, 2));
|
||||
|
||||
self::assertEquals(0.0, Kernel2D::tricubeKernel(2, 1));
|
||||
self::assertEquals(0.0, Kernel2D::tricubeKernel(-2, 1));
|
||||
self::assertEquals(0.0, Kernel2D::tricubeKernel(2, 2));
|
||||
self::assertEquals(0.0, Kernel2D::tricubeKernel(-2, 2));
|
||||
}
|
||||
|
||||
public function testGaussian() : void
|
||||
{
|
||||
self::assertEquals(1 / \sqrt(2 * \M_PI), Kernel2D::gaussianKernel(0, 1));
|
||||
self::assertEquals(0.0, Kernel2D::gaussianKernel(-1, 1));
|
||||
self::assertEquals(0.0, Kernel2D::gaussianKernel(1, 1));
|
||||
self::assertEquals(1 / \sqrt(2 * \M_PI), Kernel2D::gaussianKernel(0, 2));
|
||||
self::assertEquals(0.0, Kernel2D::gaussianKernel(-1, 2));
|
||||
self::assertEquals(0.0, Kernel2D::gaussianKernel(1, 2));
|
||||
|
||||
self::assertEquals(0.0, Kernel2D::gaussianKernel(2, 1));
|
||||
self::assertEquals(0.0, Kernel2D::gaussianKernel(-2, 1));
|
||||
self::assertEquals(0.0, Kernel2D::gaussianKernel(2, 2));
|
||||
self::assertEquals(0.0, Kernel2D::gaussianKernel(-2, 2));
|
||||
}
|
||||
|
||||
public function testCosine() : void
|
||||
{
|
||||
self::assertEquals(\M_PI / 4, Kernel2D::cosineKernel(0, 1));
|
||||
self::assertEquals(0.0, Kernel2D::cosineKernel(-1, 1));
|
||||
self::assertEquals(0.0, Kernel2D::cosineKernel(1, 1));
|
||||
self::assertEquals(\M_PI / 4, Kernel2D::cosineKernel(0, 2));
|
||||
self::assertEquals(0.0, Kernel2D::cosineKernel(-1, 2));
|
||||
self::assertEquals(0.0, Kernel2D::cosineKernel(1, 2));
|
||||
|
||||
self::assertEquals(0.0, Kernel2D::cosineKernel(2, 1));
|
||||
self::assertEquals(0.0, Kernel2D::cosineKernel(-2, 1));
|
||||
self::assertEquals(0.0, Kernel2D::cosineKernel(2, 2));
|
||||
self::assertEquals(0.0, Kernel2D::cosineKernel(-2, 2));
|
||||
}
|
||||
|
||||
public function testLogistic() : void
|
||||
{
|
||||
self::assertEquals(0.5, Kernel2D::logisticKernel(0, 1));
|
||||
self::assertEquals(0.0, Kernel2D::logisticKernel(-1, 1));
|
||||
self::assertEquals(0.0, Kernel2D::logisticKernel(1, 1));
|
||||
self::assertEquals(0.5, Kernel2D::logisticKernel(0, 2));
|
||||
self::assertEquals(0.0, Kernel2D::logisticKernel(-1, 2));
|
||||
self::assertEquals(0.0, Kernel2D::logisticKernel(1, 2));
|
||||
|
||||
self::assertEquals(0.0, Kernel2D::logisticKernel(2, 1));
|
||||
self::assertEquals(0.0, Kernel2D::logisticKernel(-2, 1));
|
||||
self::assertEquals(0.0, Kernel2D::logisticKernel(2, 2));
|
||||
self::assertEquals(0.0, Kernel2D::logisticKernel(-2, 2));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ final class RequestAbstractTest extends \PHPUnit\Framework\TestCase
|
|||
|
||||
public function testDataAllInputOutput() : void
|
||||
{
|
||||
$this->request->set('asdf', false);
|
||||
$this->request->setData('asdf', false);
|
||||
self::assertFalse(['asdf' => false], $this->request->getData());
|
||||
}
|
||||
|
||||
|
|
@ -108,7 +108,7 @@ final class RequestAbstractTest extends \PHPUnit\Framework\TestCase
|
|||
*/
|
||||
public function testDataJsonInputOutput() : void
|
||||
{
|
||||
$this->request->set('asdf', '[1,2,3]');
|
||||
$this->request->setData('asdf', '[1,2,3]');
|
||||
self::assertEquals([1,2,3], $this->request->getDataJson('asdf'));
|
||||
self::assertEquals([1,2,3], $this->request->getData('asdf', 'json'));
|
||||
}
|
||||
|
|
@ -118,7 +118,7 @@ final class RequestAbstractTest extends \PHPUnit\Framework\TestCase
|
|||
*/
|
||||
public function testDataStringInputOutput() : void
|
||||
{
|
||||
$this->request->set('asdf', 1);
|
||||
$this->request->setData('asdf', 1);
|
||||
self::assertEquals('1', $this->request->getDataString('asdf'));
|
||||
self::assertEquals('1', $this->request->getData('asdf', 'string'));
|
||||
}
|
||||
|
|
@ -128,7 +128,7 @@ final class RequestAbstractTest extends \PHPUnit\Framework\TestCase
|
|||
*/
|
||||
public function testDataBoolInputOutput() : void
|
||||
{
|
||||
$this->request->set('asdf', 1);
|
||||
$this->request->setData('asdf', 1);
|
||||
self::assertEquals(true, $this->request->getDataBool('asdf'));
|
||||
self::assertEquals(true, $this->request->getData('asdf', 'bool'));
|
||||
}
|
||||
|
|
@ -138,7 +138,7 @@ final class RequestAbstractTest extends \PHPUnit\Framework\TestCase
|
|||
*/
|
||||
public function testDataFloatInputOutput() : void
|
||||
{
|
||||
$this->request->set('asdf', 1);
|
||||
$this->request->setData('asdf', 1);
|
||||
self::assertEquals(1.0, $this->request->getDataFloat('asdf'));
|
||||
self::assertEquals(1.0, $this->request->getData('asdf', 'float'));
|
||||
}
|
||||
|
|
@ -148,14 +148,14 @@ final class RequestAbstractTest extends \PHPUnit\Framework\TestCase
|
|||
*/
|
||||
public function testDataDateTimeInputOutput() : void
|
||||
{
|
||||
$this->request->set('asdf', '2023-01-01');
|
||||
$this->request->setData('asdf', '2023-01-01');
|
||||
self::assertEquals((new \DateTime('2023-01-01'))->format('Y-m-d'), $this->request->getDataDateTime('asdf'));
|
||||
self::assertEquals((new \DateTime('2023-01-01'))->format('Y-m-d'), $this->request->getData('asdf', 'float'));
|
||||
}
|
||||
|
||||
public function testDataInvalidTypeInputOutput() : void
|
||||
{
|
||||
$this->request->set('asdf', 1);
|
||||
$this->request->setData('asdf', 1);
|
||||
self::assertEquals(1, $this->request->getData('asdf', 'invalid'));
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user