可以仅对前几个变量来近似线性方程组的解吗?


15

我有一个大小为mxm的线性方程组,其中m大。但是,我感兴趣的变量只是前n个变量(与m相比,n很小)。有没有一种方法可以近似地求解前m个值,而不必求解整个系统?如果是这样,这种近似方法是否比求解整个线性系统更快?


2
除非您的强制函数也仅限于前n个变量,否则不会这样。如果是这样,则可以形成Schur补语,尽管它可能很密集。如果您的原始运算符很稀疏,那可能不值得。
Jack Poulson '02

1
我想您可以从矩阵的右下角开始使用高斯消除。如果您只关心前几个元素并中途停止,则这将比常规高斯消除快约2倍。我不知道它将与迭代方法相比。
2012年

4
@OscarB:请不要。克莱默法则在浮点算术上是一个残酷的行为。我从未听说过将其用于认真的计算,并且要避免阶乘复杂性需要花费大量的精力,在这种情况下,它仍然无法与高斯消除相竞争。
Jack Poulson '02

1
@Paul:大多数模型降阶都是在大型ODE或DAE系统的背景下使用的。有时,归因于PDE离散化的ODE或DAE系统推动了简化方法。我还没有看到模型还原用于纯代数方程式。(如果有的话,请给我发送参考,因为我正在撰写有关模型简化方法的论文,并且非常有兴趣看到它。)如果您愿意,我可以勾画出如果我们将模型简化视为一种模型,代数方程作为微分代数方程系统的简并情况。
Geoff Oxberry 2012年

1
@JackPoulson-您介意将您的评论总结为答案吗?我认为这是最正确的解决方案,我不希望它在评论中迷失。
阿隆·艾玛迪亚

Answers:


13

正如其他人指出的那样,使用直接求解器很难做到这一点。就是说,使用迭代求解器并不难。为此,请注意,大多数迭代求解器会以某种方式将关于某些范数的误差最小化。通常,此范数要么由矩阵本身导出,但有时也只是l2向量范数。但这不是必须的:您可以选择要最小化误差(或残差)的准则,例如,可以选择权重为1和1的准则。其他所有带有1e-12的字符,例如 (1e-24)N i = 6 x 2 i 和对应的标量积。然后针对该范数和标量积编写迭代求解器的所有步骤,您将获得一个迭代求解器,该迭代求解器将更多地关注您关心的矢量元素而不是其他元素。||x||2=i=15xi2+i=6Nxi2

当然,问题是,与平均权衡所有组件的标准/标量产品相比,您是否需要更少的迭代。但这确实是事实:假设您只关心前五个向量元素。然后,您最多需要进行五次迭代才能将错误减少1e12倍,因为描述它们的5x5系统需要进行五次迭代。那不是证明,但我可以肯定的是,如果范数中的权重(上面的1e-12)小于您要迭代求解线性系统的公差,则您确实应该减少迭代次数。


2
嗯,好点。我很想看到一个真实的例子,因为我有些担心仅尝试解决几个自由度的后果。即使残差可能很小,但错误的范数可能仍然很大(可以有效地忽略大多数运算符)。
Jack Poulson '02

凭直觉,这似乎只有在很小的系统的组成部分在L2(或您理解要测量的错误的规范)意义上真正支配答案的情况下才有效。否则,我认为杰克的担忧是正确的,但即使看到对此进行数值证明,我也绝对有兴趣...
Aron Ahmadia 2012年

必须确保您采用的是一种将误差(而不是残差)最小化的方法。我认为MinErr可能是一个很好的起点。
Wolfgang Bangerth,2012年

@WolfgangBangerth:我对MINERR不熟悉:是主要参考吗?
Jack Poulson '02

1
即使这样还不够,因为您将不准确。使用此加权,您无法准确地获得一些组件。
Matt Knepley 2012年

17

形成舒尔补语

假设您已将矩阵置换并划分为以下形式

A=(A11A12A21A22),

这样,包含您的兴趣自由度,并且比A 11小得多A22A11,则可以构成Schur补码

S22:=A22A21A111A12,

通过局部右看的LU分解或显式公式,然后是S22可以从以下意义上理解:

S22x=y(A11A12A21A22)(x)=(0y),

其中表示解决方案的“无趣”部分。因此,只要在Schur补码S 22的自由度上只有一个非零的右侧,我们只需要求解S 22S22S22即可获得对应于那些自由度的解的一部分。

非结构化密集情况下的计算复杂度

设置到的高度Ñ到的高度22,然后用于计算的标准方法小号22是第一因子大号11 Ù 11= 11(让我们忽略枢转现在)在大致2 / 3 Ñ n 3工作,然后形成NAnA22S22L11U11:=A112/3(Nn)3

S22:=A22(A21U111)(L111A12)=A22A21A111A12

使用两个三角形求解,每个需要工作,然后在2 n 2N - n )个工作中执行对A 22的更新。n(Nn)2A222n2(Nn)

因此,总的工作大致是。当Ñ很小,ñ - Ñ Ñ,所以成本可以被看作是大致2 / 3 Ñ 32/3(Nn)3+2n(Nn)2+2n2(Nn)nNnN2/3N3,它是一个完整的因式分解的成本。

这样做的好处是,如果要用相同的方程组求解大量右侧,则可能会被重用很多次,每个求解只需要2 n 2的功。 (而不是2 N 2起作用)如果S 22S222n22N2S22被分解)。

(典型)稀疏情况下的计算复杂性

如果您的稀疏系统是由某种类型的有限差分或有限元近似引起的,那么稀疏直接求解器几乎可以肯定会利用某些结构。2D系统可以与要解决的工作和ø Ñ 日志Ñ 存储,而3D系统可以被解决ø Ñ 2的工作和ø Ñ 4 / 3的存储。这样,分解后的系统就可以用与存储需求相同的工作量进行求解。O(N3/2)O(NlogN)O(N2)O(N4/3)

造就了计算复杂的一点是,如果并且您有一个2d系统,则由于Schur补码可能很稠密,因此给定因式Schur补码的求解复杂度将为On2=ON,与完全求解相比,它仅缺少对数因子系统!在3D中,它需要ÔÑ工作,而不是øÑ 4 / 3nNO(n2)=O(N)O(N)O(N4/3)

因此,重要的是要记住,在您的情况下,,只有在多个方面进行工作并且需要解决许多右侧问题时,才可以节省大量资金。n=N


1
这是schur补充方法的一个很好的总结,并且在计算上使用起来很有效!
保罗

6

模型简化方法

保罗问了之后,我将讨论如果您对这个问题使用基于投影的模型简化方法会发生什么。假设你能想出的投影仪,使得范围P,表示为[R P,含有该溶液的线性系统X = b,并具有尺寸ķ,其中ķ是未知数的数量为您希望在线性系统中求解。PPR(P)Ax=bkk

奇异值分解将产生以下分区矩阵:P

P=[V][diag(1k)000][WT].

被恒星遮盖的矩阵对于其他事物(例如估计误差等)也很重要,但是目前,我们将避免处理无关紧要的细节。它遵循

P=VWT

的完全分解。P

本质上,您将解决系统

PAx=Pb

以巧妙的方式,因为W也具有W T V = I的性质。相乘的两侧P X = P b通过W¯¯ Ť并让ÿ = V X是一个近似X产量VWWTV=IPAx=PbWTy=Vx^x

WTAx^=WTb.

求解X,预乘它由V,你有ÿ,你的近似Xx^Vyx

为什么Schur补法可能更好

PAx=bR(P)y=xyyxPxyPAPkAkAA2

VWP is still a "good" projection matrix for all of those systems, those extra costs will probably make solving the reduced system more expensive than solving your original system.

The drawbacks are much like JackPoulson's approach, except that you're not quite leveraging the structure that you mentioned.


4

长答案是...之类的。

您可以重新排列方程组,以使最右边 ķ 列是您要求解的变量。

步骤1:执行高斯消除,使矩阵为上三角。第2步:仅对第一个(最后一个)进行反向替换解决ķ 您感兴趣的变量

这将节省您必须解决最后一个问题的计算复杂性 ñ-ķ 通过反替代的变量,如果 ñ就像你说的那么大。请记住,第1步仍需要完成大量工作。

Also, keep in mind that restricting the order in which you are going to perform back-substituion may restrict the form of the matrix (it takes away the ability to exchange columns) which could possibly lead to an ill conditioned system, but I am not sure about that - just something to keep in mind.


Gaussian elimination requires O(n3) work, but backward substitution only requires O(n2). Thus, as n越大,在三角形求解中花费的时间百分比就变得越来越小。
Jack Poulson '02

这就是为什么答案是“排序”而不是“是” =)的原因
drjrm3 2012年

可以这样做是有道理的...但是,高斯消除中的大部分计算都在前向消除阶段中,尽管截短的后向替代阶段仍产生了O(n ^ 3)复杂度。我希望有一个更快的方法...
保罗
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.