加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 07:29:21 所属栏目:百科 来源:网络整理
导读:我有一个系统Ax = b,其中B是一个常数,但A在每次迭代中保持少量变化.我正在使用UMFPACK 5再次解决这个线性系统,就像A更改一样.我可以通过两种方式做到这一点: 仅在开始时计算矩阵A的符号和数值因子分解,并在每次迭代中使用此数值对象求解Ax = b(当然在稀疏矩
我有一个系统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的符号分解,则数字分解的速度会更快.我的猜测是,如果你只改变几个值,你不想重新计算符号分解,但你需要进行基准测试.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读