首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >定维稠密线性系统(N=9)对称正半定的快速解

定维稠密线性系统(N=9)对称正半定的快速解
EN

Stack Overflow用户
提问于 2012-11-13 21:53:03
回答 6查看 2.8K关注 0票数 7

对于定维稠密线性系统(N=9) (矩阵是对称的、正半定的),您建议采用哪种算法快速求解?

  • 高斯消去
  • 路分解
  • Cholesky分解
  • 等?

类型为32位浮点数和64位浮点数。

这样的系统将被解决数百万次,因此算法在维数(n=9)方面应该是相当快的。

鲁棒 C++实现的实例值得赞赏。

( 1)你所说的“解决百万次”是什么意思?相同的系数矩阵,有一百万种不同的右项,还是有一百万个不同的矩阵?

上百万不同的矩阵。

2)正_semi_definite表示矩阵可以是奇异的(对机器精度而言)。你想怎么处理这个案子?只是提出一个错误,还是试图返回一些明智的答案?

提高误差是可以的。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-11-14 07:14:06

矩阵是对称的,正半定的,Cholesky分解严格优于LU分解.(大约比LU快两倍,不管矩阵的大小如何。资料来源: Trefethen和Bau的“数值线性代数”。

事实上,对于小型密集矩阵(来源:我在计算数学中做了一个PhD ),迭代方法的效率低于直接方法,除非系统变得足够大(快速的经验法则没有任何意义,但这一点总是好的:在任何现代计算机上,任何小于100*100的矩阵绝对是一个需要直接方法的小矩阵,而不是迭代方法)。

现在,我不建议你自己去做。有很多优秀的图书馆已经过了彻底的测试。但如果我要推荐你的话,那就是本征

  • 不需要安装(标头只有库,所以没有要链接的库,只有#include<>)
  • 健壮和高效(它们在主页上有很多基准,而且结果很好)
  • 使用方便,有良好的文档记录

顺便说一句,在这里的文档中,您可以在一个很好的、简洁的表格中了解到它们的7个直接线性求解器的各种优缺点。在你的例子中,LDLT (Cholesky的变体)似乎赢了

票数 7
EN

Stack Overflow用户

发布于 2012-11-13 23:06:27

一般来说,最好是使用现有的库,而不是自己的方法,因为在追求快速、稳定的数字实现时,有许多繁琐的细节需要处理。

这里有几个可以让你开始:

艾根图书馆(我个人的喜好):

标头

鲤鱼:http://arma.sourceforge.net/

四处搜寻,你会发现很多其他人。

票数 6
EN

Stack Overflow用户

发布于 2012-11-13 23:55:08

我建议LU分解,特别是如果“解决数百万次”的意思是“解决一次并应用于数百万个向量”。您将创建LU分解,保存它,并对尽可能多的r.h.s应用前向回替代。如你所愿。

如果你使用旋转,它在圆角面前会更稳定。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13369468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档