Added function comments
All checks were successful
Merge-Checker / build_and_test (pull_request) Successful in 23s
All checks were successful
Merge-Checker / build_and_test (pull_request) Successful in 23s
This commit is contained in:
@@ -216,8 +216,24 @@ public:
|
|||||||
return vec1.Get(0, 0) * vec2.Get(0, 0);
|
return vec1.Get(0, 0) * vec2.Get(0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Performs QR decomposition on this matrix
|
||||||
|
* @param Q a buffer that will contain Q after the function completes
|
||||||
|
* @param R a buffer that will contain R after the function completes
|
||||||
|
*/
|
||||||
void QRDecomposition(Matrix<rows, rows> &Q, Matrix<rows, rows> &R) const;
|
void QRDecomposition(Matrix<rows, rows> &Q, Matrix<rows, rows> &R) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Uses QR decomposition to efficiently calculate the eigenvectors and
|
||||||
|
* values of this matrix
|
||||||
|
* @param eigenVectors a buffer that will contain the eigenvectors fo this
|
||||||
|
* matrix
|
||||||
|
* @param eigenValues a buffer that will contain the eigenValues fo this
|
||||||
|
* matrix
|
||||||
|
* @param maxIterations the number of iterations to perform before giving up
|
||||||
|
* on reaching the given tolerance
|
||||||
|
* @param tolerance the level of accuracy to obtain before stopping.
|
||||||
|
*/
|
||||||
void EigenQR(Matrix<rows, rows> &eigenVectors, Matrix<rows, 1> &eigenValues,
|
void EigenQR(Matrix<rows, rows> &eigenVectors, Matrix<rows, 1> &eigenValues,
|
||||||
uint16_t maxIterations = 1000, float tolerance = 1e-6f) const;
|
uint16_t maxIterations = 1000, float tolerance = 1e-6f) const;
|
||||||
|
|
||||||
|
|||||||
@@ -353,7 +353,9 @@ TEST_CASE("Elementary Matrix Operations", "Matrix") {
|
|||||||
REQUIRE(mat4.Get(0, 1) == 11);
|
REQUIRE(mat4.Get(0, 1) == 11);
|
||||||
REQUIRE(mat4.Get(0, 2) == 12);
|
REQUIRE(mat4.Get(0, 2) == 12);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("Advanced Matrix Operations", "Matrix") {
|
||||||
SECTION("2x2 QRDecomposition") {
|
SECTION("2x2 QRDecomposition") {
|
||||||
Matrix<2, 2> A{1.0f, 2.0f, 3.0f, 4.0f};
|
Matrix<2, 2> A{1.0f, 2.0f, 3.0f, 4.0f};
|
||||||
Matrix<2, 2> Q{}, R{};
|
Matrix<2, 2> Q{}, R{};
|
||||||
@@ -392,13 +394,6 @@ TEST_CASE("Elementary Matrix Operations", "Matrix") {
|
|||||||
Matrix<3, 3> Q{}, R{};
|
Matrix<3, 3> Q{}, R{};
|
||||||
A.QRDecomposition(Q, R);
|
A.QRDecomposition(Q, R);
|
||||||
|
|
||||||
std::string strBuf1 = "";
|
|
||||||
Q.ToString(strBuf1);
|
|
||||||
std::cout << "Matrix Q:\n" << strBuf1 << std::endl;
|
|
||||||
strBuf1 = "";
|
|
||||||
R.ToString(strBuf1);
|
|
||||||
std::cout << "Matrix R:\n" << strBuf1 << std::endl;
|
|
||||||
|
|
||||||
// Check that Q * R ≈ A
|
// Check that Q * R ≈ A
|
||||||
Matrix<3, 3> QR{};
|
Matrix<3, 3> QR{};
|
||||||
Q.Mult(R, QR);
|
Q.Mult(R, QR);
|
||||||
|
|||||||
Reference in New Issue
Block a user