Questions tagged «linear-algebra»

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

2
计算与最大特征值相对应的密集矩阵特征向量的最有效方法是什么?
我有一个密集的实对称方阵。尺寸约为1000x1000。我需要计算第一个主成分,并想知道这样做的最佳算法是什么。 看来MATLAB使用了Arnoldi / Lanczos算法(用于eigs)。但是通过阅读它们,我不确定它们是否比简单的幂迭代有任何优势,因为我的矩阵不是稀疏的,并且我只对第一个特征向量感兴趣。 任何建议在这种情况下最快的算法是什么?

3
如何构造代数多重网格求解器的延长和限制算子?
我正在尝试求解一个稀疏但缺少任何带状结构的线性方程组。我听说,有一种方法可以将隐式有限差分方案的多网格求解器的原理扩展到一般的线性问题(如果我没记错的话,它称为代数多网格求解器)。在阅读了一些有关它的文献之后,我仍然很困惑如何在粗网格和精网格之间进行插值(即延长和限制),而没有像有限差分方案那样利用带状矩阵的精细结构。有启发式吗?谁能举个例子?

1
是否有用于优化连续超松弛(SOR)方法的试探法?
据我了解,通过选择参数并使用(准)Gauss-Seidel迭代和上一个时间步长的值的线性组合来进行连续过度松弛是有效的…… 0≤ω≤20≤ω≤20\leq\omega\leq2 uk+1=(ω)ugsk+1+(1−ω)ukuk+1=(ω)ugsk+1+(1−ω)uk{u}^{k+1} = (\omega){u_{gs}}^{k+1} + (1-\omega)u^{k} 我之所以说“准”,是因为包括随时根据此规则更新的最新信息。(请注意,在,这正是高斯塞德尔)。 ω=1ugsk+1ugsk+1{u_{gs}}^{k+1}ω=1ω=1\omega=1 无论如何,我已经读到最优选择(这样迭代的收敛速度比其他任何方法都快)在空间分辨率接近零时针对泊松问题接近2。其他对称的,对角占优的问题是否存在类似的趋势?也就是说,有没有一种方法可以在不将其嵌入到自适应优化方案中的情况下最佳地选择omega?对于其他类型的问题,还有其他启发式方法吗?松弛不足()最适合哪种问题?ω &lt; 1ωω\omegaω&lt;1ω&lt;1\omega<1


2
RBF内核矩阵是否趋向于病态?
我使用RBF内核函数来实现一种基于内核的机器学习算法(KLPP),得到的内核矩阵 KKK K(i,j)=exp(−(xi−xj)2σ2m)K(i,j)=exp⁡(−(xi−xj)2σm2)K(i,j)= \exp\left({\frac{-(x_{i}-x_{j})^2}{ \sigma_{m}^2}}\right) 被证明病得很重条件。L2-范数的条件数为1017−10641017−106410^{17}-10^{64} 有什么办法使它适应良好吗?我猜想参数需要调整,但我不知道该怎么精确。σσ \sigma 谢谢!

3
LAPACK使用的原因是什么
LAPACK的QR例程将Q存储为Householder反射器。它缩放反射向量与,所以结果的第一个元素变成,所以它不具有被存储。并且它存储一个单独的向量,其中包含所需的比例因子。所以反射矩阵是这样的:vvv1 /v1个1/v11/v_11个11ττ\tauH= 我- τvvŤ,H=一世-τvvŤ,H=I-\tau v v^T, 其中未标准化。而在教科书中,反射矩阵是vvv H= 我− 2 伏vŤ,H=一世-2vvŤ,H = I-2vv^T, 其中,是标准化。vvv 为什么LAPACK 用缩放,而不是对其进行归一化?vvv1 /v1个1个/v1个1/v_1 所需的存储空间是相同的(而不是,必须存储),之后,应用可以更快地完成,因为不需要与进行乘法(可以优化教科书版本中与乘法,如果不是简单归一化,则将缩放为)。ττ\tauv1个v1个v_1HHHττ\tau222vvv2–√/ ∥v∥2/‖v‖\sqrt 2/\|v\| (我的问题的原因是我正在编写QR和SVD例程,并且我想知道此决定的原因,无论是否需要遵循它)

4
最快的线性系统求解小平方矩阵(10x10)
我对通过线性系统求解小矩阵(10x10)(有时也称为小矩阵)来优化地狱非常感兴趣。有没有现成的解决方案?矩阵可以假定为非奇异的。 此求解器将在Intel CPU上执行超过1000000次(以微秒为单位)。我说的是计算机游戏中使用的优化级别。无论是在特定于汇编和体系结构的代码中进行编码,还是研究精度或可靠性方面的折衷并使用浮点hack(我都使用-ffast-math编译标志,这都没有问题)。解决甚至可能在大约20%的时间内失败! Eigen的partialPivLu在我当前的基准测试中是最快的,当使用-O3和良好的编译器进行优化时,性能优于LAPACK。但是现在我要手工制作一个定制的线性求解器。任何建议将不胜感激。我将使我的解决方案开源,并会在出版物等方面获得关键见解。 相关:用块对角矩阵求解线性系统 的速度什么是最快的方法来反转数百万个矩阵? https://stackoverflow.com/q/50909385/1489510

1
矩阵平衡算法
我一直在从头开始编写控制系统工具箱,而纯粹是在Python3中编写(无耻插件:)harold。从我过去的研究中,我总是care.m出于技术/无关的原因而抱怨Riccati求解器。 因此,我一直在编写自己的例程集。我找不到解决方法的一件事是获得一种高性能的平衡算法,至少与一样好balance.m。在提到它之前,xGEBALfamily在Scipy中公开,并且基本上可以从Scipy进行如下调用,假设您具有一个float类型的2D数组A: import scipy as sp gebal = sp.linalg.get_lapack_funcs(('gebal'),(A,)) # this picks up DGEBAL Ab, lo, hi, scaling , info = gebal(A, scale=1 , permute=1 , overwrite_a=0 ) 现在,如果我使用以下测试矩阵 array([[ 6. , 0. , 0. , 0. , 0.000002], [ 0. , 8. , 0. , 0. , 0. ], …

1
迭代的“求解器”
我无法想象我是第一个考虑以下问题的人,因此我会对参考感到满意(但始终希望获得完整,详细的答案): 假设您有一个对称的正定 Σ∈Rn×nΣ∈Rn×n\Sigma \in \mathbb{R}^{n \times n}。 nnn 被认为是非常大的,所以 ΣΣ\Sigma在内存中是不可能的。但是,您可以评估ΣxΣx\Sigma x,对于任何 x∈Rnx∈Rnx \in \mathbb{R}^{n}。给一些x∈Rnx∈Rnx \in \mathbb{R}^{n},您想找到 xtΣ−1xxtΣ−1xx^t\Sigma^{-1}x。 我想到的第一个解决方案是找到 Σ−1xΣ−1x\Sigma^{-1}x使用(说)共轭梯度。但是,这似乎有点浪费-您寻找标量,并在此过程中找到一个巨大的向量RnRn\mathbb{R}^{n}。提出一种直接计算标量的方法似乎更有意义(即不通过Σ−1xΣ−1x\Sigma^{-1}x)。我正在寻找这种方法。

1
Hessenberg矩阵的指数计算算法
我对使用krylov方法计算ODE标记系统的解决方案感兴趣,如[1]所示。这种方法涉及与指数有关的函数(所谓的 -functions)。它实质上包括通过使用Arnoldi迭代构造一个Krylov子空间并将该函数投影到该子空间上来计算矩阵函数的作用。这减少了计算较小的Hessenberg矩阵的指数的问题。φφ\varphi 我知道有几种算法可以计算指数(请参见[2] [3]及其参考)。我想知道是否有一种特殊的算法可以利用矩阵是Hessenberg的事实来计算指数? [1] Sidje,RB(1998)。Expokit:用于计算矩阵指数的软件包。ACM Transactions on Mathematical Software(TOMS),24(1),130-156。 [2] Moler,C.和Van Loan,C.(1978)。十九种计算矩阵指数的可疑方法。SIAM评论,20(4),801-836。 [3] Moler,C.和Van Loan,C.(2003)。25年后的十九种方法来计算矩阵的指数。SIAM评论,45(1),3-49。

2
表示没有浮点数的爱森斯坦数
我有一个项目,需要使用二次字段, 具体是表格的数字a + b− 3---√a+b−3a + b \sqrt{-3} 与 a,b∈Qa,b∈Qa,b \in \mathbb{Q}。 例如,这是爱森斯坦整数中的质数: 我不想用鼠尾草。 我想编写自己的数据类型来合并numpy。PARI很有用-但它与Python不兼容。 这些对象的加法非常清楚 (a1+b1−3−−−√)+(a2+b2−3−−−√)=(a1+a2)+(b1+b2)−3−−−√(a1+b1−3)+(a2+b2−3)=(a1+a2)+(b1+b2)−3(a_1 + b_1 \sqrt{-3}) + (a_2 + b_2 \sqrt{-3}) = (a_1 + a_2) + (b_1+b_2) \sqrt{-3} 乘法稍微复杂一点,但我们也可以对其进行硬编码 (a1+b1−3−−−√)×(a2+b2−3−−−√)=(a1a2−3b1b2)+(a1b2+a2b1)−3−−−√(a1+b1−3)×(a2+b2−3)=(a1a2−3b1b2)+(a1b2+a2b1)−3(a_1 + b_1 \sqrt{-3}) \times (a_2 + b_2 \sqrt{-3}) = (a_1 a_2 - 3 b_1 b_2) + …

2
自适应有限元法使用哪些新颖的数据结构?
许多自适应FEM库使用更高级的网格数据结构来处理添加/删除节点,边,三角形,四面体等。例如,p4est库使用八叉树数据结构进行自适应网格细化。您很少会在静态网格物体上找到用于计算的八叉树。 自适应有限元法在线性代数方面有什么变化? 我能想到的最直截了当的方法是,每当细化或粗化网格时,就完全重建所有系统矩阵。如果网格自适应操作很少发生,那么最终将在其余计算中分摊这样做的费用。通过这种方法,可以轻松利用现有的稀疏线性代数软件(PETSc,Trilinos等)。 这个钝器方法是最常用的方法,还是在精炼过程中可以重用或修改旧矩阵的库?毕竟,在网格自适应过程中,大多数网格和相应的矩阵都是不变的。

1
如何近似一个大矩阵的条件数?
如果是傅里叶变换(非均匀或均匀),有限差分和对角矩阵的组合,我如何近似大矩阵的条件数?GGGGGGFFFRRRSSS 矩阵很大,不存储在内存中,只能作为函数使用。 特别是,我有以下矩阵: Gμ=SHFHFS+μRHRGμ=SHFHFS+μRHRG_\mu=S^HF^HFS+\mu R^HR 我想研究和条件数之间的关系。μμ\muk(Gμ)k(Gμ)k(G_\mu) 我假设有人需要某种迭代方法?最好会有一些MATLAB代码。


2
预测密集线性代数的运行时间
我想为使用特定库的特定体系结构上的密集线性代数运算预测运行时间。我想学习一个近似函数的模型 Fop::Fop::F_{op} \;::\; 输入尺寸→→ \rightarrow 运行 用于矩阵乘法,逐元素加法,三角求解等操作。 我怀疑一旦您超出了可以轻松容纳在缓存中的问题大小,由于这些操作的规律性,这些运行时大部分都是可预测的。 问题: 这个假设现实吗?运行时功能可能几乎是确定性的吗? 我可以假定该函数的输入项大小是多项式吗?(即,我希望密集矩阵乘法看起来像αn×k×mαn×k×m\alpha n\times k\times m 对于 Ank×BkmAnk×BkmA_{nk}\times B_{km} 和 αα\alpha 一些标量系数) 是否在某处对此已有工作? 我目前的计划是使用 L1L1L_1正则化。还有其他建议吗? 编辑:明确地说,我在寻找运行时,而不是FLOP或其他任何常见的性能指标。我愿意将自己局限于一种特定的体系结构。

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.