-
Notifications
You must be signed in to change notification settings - Fork 47
Block Lanczos for Multiple eigenvalues #125
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
Merged
Merged
Changes from 1 commit
Commits
Show all changes
82 commits
Select commit
Hold shift + click to select a range
c734c45
I have remove all tab
yuiyuiui adbaf1a
remove blocklanczos.md, all tabs and polish codes to be more easy to …
yuiyuiui 7ad9583
review
GiggleLiu 055c154
inner product version
yuiyuiui 29447c7
mutable block lanczos and tests to be added
yuiyuiui bf0b9fa
save
yuiyuiui 3292f8d
add test for abstract_qr
yuiyuiui 040577d
the last test of block lanczos facorizations to do
yuiyuiui 6156985
format
yuiyuiui e4c2d64
revise format
yuiyuiui 6ea0000
format revise
yuiyuiui 0a10ca6
save
yuiyuiui a2febc6
format
yuiyuiui fbaf863
format
yuiyuiui d5a4618
revise project.toml
yuiyuiui ac130a2
I am ready
yuiyuiui bb7ea72
firmat
yuiyuiui a9f0d13
add interface for single vector (element in an abstract inner produnc…
yuiyuiui 72d7dbd
revise Project.toml
yuiyuiui 706f7c8
add references
yuiyuiui 5755e92
revise reference
yuiyuiui 2c0320e
update
yuiyuiui 696aa68
update
yuiyuiui aa7da7a
to add restart
yuiyuiui 61bfa13
to revise test for block lanczos with shrink
yuiyuiui b3f2c89
update
yuiyuiui 124b6f2
update
yuiyuiui 7e98d85
save
yuiyuiui b8f2f0f
add shrink
yuiyuiui 29da1e7
add shrink
yuiyuiui ba12f42
uodate
yuiyuiui 52d0f6c
update
yuiyuiui 2885493
save
yuiyuiui 07c2f03
eager to add
yuiyuiui 693edc3
add test for eager
yuiyuiui 6ddd467
when blocksize = 1, the efficiency of lanczos and block lanczos is al…
yuiyuiui 83e9b9f
revise what review mentions and add annotation
yuiyuiui 4cf09ae
Added some comments, modified the parameters of , and formatted the f…
yuiyuiui 41d3a24
save
yuiyuiui 3611d5b
Blcok lanczos runs with :inplace
yuiyuiui 0aa7eb1
run for :inplace and all origin tests pass. Now revise tests
yuiyuiui 040b648
I have changed my code to keep the same style with original Lanczos m…
yuiyuiui c7196b9
test document
yuiyuiui d6abcf6
test document
yuiyuiui b3e5c87
test document
yuiyuiui 082e34b
test document
yuiyuiui 18c5ad0
add explanation of BlockLanczos lockLanczosFactorization and BlockLan…
yuiyuiui f465f9e
add document
yuiyuiui 2a89360
add more in document and revise a error in origin document
yuiyuiui 01fddd9
revise some reference, shrink!() to add
yuiyuiui da6f153
revise docstring
yuiyuiui dd8f098
fix bug and all tests pass
yuiyuiui ddf8d45
some revise according to review suggestion
yuiyuiui ddc20cb
some revise according to review suggestions
yuiyuiui 58ca053
some revise
yuiyuiui 69a6630
revise of review
yuiyuiui 86abfeb
format and some revise
yuiyuiui 8ad491f
revise for review
yuiyuiui 9557400
format
yuiyuiui 7f7bdf1
try to pass all tests in github
yuiyuiui 4653e99
try to pass CI
yuiyuiui ed89305
format with the lastest JuliaFormatter
yuiyuiui 79a7cd8
When the Julia version is lower and multi-threading is used, we will …
yuiyuiui a08b2b5
Different from the last commit, we don't ignore any test. We change s…
yuiyuiui 9b3ce65
All checks have passed
yuiyuiui 1ee3b71
Update docs/src/man/implementation.md
yuiyuiui afb1eb7
revise for review
yuiyuiui 883ffce
revise for review
yuiyuiui 52db1aa
revise for review
yuiyuiui fb5a49d
revise for review
yuiyuiui 5daae2e
revise for review
yuiyuiui e28f4bc
revise for review
yuiyuiui 4624426
format
yuiyuiui b93ad1a
revise for review
yuiyuiui 7f44f38
revise for review
yuiyuiui 69ea50a
revise for review
421e188
revise for review
ff5f5cb
Rename Block.jl to block.jl
e7dfd88
revise for review
73f3df8
format
e019fb7
remove in docstring
392ebc6
revise for review
yuiyuiui File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
yuiyuiui marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,43 @@ | ||
| # General Block Lanczos | ||
| $A$ is a Hermitian matrix, | ||
| $$A = Q T Q'$$ | ||
|
|
||
| $T$ is a tridiagonal matrix, | ||
| $$T = \begin{pmatrix} | ||
| \alpha_1 & \beta_1 \\ | ||
| \beta_1 & \alpha_2 & \beta_2 \\ | ||
| & \beta_2 & \ddots & \ddots \\ | ||
| && \ddots & \alpha_{n-1} & \beta_{n-1} \\ | ||
| &&& \beta_{n-1} & \alpha_n | ||
| \end{pmatrix}$$ | ||
|
|
||
| But $\beta \neq 0$ and thus eigenvalues of $T$ are different from each other. | ||
|
|
||
| To get multiple eigenvalues, we can use block Lanczos. | ||
|
|
||
| $$A = Q T Q', \quad Q = [X_1|..|X_n],\quad \text{size}(X_i) = (p,p)$$ | ||
|
|
||
| $$T = \begin{pmatrix} | ||
| M_1 & B_1'\\ | ||
| B_1 & M_2 & B_2'\\ | ||
| & B_2 & \ddots & \ddots \\ | ||
| && \ddots & M_{n-1} & B_{n-1}'\\ | ||
| &&& B_{n-1} & M_n | ||
| \end{pmatrix}$$ | ||
|
|
||
| It's advantage is to get multiple eigenvalues. But it's disadvantage is that it can cause ghost eigenvalues because of the loss of orthogonality of the Lanczos vectors. | ||
|
|
||
| So my solution is to make sure each $X_i$ we get is orthogonal to $X_{i_1},..,X_1$: | ||
|
|
||
| $$X_i = X_i - Q_{i-1}*(Q_{i-1}'X_i)\\ | ||
| Q_{i-1} = [X_1|..|X_{i-1}] | ||
| $$ | ||
|
|
||
| I use Modified Schidi's method to force the orthogonality of the basis And use some skills to improve the method and speed up. | ||
|
|
||
| # Difference between Block Lanczos and Lanczos in code | ||
|
|
||
| 1. I don't use inner because it maps a couple of matrix to a scalar. | ||
| 2. I have add test to make sure Block Lanczos can work for map input | ||
| 3. I add SaprseArray to do test for sparse matrix input | ||
|
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.