c – 在UMFPACK中,我们需要多长时间进行符号和数字分解?

c – 在UMFPACK中,我们需要多长时间进行符号和数字分解?,第1张

概述我有一个系统Ax = b,其中B是一个常数,但A在每次迭代中保持少量变化.我正在使用UMFPACK 5再次解决这个线性系统,就像A更改一样.我可以通过两种方式做到这一点: >仅在开始时计算矩阵A的符号和数值因子分解,并在每次迭代中使用此数值对象求解Ax = b(当然在稀疏矩阵表示中,Ax随A变化而变化.Ap和Ai保持相同). >计算矩阵A IN EACH迭代的符号和数值分解(即A更改的新数值对象) 我有一个系统Ax = b,其中B是一个常数,但A在每次迭代中保持少量变化.我正在使用UmfpACK 5再次解决这个线性系统,就像A更改一样.我可以通过两种方式做到这一点:

>仅在开始时计算矩阵A的符号和数值因子分解,并在每次迭代中使用此数值对象求解Ax = b(当然在稀疏矩阵表示中,Ax随A变化而变化.Ap和Ai保持相同).
>计算矩阵A IN EACH迭代的符号和数值分解(即A更改的新数值对象)并使用此新数值对象求解Ax = b.

以上哪种方式是正确的?对于上述两个程序,我得到了完全不同的答案(正如预期的那样).任何帮助或评论表示赞赏.谢谢.

解决方法 符号分解仅取决于稀疏模式(UmfpACK符号中的Ap和Ai).数值分解取决于实际值(Ax).因此,您只需计算一次符号分解,但需要在每个分解中重新计算数值分解.

UmfpACK的文档显示这是对现实的略微简化.实际上,UmfpACK确实使用实际值来进行符号分解,但它只区分“小”和“大”值.因此,如果矩阵A只有一点变化,那也没关系.如果值(Ax)变化太大以至于先前的“小”值变大,或者相反,那么符号分解可能会改变.但是,如果对新Ax使用旧的符号分解,您仍将获得正确的数值分解和正确的解决方案,但如果使用新的符号分解,UmfpACK(可能)更有效.

因此,是否要重新计算符号分解取决于计算符号分解所需的时间,以及如果使用具有正确Ax的符号分解,则数字分解的速度会更快.我的猜测是,如果你只改变几个值,你不想重新计算符号分解,但你需要进行基准测试.

总结

以上是内存溢出为你收集整理的c – 在UMFPACK中,我们需要多长时间进行符号和数字分解?全部内容,希望文章能够帮你解决c – 在UMFPACK中,我们需要多长时间进行符号和数字分解?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1230000.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存