我有一个大小为mxm的线性方程组,其中m大。但是,我感兴趣的变量只是前n个变量(与m相比,n很小)。有没有一种方法可以近似地求解前m个值,而不必求解整个系统?如果是这样,这种近似方法是否比求解整个线性系统更快?
我有一个大小为mxm的线性方程组,其中m大。但是,我感兴趣的变量只是前n个变量(与m相比,n很小)。有没有一种方法可以近似地求解前m个值,而不必求解整个系统?如果是这样,这种近似方法是否比求解整个线性系统更快?
Answers:
正如其他人指出的那样,使用直接求解器很难做到这一点。就是说,使用迭代求解器并不难。为此,请注意,大多数迭代求解器会以某种方式将关于某些范数的误差最小化。通常,此范数要么由矩阵本身导出,但有时也只是l2向量范数。但这不是必须的:您可以选择要最小化误差(或残差)的准则,例如,可以选择权重为1和1的准则。其他所有带有1e-12的字符,例如 (1e-24) ∑ N i = 6 x 2 i 和对应的标量积。然后针对该范数和标量积编写迭代求解器的所有步骤,您将获得一个迭代求解器,该迭代求解器将更多地关注您关心的矢量元素而不是其他元素。
当然,问题是,与平均权衡所有组件的标准/标量产品相比,您是否需要更少的迭代。但这确实是事实:假设您只关心前五个向量元素。然后,您最多需要进行五次迭代才能将错误减少1e12倍,因为描述它们的5x5系统需要进行五次迭代。那不是证明,但我可以肯定的是,如果范数中的权重(上面的1e-12)小于您要迭代求解线性系统的公差,则您确实应该减少迭代次数。
假设您已将矩阵置换并划分为以下形式
这样,包含您的兴趣自由度,并且比A 11小得多,则可以构成Schur补码
通过局部右看的LU分解或显式公式,然后是可以从以下意义上理解:
其中表示解决方案的“无趣”部分。因此,只要在Schur补码S 22的自由度上只有一个非零的右侧,我们只需要求解S 22即可获得对应于那些自由度的解的一部分。
设置到的高度甲和Ñ到的高度甲22,然后用于计算的标准方法小号22是第一因子大号11 Ù 11:= 甲11(让我们忽略枢转现在)在大致2 / 3 (Ñ − n )3工作,然后形成
使用两个三角形求解,每个需要工作,然后在2 n 2(N - n )个工作中执行对A 22的更新。
因此,总的工作大致是。当Ñ很小,ñ - Ñ ≈ Ñ,所以成本可以被看作是大致2 / 3 Ñ 3,它是一个完整的因式分解的成本。
这样做的好处是,如果要用相同的方程组求解大量右侧,则可能会被重用很多次,每个求解只需要2 n 2的功。 (而不是2 N 2起作用)如果S 22被分解)。
如果您的稀疏系统是由某种类型的有限差分或有限元近似引起的,那么稀疏直接求解器几乎可以肯定会利用某些结构。2D系统可以与要解决的工作和ø (Ñ 日志Ñ )存储,而3D系统可以被解决ø (Ñ 2)的工作和ø (Ñ 4 / 3)的存储。这样,分解后的系统就可以用与存储需求相同的工作量进行求解。
造就了计算复杂的一点是,如果并且您有一个2d系统,则由于Schur补码可能很稠密,因此给定因式Schur补码的求解复杂度将为O(n2)=O(N),与完全求解相比,它仅缺少对数因子系统!在3D中,它需要Ô(Ñ)工作,而不是ø(Ñ 4 / 3)。
因此,重要的是要记住,在您的情况下,,只有在多个方面进行工作并且需要解决许多右侧问题时,才可以节省大量资金。
保罗问了之后,我将讨论如果您对这个问题使用基于投影的模型简化方法会发生什么。假设你能想出的投影仪,使得范围P,表示为[R (P),含有该溶液的线性系统甲X = b,并具有尺寸ķ,其中ķ是未知数的数量为您希望在线性系统中求解。
奇异值分解将产生以下分区矩阵:
被恒星遮盖的矩阵对于其他事物(例如估计误差等)也很重要,但是目前,我们将避免处理无关紧要的细节。它遵循
是的完全分解。
本质上,您将解决系统
以巧妙的方式,因为和W也具有W T V = I的性质。相乘的两侧P 甲X = P b通过W¯¯ Ť并让ÿ = V X是一个近似X产量
求解X,预乘它由V,你有ÿ,你的近似X。
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.
长答案是...之类的。
您可以重新排列方程组,以使最右边 列是您要求解的变量。
步骤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.