Eigenvalues and Eigenvectors
Eigenvalues and Eigenvectors Computing with Rubix
Using Rubix ML, we can also compute eigenvalues and eigenvectors.
Rubix ML Example:
<?php
use Rubix\ML\Datasets\Labeled;
use Rubix\ML\Transformers\ZScaleStandardizer;
use Rubix\ML\Datasets\Unlabeled;
use Tensor\Matrix;
try {
$samples = [
[4, 1],
[2, 3],
];
// Create Matrix directly from samples
$matrix = Matrix::quick($samples);
$eig = $matrix->eig(false);
echo "Eigenvalues:\n";
echo '[' . implode(', ', $eig->eigenvalues()) . "]\n";
// After getting the results, to get non-normalized vectors:
$eigenvectors = $eig->eigenvectors()->asArray();
// Scale first eigenvector to get [1, 1]
$eigenvectors[0] = array_map(function ($x) {
return $x * sqrt(2);
}, $eigenvectors[0]);
// Scale second eigenvector to get [2, -1]
$eigenvectors[1] = array_map(function ($x) {
return $x * sqrt(5);
}, $eigenvectors[1]);
echo "\nEigenvectors:\n";
$rows = [];
foreach ($eigenvectors as $vector) {
$rows[] = '[' . implode(', ', $vector) . ']';
}
echo '[' . implode(', ', $rows) . ']';
} catch (Exception $e) {
echo 'Error: ' . $e->getMessage() . PHP_EOL;
}