Integrating up through commit 90f050496

This commit is contained in:
alexpete
2021-04-07 14:03:29 -07:00
parent 8f2ed080a9
commit c2cbd430fe
2694 changed files with 285622 additions and 176874 deletions
@@ -61,8 +61,8 @@ namespace NumericalMethods::Eigenanalysis
double a00, double a01, double a02, double a11, double a12, double a22, double val
)
{
// By definition, (AeI)v = 0, where e is the eigenvalue and v is the corresponding eigenvector to be found.
// This condition implies that the rows (AeI) must be perpendicular to v. This matrix must have rank 2, so two
// By definition, (A-e*I)v = 0, where e is the eigenvalue and v is the corresponding eigenvector to be found.
// This condition implies that the rows (A-e*I) must be perpendicular to v. This matrix must have rank 2, so two
// rows will be linearly dependent. For those two rows, the cross product will be (nearly) zero. So to find v,
// we can simply take the cross product of the two rows that maximize its magnitude.
VectorVariable row0 = VectorVariable::CreateFromVector({ a00 - val, a01, a02 });
@@ -31,7 +31,7 @@ namespace NumericalMethods::Eigenanalysis
// A - the symmetric input matrix
// a<ij> - the upper elements of the matrix (0 <= i <= j <= 2).
// B - a matrix derived from A, such that B = (A - q*I)/p where
// p = sqrt( tr( (AqI)^2 ) / 6 )
// p = sqrt( tr( (A-q*I)^2 ) / 6 )
// q = tr(A) / 3
// beta<i> - the eigenvalues of B (0 <= i <= 2)
// alpha<i> - the eigenvalues of A (not explicit, stored in the result) (0 <= i <= 2)