How to work with quite large matrices?
4 ビュー (過去 30 日間)
古いコメントを表示
Hi,
i`m working with the state-space matrices (sparse format) for a 3d FEM model which become quite large (DOF >= 400k).
My System is a first order ODE
with quadratic matrices . In order to perform Model order reduction (Arnoldi algorithm) i need to rewrite my system in a form like
where obviously K and L are obtained by leftdivision of A within the equation. Unfortunately i do encounter big problems with the memory due to the size of the matrices.
I`ve already tried to decompose the matrix A using different decomposition algorithms, but nothing suceed so far. How to deal with such a problem?
Tall arrays can also not be applied, since the matrices are sparse and way to large to be computed as full matrices.
Thanks,
Vierl
5 件のコメント
回答 (1 件)
Christine Tobler
2018 年 12 月 6 日
The matrices A\B and A\C are very likely to be dense, even if A, B, C are sparse matrices. Since these are of size 400'000, no matter the method you will run into memory problems, and probably need to use a distributed system and the Parallel Computing Toolbox.
However, are you sure you can't modify the Arnoldi method to directly apply to the generalized system with A, B, and C? This paper, Introduction to Krylov Subspace Methods in Model Order Reduction, seems to say that is possible (see page 4).
5 件のコメント
Christine Tobler
2018 年 12 月 10 日
Sorry for the late follow-up. Is the problem with computing the decomposition of A that this goes out-of-memory, or that A is singular? Or is it that decomposition A works, but then A\K and A\L can't be stored in-memory?
Some ideas, maybe one of them will help:
- There's no need to compute A\K, storing a decomposition of A and the matrix K will allow the computation of A\(K*x) for each step of building the Krylov subspace.
- Maybe the storage needed for a decomposition of A (LU or LDL, I assume) can be reduced by first applying a reordering to the matrix (see functions amd and dissect).
- If A is singular, is it possible that this is only caused by all-zero rows and columns which could be removed in a pre-processing step?
- If all else fails, you could build a new Krylov subspace vector by replacing the A\v step with an iterative method (this would be a bit painful because there are so many parameters to choose at that point).
参考
カテゴリ
Help Center および File Exchange で Operating on Diagonal Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!