Matrix 拉帕克:具有多个右手边的三角方程组

Matrix 拉帕克:具有多个右手边的三角方程组,matrix,linear-algebra,lapack,Matrix,Linear Algebra,Lapack,我有一个奇异的三角形nxn矩阵,比如说L(对于下三角形),我想解一个类似的系统 LX=B 其中B和X是nxk矩阵(即:我想求解一个具有多个右手边的三角形线性系统)。此外,我有我的三角矩阵存储在压缩格式;i、 e.我只存储下三角部分。我正在使用BLAS和LAPACK,但我已经意识到没有具体的方法来解决我的问题。尽管有许多功能可以解决类似问题: :采用压缩格式的三角形矩阵,并对单个右侧进行求解 :采用密集格式的三角形矩阵,并对多个右侧进行求解 我真正需要的是两者的结合。我希望有一个函数可以接受压缩

我有一个奇异的三角形
nxn
矩阵,比如说
L
(对于下三角形),我想解一个类似的系统

LX=B
其中
B
X
nxk
矩阵(即:我想求解一个具有多个右手边的三角形线性系统)。此外,我有我的三角矩阵存储在压缩格式;i、 e.我只存储下三角部分。我正在使用BLAS和LAPACK,但我已经意识到没有具体的方法来解决我的问题。尽管有许多功能可以解决类似问题:

:采用压缩格式的三角形矩阵,并对单个右侧进行求解

:采用密集格式的三角形矩阵,并对多个右侧进行求解

我真正需要的是两者的结合。我希望有一个函数可以接受压缩三角形格式,如stpsv(),也可以接受多个右侧格式,如strsm()。但似乎没有现成的功能

因此,我的问题是:

  • 有没有函数可以接受一个压缩的三角矩阵并求解多个右手边

  • 如果答案是否定的,那么什么更有效率?要么我在
    for
    循环中为
    B
    中的每一列调用stpsv(),要么我从
    L
    创建一个密集矩阵,这样我就有了所有这些无用的零,然后我调用strsm()。什么会更好?此外,也许我错过了一个更聪明的方法来做这一切


  • 压缩存储意味着2个例程。另外,BLAS3函数在求解线性系统时更有效,但在最优分块算法中有效。若你们调用BLAS2函数,那个么你们基本上回到矢量版本,所以它并没有太多意义

    请注意,BLAS2版本也不执行调节检查。因此,它们直接针对BLAS2性能进行优化,因为带有单个RHS的三角矩阵是直接向后替换


    对于多个RH,您可以通过,例如,转换矩阵,然后使用。

    压缩存储2个例程。另外,BLAS3函数在求解线性系统时更有效,但在最优分块算法中有效。若你们调用BLAS2函数,那个么你们基本上回到矢量版本,所以它并没有太多意义

    请注意,BLAS2版本也不执行调节检查。因此,它们直接针对BLAS2性能进行优化,因为带有单个RHS的三角矩阵是直接向后替换


    对于多个RH,您可以通过,比如,转换矩阵,然后使用。

    是的,有一个函数用于求解Ax=B,对于压缩三角形矩阵a和多个右手尺寸B。它来自LAPACK。此外,还有其他用于三角压缩矩阵的例程,它们的名称中都有
    tp


    然而,看看下面的例子,这个函数在一个循环中从BLAS调用,每个右侧调用一次。这正是你的建议

    是的,对于压缩三角矩阵a和多重右手尺寸B,有一个函数可以解Ax=B。它来自拉巴克。此外,还有其他用于三角压缩矩阵的例程,它们的名称中都有
    tp

    然而,看看下面的例子,这个函数在一个循环中从BLAS调用,每个右侧调用一次。这正是你的建议