Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;:用反代换算法求解方程组的数学库_C++_Math_Matrix - Fatal编程技术网

C++ C++;:用反代换算法求解方程组的数学库

C++ C++;:用反代换算法求解方程组的数学库,c++,math,matrix,C++,Math,Matrix,如果我有这个: A * f = g; A: upper triangular matrix (n x n) f: (n x 1) g: (n x 1) 需要使用反向替换算法求解f。我想说,我自己写一本并不难,但如果有图书馆,那为什么不呢。它已经安装在许多系统上,并且有许多可用于没有它的系统的实现 具体来说,您需要的例程是dtrtrs或strtrs,这取决于您的数据是双精度还是单精度。它是其中之一吗?我以前没听说过用“反向替换”求解线性方程组。为什么一定要回来 增压应该有效。至少如果我正确理解了

如果我有这个:

A * f = g;
A: upper triangular matrix (n x n)
f: (n x 1)
g: (n x 1)
需要使用反向替换算法求解
f
。我想说,我自己写一本并不难,但如果有图书馆,那为什么不呢。它已经安装在许多系统上,并且有许多可用于没有它的系统的实现


具体来说,您需要的例程是
dtrtrs
strtrs
,这取决于您的数据是双精度还是单精度。

它是其中之一吗?我以前没听说过用“反向替换”求解线性方程组。为什么一定要回来


增压应该有效。至少如果我正确理解了你的问题,你可能想先看看
lu\u substitute()
inplace\u solve()

为了简单和缺乏依赖性,我会选择并使用For factoriation及其
solve()
方法。似乎没有一种方法可以用预先存在的上三角矩阵初始化LU(LU的构造函数不做任何假设,只是开始分解),但我认为您可以按原样使用它,并接受冗余分解的性能冲击,或者采用求解方法并根据需要进行调整。

三角矩阵的特殊之处在于,求解系统时不需要进行因式分解,如果矩阵是上三角矩阵,则求解它们的标准方法(也是小学代数方法)称为“回代法”,因为先解x[n],然后解x[n-1],然后x[n-2],等等……哦。我以前没听说过有人这样叫它。与艾根进行了快速检查。它有它…但它还不是“官方的”,无论这意味着什么。从快速浏览他们的站点:“LAPACK是用FORTRAN90写的……”并不是说你不能得到C++调用FORTRAN,但是它可能有点不方便。有一个标准化的C接口,而且该库在大多数平台上都可用,所以您通常不需要自己构建它。如果出于某种原因确实需要构建它,那么还有一个C版本的库(CLAPACK)。这是行业标准,也是迄今为止最具可移植性的解决方案。非常感谢,该库看起来非常强大,但它比我需要的要多一些,所以我最终编写了自己的。然而,我肯定会推荐ppl来看看这个库<代码>:M1和tsm(M1和M1,常数T和T,常数M2和M2,C)