Questions tagged «linear-algebra»

有关线性代数的算法/计算方面的问题,包括线性系统的解,最小二乘问题,本征问题和其他此类问题。

4
如何对变量重新排序以产生最小带宽的带状矩阵?
我正在尝试通过有限差分来求解2D泊松方程。在此过程中,我获得了每个方程式中只有变量的稀疏矩阵。例如,如果变量为U,则离散化将产生:555UUU Ui−1,j+Ui+1,j−4Ui,j+Ui,j−1+Ui,j+1=fi,jUi−1,j+Ui+1,j−4Ui,j+Ui,j−1+Ui,j+1=fi,jU_{i-1,j} + U_{i+1,j} -4U_{i,j} + U_{i,j-1} + U_{i,j+1} = f_{i,j} 我知道我可以通过迭代方法求解该系统,但是我想到,如果我对变量进行适当排序,我也许能够获得可以通过直接方法(即高斯消去w)求解的带状矩阵。 / o旋转)。这可能吗?是否有其他策略可用于其他结构较疏的稀疏系统呢?



6
大矩阵的近似光谱
我想计算一个大型稀疏矩阵(数十万行)的频谱(所有特征值)。这很难。 我愿意定约。有近似方法可以做到这一点吗? 虽然我希望对此问题有一个一般性的答案,但在以下特定情况下,我也会感到满意。我的矩阵是大图的规范化拉普拉斯算子。特征值将在0到2之间,其中许多聚集在1周围。

2
PETSc对稠密矩阵有多有用?
无论我在哪里看到,PETSc教程/文档等都说它对线性代数很有用,并且通常指定稀疏系统将受益。那密矩阵呢?我关注解决稠密。Ax=bAx=bAx=bAAA 我已经在Fortran中编写了自己的CG和QMR代码。基本构造是撕裂伪代码,并在可能的情况下(和)添加BLAS例程ddot,dnrm并dgemv进行一些自我调整。与PETSc相比如何? 我知道最好的答案是我自己尝试一下,但是由于时间和其他原因,这是不可能的。 任何帮助深表感谢。


2
为什么计算科学家需要实现自己的std :: complex版本?
许多计算科学较为著名的C ++库如征,Trilinos和deal.II使用标准的C ++模板库头对象std::complex<>,表示复杂的浮点数。 在Jack Poulson 回答有关默认构造函数的问题时,他指出,“出于多种原因” 他std::complex在Elemental中具有自己的实现。那是什么原因 这种方法的优点和缺点是什么?

4
快速确定密集矩阵是否为低秩
在我正在从事的软件项目中,对于密集的低阶矩阵,某些计算非常容易。一些问题实例涉及密集的低秩矩阵,但是它们是完全提供给我的,而不是作为因素提供给我的,因此,如果我想利用低秩结构,就必须检查秩并分解矩阵。 所讨论的矩阵通常是完全或接近完全密集的,n的范围从一百到几千。如果矩阵的秩较低(例如小于5到10),则计算SVD并使用它形成低秩分解是值得的。但是,如果矩阵的排名不低,则将浪费精力。 因此,我想找到一种快速合理的方法来确定等级是否较低,然后再投入精力进行完整的SVD因数分解。如果在任何时候都可以确定等级高于临界值,则该过程可以立即停止。如果该过程在不正确的情况下错误地将矩阵声明为低秩,则这不是一个大问题,因为我仍然会执行完整的SVD来确认低秩并找到低秩分解。 我考虑过的选项包括显示LU或QR因式分解的等级,然后是完整的SVD作为检查对象。我还应该考虑其他方法吗?

2
计算一个非常大且非常稀疏的邻接矩阵的所有特征值
我有两个图,每个图都有近n〜100000个节点。在两个图中,每个节点正好连接到其他3个节点,因此邻接矩阵是对称的并且非常稀疏。 困难的部分是我需要邻接矩阵的所有特征值,而不是特征向量。准确地说,这将是我一生中唯一的一次(至少据我所知!),因此我想获取所有特征值,并且不介意等待几天来获取它们。 我尝试过scipy包装器ARPACK,但是花费的时间太长。我找到了多个库,但是它们最适合于获得最大/最小特征值的子集。是否有适用于对称稀疏矩阵并可能并行实现所有特征值的库?

1
如何激发Krylov加速的Multigrid(使用MG作为前提条件)?
通过构造初始猜测值并对重复以下步骤,直到收敛为止,可以使用Multigrid(MG)求解线性系统:X 0我= 0 ,1 ..甲X = bAx=bAx=bX0x0x_0我= 0 ,1 ..i=0,1..i=0,1.. 计算残差[R一世= b - A x一世ri=b−Axir_i = b-Ax_i 应用多重网格周期以获得近似值,其中。甲é 我 = - [R 我Δ X一世≈ è一世Δxi≈ei\Delta x_i \approx e_iAei=riAei=riAe_i = r_i 更新xi+1←xi+Δxixi+1←xi+Δxix_{i+1} \gets x_i + \Delta x_i 多重网格周期是应用于以产生的平滑,内插,约束和精确的粗网格求解操作的序列。这通常是一个V周期或W周期。这是一个线性运算,因此我们写成。 Δ X 我 Δ X 我 = 乙ř 我ririr_iΔxiΔxi\Delta x_iΔxi=BriΔxi=Bri\Delta x_i = B …

2
矩阵求逆的“辅助因子技术”是否有实际意义?
标题就是问题。该技术涉及使用“辅因子矩阵”或“辅助矩阵”,并为方矩阵逆矩阵的成分提供了明确的公式。对于大于的矩阵,手工操作并不容易3×33×33\times 3。对于一个n×nn×nn\times n矩阵,它需要计算矩阵本身的行列式和计算n2n2n^2决定因素(n−1)×(n−1)(n−1)×(n−1)(n-1)\times(n-1)矩阵。因此,我猜测它对应用程序没有太大用处。但我想确认。 我并不是在问技术证明矩阵定理的理论意义。

1
复杂对称三对角广义特征值问题的专用方法
我必须解决广义特征值问题其中和都是三对角线的,是对称正定的且是实数的,但是仅是复对称的(不是定对称的或埃尔米特的)。此外,我需要完整的特征分解。我目前只是在打电话给Lapack的广义特征求解器,但是我想知道对于这个特殊的,高度结构化的问题是否有更好的方法。特别是,拥有免费可用的代码(C ++)将是最好的。Ax=λBxAx=λBxAx = \lambda BxAAABBBBBBAAAZGGEV


3
了解Numpy如何执行SVD
我一直在使用不同的方法来计算矩阵的秩和矩阵方程组的解。我遇到了功能linalg.svd。与我自己用高斯消除法求解系统的努力相比,它看起来既更快又更精确。我试图了解这是怎么可能的。 据我所知,linalg.svd函数使用QR算法来计算矩阵的特征值。我知道这在数学上是如何工作的,但是我不知道Numpy如何如此迅速地做到这一点而又不会损失太多精度。 所以我的问题是:numpy.svd函数如何工作,更具体地说,如何快速,准确地实现它(与高斯消去相比)?

2
用另一种krylov方法预处理krylov方法
在类似gmres或bicgstab的方法中,使用另一种krylov方法作为前置条件可能会很有吸引力。毕竟,它们很容易以无矩阵的方式并在并行环境中实现。例如,一个库尔使用未经预处理的bigcstab的几次迭代(约5次)作为gmres的预处理器,或krylov方法的任何其他组合。在文学界,我没有太多参考这种方法,所以我希望这是因为它不是很有效。我想了解为什么效率不高。在某些情况下,这是一个不错的选择吗? 在我的研究中,我对在并行(MPI)环境中解决3D椭圆问题感兴趣。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.