2016-11-14 157 views
2

我想爲網格編寫一個小解包器。這使用有限元法來求解平坦部分和原始表面之間的最小線性應力。目前有一些頂點被固定以獲得結果。沒有這個三角形是隨機旋轉和翻譯...解決奇異矩陣

但由於這種釘扎不是必要的問題,更好的解決辦法是直接求解奇異矩陣。 Petsc提供了一些方法來解決一個單一的系統,通過提供關於零空間的一些信息。 http://www.mcs.anl.gov/petsc/petsc-current/docs/manual.pdf#section.4.6我想知道在Eigen中是否還有其他選擇。如果沒有,是否還有其他可能性來解決這個問題而不固定/固定頂點。

感謝, 漂亮的問候

也看到此鏈接爲進一步,情報: dev history

+0

如果零空間分析已知的,則可以嘗試寫一個自定義預處理器,這將是一個旨在消除僵化運動的投影儀。見http://stackoverflow.com/questions/39980074/how-to-use-custom-preconditioner-with-eigen和https://bitbucket.org/eigen/eigen/src/1a24287c6c133b46f8929cf5a4550e270ab66025/Eigen/src/IterativeLinearSolvers/BasicPreconditioners .h?at = default&fileviewer = file-view-default#BasicPreconditioners.h-185看看http://scicomp.stackexchange.com/questions/7488/null-space-projection-for-singular-systems – francis

回答

1

徵爲SVD分解算法:Jacobi SVD

SVD分解給出了空間。根據wikipedia article的符號,令M = U D V是M的SVD分解,其中D是奇異值的對角矩陣。然後,從Range, null space and rank:[V]相對應的消失M的奇異值

的右奇異向量跨越M的零空間

+0

我想SVD不適用於更大的矩陣。我想使用共軛梯度解算器。 –

+0

SVD是一個相當耗時的分解,但Eigen中的實現非常可靠(關於數值精度)。你的目標是什麼矩陣大小? – billx

+0

您還可以查看可以爲您提供內核的'PartialPivLU'和'FullPivLU'類。 http://eigen.tuxfamily.org/dox/group__TopicLinearAlgebraDecompositions.html – billx