求解小型非对称、非对角占优和非稀疏系统

计算科学 线性代数 计算物理学
2021-12-21 19:40:41

我想解决一个小问题(20×20 到 30×30) 非对称、非对角占优、非稀疏的系统。每行包含一组用户指定函数的勒让德系数的修改形式。每一行之间的区别在于函数被提升到不同的幂(行i[f]i和行i+1[f]i+1)。目前系统有Cond(A)~1019和 20×20系统等级(A)=15。

3个回答

据我了解您的问题,您获得了一组值f,yRn并且必须解决一个系统

(f1fnf1nfnn)x=y
为了xRn.

所有的值fi是非零的。否则你的矩阵将是奇异的,你运气不好。

缩放参数后zi:=fixi您获得 Vandermonde 矩阵作为系统矩阵:

(11f1fnf1n1fnn1)z=y
请注意,已知这种矩阵在一般情况下是非常病态的。对于这样的系统,有一些特殊的算法可以利用不同的差异。也许您可以通过 Internet 搜索找到该算法的最新变体。在 LGPL 许可下还有一个matlab 代码 VANDERMONDE实现了这种方法。

另请参阅类似的问题https://math.stackexchange.com/questions/384126/solving-linear-equations-with-vandermonde

解决该系统后,您可以通过以下方式缩减解决方案xi=zifi.

考虑到矩阵并不大,但条件不佳,您可以尝试使用正则化技术:

与预处理技术不同,您有一个等效的系统,但矩阵具有更好的光谱特性,这里您近似问题,即原始系统。

这里的另一个选择是使用高精度算术来求解您的方程组。四倍精度浮点运算应该足以处理您的条件数1019并给你一个大约 10 位数的答案,假设你的问题中的所有系数都精确到 30 位数。除此之外,还有用于扩展精度浮点运算的库,可用于获得更多位数。