-
-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Replace Gram-Schmidt orthogonalisation with better algorithm #679
Comments
The above function is now in math.h. The Gram-Schmidt process constructs the Q matrix in-place whereas the R matrix can be constructed by collecting the One alternative is the Householder reflection algorithm which constructs the R matrix in-place which is not sought here. However, the current implementation is Classical Gram-Schmidt can easily be changed to the numerically stable modified Gram-Schmidt:
|
This orthogonalisation is now used in fewer places than it once was, so modified Gram-Schmidt should be good enough. Do you want to open a pull request to make the modification you suggested? |
This only affects the custom element creation? |
…S#679) * change the orthogonalization algorithm to modified gram schmidt * norm is precomputed * first check row rank before orthogonalizing the rows
…S#679) * change the orthogonalization algorithm to modified gram schmidt * norm is precomputed * first check row rank before orthogonalizing the rows
…S#679) * change the orthogonalization algorithm to modified gram schmidt * norm is precomputed * first check row rank before orthogonalizing the rows
The existing implementation is neither the classical Gram Schmidt or the more commonly known modified Gram Schmidt. None the less the commonly known modified Gram Schmidt is added by #785 |
When elements are created, the polynomial basis is orthogonalised:
basix/cpp/basix/finite-element.cpp
Lines 41 to 62 in 0fc130f
This orthogonalisation currently uses the Gram-Schmidt process. Instead, we should use a better algorithm (eg. Computing Q from the QR decomposition of A^T)
The text was updated successfully, but these errors were encountered: