FIX: Accuracy Issue Due to Pseudo Inverse #129
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When solving the linear system for the equivalent densities from the check potential we use a pseudo inverse, however this is a source of error due to the pseudo inverse which comes from multiplying its factors together as the diagonal matrix of singular values has very small/large numbers. This is alleviated by multiplying the diagonal matrix of singular values by either the left or right singular vectors, and storing the pseudo inverse in two components. This is known as the backward-stable pseudo inverse, though i haven't listed all of the details here, they can be found in the original paper of PVFMM. This fixes accuracies obtained in the FMM, and we are able to get all the digits we expect for higher orders.