spchol
疎行列コレスキー分解
呼び出し手順
[R,P] = spchol(X)
引数
- X
対称正定実疎行列
- P
順列行列
- R
コレスキー分解
説明
[R,P] = spchol(X)
は,
P*R*R'*P' = X
となるような
上三角行列R
を出力します.
例
// Factorization: Xfull = [ 3., 0., 0., 2., 0., 0., 2., 0., 2., 0., 0. 0., 5., 4., 0., 0., 0., 0., 0., 0., 0., 0. 0., 4., 5., 0., 0., 0., 0., 0., 0., 0., 0. 2., 0., 0., 3., 0., 0., 2., 0., 2., 0., 0. 0., 0., 0., 0. , 5., 0., 0., 0., 0., 0., 4. 0., 0., 0., 0., 0., 4., 0., 3., 0., 3., 0. 2., 0., 0., 2., 0., 0., 3., 0., 2., 0., 0. 0., 0., 0., 0., 0., 3., 0., 4., 0., 3., 0. 2., 0., 0., 2., 0., 0., 2., 0., 3., 0., 0. 0., 0., 0., 0., 0., 3., 0., 3., 0., 4., 0. 0., 0., 0., 0., 4., 0., 0., 0., 0., 0., 5.]; X = sparse(Xfull); [R, P] = spchol(X); max(P*R*R'*P'-X) // Factorization and solve with backslash operator: Afull = [ 2 -1 0 0 0; -1 2 -1 0 0; 0 -1 2 -1 0; 0 0 -1 2 -1; 0 0 0 -1 2 ]; A = sparse(Afull); [L, P] = spchol(A); max(P*L*L'*P'-A) n = size(A, "r"); e = (1:n)'; b = A * e; x = P*(L'\(L\(P'*b))); A*x-b
Report an issue | ||
<< lusolve | Sparse Decompositions | Linear Equations (Iterative Solvers) >> |