Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.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++;:用Lapack和转置右手边解线性系统_C++_Lapack - Fatal编程技术网

C++ C++;:用Lapack和转置右手边解线性系统

C++ C++;:用Lapack和转置右手边解线性系统,c++,lapack,C++,Lapack,我有矩阵H和C,其中H是可逆的,我想求解具有多个右手边的线性系统 HX=C' 其中C'表示矩阵转置。如果我必须解决这个系统 HX=C 我将简单地调用Lapack例程dgetrs和dgetrf,以获得解决方案。但是,我没有直接可用的右侧矩阵,只有转置矩阵 解决这个问题的最快方法是什么?我知道我可以循环C来获得它的转置,但我希望我能做得更好。欢迎来到Stackoverflow!查看名为LAPACKE的LAPACK包装器的源代码,如果使用LAPACK\u ROW\u MAJOR,该函数将同时转换矩

我有矩阵
H
C
,其中
H
是可逆的,我想求解具有多个右手边的线性系统

HX=C'
其中
C'
表示矩阵转置。如果我必须解决这个系统

HX=C
我将简单地调用Lapack例程
dgetrs
dgetrf
,以获得解决方案。但是,我没有直接可用的右侧矩阵,只有转置矩阵


解决这个问题的最快方法是什么?我知道我可以循环
C
来获得它的转置,但我希望我能做得更好。

欢迎来到Stackoverflow!查看名为LAPACKE的LAPACK包装器的源代码,如果使用
LAPACK\u ROW\u MAJOR
,该函数将同时转换矩阵和右侧。因此,似乎转换矩阵是有意义的。。。函数
LAPACKE_dgetrs()
LAPACKE_dgetrf()
能解决您的问题吗?嘿@francis,谢谢您提出这种方法。但是,在中,您可以逐字阅读:“注意,使用行主顺序可能需要比列主顺序更多的内存和时间,因为例程必须将行主顺序转换为基础LAPACK例程所需的列主顺序。”我非常确信拉帕克将比我想象的更快地反转矩阵,但这正是我想要摆脱的开销,即开销的成本是有限的。实际上,它的复杂度是O(n^2),而LU分解的复杂度是O(n^3)。可以组合LAPACKE_dgetrf()和LAPACKE_dgetrs()的源代码,以避免将数组转置两次。请注意,
dgetrf()
计算^T的PLU分解。然后,dgetrs()可以与选项“T”一起使用。但是右边仍然需要换位。可以肯定的是,你所有的矩阵,X,A,C都已经以列主格式存储了?是的@PicaudVincent,我的矩阵是以列主格式存储的。然而,由于我从未将右侧用作非转置矩阵,我想我将切换到列主格式——这应该可以工作,不是吗?欢迎使用Stackoverflow!查看名为LAPACKE的LAPACK包装器的源代码,如果使用
LAPACK\u ROW\u MAJOR
,该函数将同时转换矩阵和右侧。因此,似乎转换矩阵是有意义的。。。函数
LAPACKE_dgetrs()
LAPACKE_dgetrf()
能解决您的问题吗?嘿@francis,谢谢您提出这种方法。但是,在中,您可以逐字阅读:“注意,使用行主顺序可能需要比列主顺序更多的内存和时间,因为例程必须将行主顺序转换为基础LAPACK例程所需的列主顺序。”我非常确信拉帕克将比我想象的更快地反转矩阵,但这正是我想要摆脱的开销,即开销的成本是有限的。实际上,它的复杂度是O(n^2),而LU分解的复杂度是O(n^3)。可以组合LAPACKE_dgetrf()和LAPACKE_dgetrs()的源代码,以避免将数组转置两次。请注意,
dgetrf()
计算^T的PLU分解。然后,dgetrs()可以与选项“T”一起使用。但是右边仍然需要换位。可以肯定的是,你所有的矩阵,X,A,C都已经以列主格式存储了?是的@PicaudVincent,我的矩阵是以列主格式存储的。然而,由于我从未将右侧用作非转置矩阵,我想我将切换到列主格式——这应该可以,不是吗?