Questions tagged «linear-solver»

指用于求解方程式线性系统的方法。

2
高效拉格朗日预处理器
我想解决带有非线性等式约束的非线性问题,并且我正在使用带有惩罚正则项的增广拉格朗日函数,该函数众所周知会破坏我线性化系统的条件数(我是说每次牛顿迭代) 。惩罚期限越大,条件编号越差。有人会知道在特定情况下摆脱这种不良条件的有效方法吗? 更具体地说,我使用经典的增强型拉格朗日法,因为我有很多约束,这些约束通常可能是多余的。因此,将约束直角盲目地合并到原始变量中非常方便。我直接在KKT系统上尝试了其他基于变量消除或有效前置条件的更复杂的方法,但是由于约束冗余,我遇到了一些麻烦。 关于该问题变量被配制成按照我的形式拉格朗日 大号(Û,λ ):= w ^(Û)+ ρ λ Ťu =[ u1个,⋯ ,ūñ]u=[u1,⋯,un]\mathbf u =[u_1,\cdots,u_n]L( u,λ): = W(û)+ ρ λŤc (u)+ ρ2C2(你)L(u,λ):=W(u)+ρλTc(u)+ρ2c2(u)\mathcal L(\mathbf u,\lambda):= \mathcal W(\mathbf u) + \rho \lambda^T \,c(\mathbf u) + \frac{\rho}{2} c^2(\mathbf u) 所以一般在每个牛顿的目标迭代是解决形式的问题 随着(我们的约束的下降麻布) 甲(Û,ρ ):= ∇ 2 ù w ^(Û)+ ρ Ç Ť(ù)ç (Û) …

2
是否存在用于无矩阵方法的黑盒预处理器?
一般而言,Jacob-free牛顿-克雷洛夫(JFNK)方法和克雷洛夫方法非常有用,因为它们不需要显式存储或构造矩阵,而只需要矩阵向量乘积的结果即可。如果您确实形成了稀疏系统,那么这里有许多预处理器。 真正的无矩阵方法有哪些可用?谷歌搜索出现了一些对“矩阵估计”的引用,还有一些其他的事情表明它是可能的。这些方法通常如何起作用?它们与传统预处理器相比如何?基于物理学的无矩阵预处理器是路要走吗?有没有公​​开可用的方法,例如PETSc或其他软件包?

1
解决巨大的密集线性系统?
使用迭代方法有效解决以下线性系统是否有希望? A∈Rn×n,x∈Rn,b∈Rn, with n>106A∈Rn×n,x∈Rn,b∈Rn, with n>106A \in \mathbb{R}^{n \times n}, x \in \mathbb{R}^n, b \in \mathbb{R}^n \text{, with } n > 10^6 Ax=bAx=bAx=b 与 ,其中 Δ是非常稀疏的矩阵与几个对角线,从拉普拉斯算子的离散化所产生。在它的主对角线上有 − 6,还有 6对其他对角线上有 1。A=(Δ−K)A=(Δ−K) A=(\Delta - K) ΔΔ\Delta−6−6-6666111 是一个完全由1组成的完整 R n × n矩阵。KKKRn×nRn×n\mathbb{R}^{n \times n} 解决与高斯-赛德尔(Gauss-Seidel)之类的迭代方法很好地工作,因为它是稀疏的对角占优矩阵。我怀疑对于大量n来说,问题A = (Δ - K )几乎不可能有效地解决,但是,利用K的结构,是否有任何技巧可以解决呢?A=ΔA=ΔA=\DeltaA=(Δ−K)A=(Δ−K)A=(\Delta - K)nnnKKK 编辑:会做类似的事情 …


1
伸出的零空间
给出了系统其中甲∈ [R Ñ × Ñ,我读的是,在壳体的Jacobi迭代用作解算器,该方法将不收敛,如果b具有在零空间非零分量甲。因此,如果b具有一个跨越A的零空间的非零分量,那么雅可比方法将是一个非收敛的形式上的形式化说法?我想知道如何将其数学形式化,因为正交于零空间的部分解决方案确实会收敛。Ax=b,Ax=b,Ax=b,A∈Rn×nA∈Rn×nA\in\mathbb{R}^{n\times n}bbbAAAbbbAAA 因此,通过在每个迭代中投影的零空间,它会收敛(或?)。AAA ...... 我特别感兴趣的情况下 其中大号是与由向量所跨越的零空间的对称拉普拉斯矩阵1 ñ = [ 1 ... 1 ] Ť ∈ [R Ñ,和b具有零在组分L的零空间,J b = b ,其中J = I − 1Lx=b,Lx=b,Lx=b,LLL1n=[1…1]T∈Rn1n=[1…1]T∈Rn1_n=[1\dots 1]^T\in\mathbb{R}^nbbbLLLJb=b,Jb=b,Jb=b,是中心矩阵。这是否意味着每个Jacobi迭代将投影L的零空间,即每个迭代将居中?我要问的是,从那时起,就不需要从Jacobi迭代中投影L的零空间(或者换句话说,将迭代的中心)。J=I−1n1n1TnJ=I−1n1n1nTJ=I-\frac{1}{n}1_n1_n^TLLLLLL

1
在Matlab中,linsolve和mldivide有什么区别?
在matlab中,在所有确定的,超定的和未定的情况下,linsolve和mldivide都用于求解线性方程组。 阅读他们的文档,我想知道他们之间有什么区别?在这三种情况下,他们是否使用几乎相同的矩阵分解和三角化算法? 如果A具有opts中的属性,则linsolve比mldivide快,因为linsolve不执行任何测试来验证A具有指定的属性 mldivide是否执行相同的测试以验证A是否具有特殊属性?还是mldivide只是将它们视为一般情况而没有特殊属性? 谢谢!

5
大型稀疏对称(但不是正定)系统的求解器的最佳选择
我目前正在研究由某些算法生成的非常大的对称(但不是正定)系统。这些矩阵具有很好的块稀疏性,可用于并行求解。但是我无法决定是否应该使用直接方法(例如多边方法)还是迭代方法(预处理GMRES或MINRES)。我所有的研究都表明,迭代求解器(即使具有7个内部迭代的快速收敛)也无法击败MATLAB中的直接“ \”运算符。但是从理论上讲,直接方法应该更昂贵。这是怎么回事?是否有最新的文件或纸张用于此类情况?我可以在使用直接方法的并行系统中使用块稀疏性,就像GMRES这样的灵活迭代求解器一样有效吗?


2
选择用于GPGPU计算(OpenCL)的线性求解器
我已经开发了有限元方法的可行解决方案,以使用共轭梯度方法使用GPU和OpenCL解决传热问题。这种方法的主要缺点是对内存的高需求。此外,在图形卡的情况下,内存通常非常有限。我看到两个选择: 创建子域并与主机内存交换网格的一部分 使用多边方法 我必须考虑特定的体系结构。交换可能非常昂贵。CG方法在GPGPU计算的上下文中很流行,但是我找不到CG与多前沿方法之间的任何比较(对于GPGPU)。能比CG更快的多面方法吗?这是一个普遍的问题,实际上,它仍然取决于实现。

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

4
,快速显式解决方案,低条件数
我正在寻找一种3x3线性实数问题的快速(敢于说最佳吗​​?)显式解决方案,,。 Ax=b一个X=b\mathbf{A}\mathbf{x} = \mathbf{b}A∈R3×3,b∈R3A∈R3×3,b∈R3\mathbf{A} \in \mathbf{R}^{3 \times 3}, \mathbf{b} \in \mathbf{R}^{3} 矩阵是通用的,但与单位矩阵接近,条件编号接近1。因为实际上是传感器测量值,精度约为5位,所以我不介意由于数值而损失几位问题。AA\mathbf{A}bb\mathbf{b} 当然,不难得出基于多种方法的显式解决方案,但是如果已经证明某些方法在FLOPS计数方面是最佳的,那将是理想的(毕竟,整个问题可能会适合FP寄存器!)。 (是的,该例程经常被调用。我已经摆脱了低落的果实,这是我的分析列表中的下一个……)

3
SOR比Gauss-Seidel快的问题?
是否有简单的经验法则可以说明是否值得进行SOR而不是Gauss-Seidel?(以及可能的方法如何估计贴切参数)ωω\omega 我的意思是仅查看矩阵,还是矩阵代表的特定问题的知识? 我正在阅读有关以下问题的答案: 是否有用于优化连续超松弛(SOR)方法的试探法? 但这有点太复杂了。我没有看到简单的启发式方法,仅在矩阵上(或它代表的问题)如何估算光谱半径。 我想要简单得多的东西- 仅有几个 SOR收敛更快的矩阵(问题)示例。 我正在针对该国王的矩阵进行SOR实验: 其中是单位矩阵,和 s是来自unifrom分布的随机数,使得。我以为最优与参数。A=I+C+RA=I+C+RA = I + C + R IIICij=cCij=cC_{ij}=c ∀i,j∀i,j \forall i,j[R我ĴRijR_{ij}|[R我Ĵ| &lt;ř|Rij|&lt;r|R_{ij}|<rωω\omegaÇ ,[Rc,rc,r 编辑:我用很小的来确保tha在对角线中很强。(对于尺寸5-10的矩阵,)。我还应该说这些是真实且对称的。c,rc,rc,rAAA|c|&lt;0.1|c|&lt;0.1|c|<0.1r&lt;2|c|r&lt;2|c|r<2|c|AAA 但是,我发现Gauss-Seidel()几乎总是最好的(?)ω=1ω=1\omega=1。这是否意味着之间必须存在更多的关联才能利用SOR?还是我做错了什么? AijAijA_{ij} 我知道,SOR并不是最有效的求解器(与CG,GMRES ...相比),但是它易于实现和并行化以及针对特定问题进行修改。对原型来说肯定不错。

3
解决稀疏且病态严重的系统
我打算解决Ax = b的问题,其中A是复杂,稀疏,不对称且病态严重(条件号〜1E + 20)的方形或矩形矩阵。我已经能够使用LAPACK中的ZGELSS准确地解决该系统。但是随着我系统中自由度的增加,由于没有利用稀疏性,因此在使用ZGELSS的PC上解决该系统需要花费很长时间。最近,我在同一系统上尝试了SuperLU(使用Harwell-Boeing存储器),但是对于条件编号&gt; 1E + 12,结果不准确(我不确定这是否是旋转的数值问题)。 我更倾向于使用已经开发的求解器。是否有一个强大的求解器可以解决我提到的系统(即利用稀疏性)并且可靠地(根据条件数)求解?

1
求解Ax = b的无矩阵方法的预处理器
我需要解决Ax = b,但是我意识到即使它很稀疏,存储我的问题的矩阵系数也会占用太多内存。所以现在我正在考虑使用无矩阵方法,因为相同的系数在矩阵中出现的时间很多,所以我可以使用自己的私有存储方案(并通过提高缓存效率来实现)。 我正在看petsc,它为此类无矩阵线性运算符提供接口,但是我真正不了解的是,petsc如何计算前置条件?还是我应该提供自己的预处理器?如果是这样,是否有工具或方法可用于从无矩阵线性算子构建预处理器? 有关我的运算符的更多信息:它是不对称的,不是对角线占优势,而是由一些边带控制(但也不是对角线带状)

3
关于轻量级/无需安装C或C ++的密集线性代数求解器的建议
我的大部分编程都是用C语言编写的一次性研究代码供我自己使用。除了亲密合作者之外,我从未分发过任何代码。我已经开发了一种算法,可以在科学期刊上发表。我想在本文的在线补充中提供源代码,也许还提供可执行代码。一位同事要求我对该算法进行概括,该算法要求我用C ++编写(ack!),并且要求我求解小型密集线性系统。如果我成功获得了该算法的用户基础,则部分原因是使用该算法的输入栏很低(例如在地板上)。潜在的用户不会安装库等来使用代码。我希望代码完全独立,不受任何许可的约束。我可能只是简单地通过从Golub和van Loan中取出一些东西来编写自己的求解器,但是我更愿意使用别人已经写过的香草求解器(如果有的话)。建议表示赞赏。谢谢!

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.