小线性系统的数值稳定显式解


11

我的线性系统不均匀

Ax=b

其中是一个真正的Ñ × Ñ矩阵Ñ 4。确保A的零空间为零维,因此该方程式具有唯一的逆x = A - 1 b。由于结果进入ODE的右侧,我打算使用一种自适应方法进行求解,因此对于Ab元素的微小变化而言,解决方案的平滑性很重要。由于这一要求和较小的维数,我想为A 1 b实现显式An×nn4Ax=A1bAbA1b。元素可以正好为零或采用非常不同的值。我的问题是,这对您是否有意义,是否存在已知的稳定表达式。我在x86系统的C语言中进行编码。


我知道它来得太晚了,但是这是我的建议:由于已知具有总枢轴的高斯消去法是稳定的,因此为小尺寸算法硬编码是有意义的。枢轴复杂化很重要,因为有种选择连续枢轴的方法,导致n 2套不同的公式;您可以通过交换需要交换的内容来减少这种复杂性,将案例数减少到1 2 + 2 2 + n 2(n!)2(n!)212+22+n2
伊夫·戴乌斯特

Answers:


6

在实施显式公式之前,我会问自己一个问题:“值得吗?”:

  • 花时间写,调试和验证这些显式公式,同时又可以轻松地链接到使用经典高斯消除的BLAS + LAPACK,是否值得花时间?
  • 您希望获得稳定性吗?相反,我认为对显式公式进行编程(如Cramer规则)不会为您提供更好的稳定性。
  • 您希望获得速度吗?您是否已经描述了整个程序?解决hese 4x4系统花费的时间比例是多少?
  • 在一年的时间内,您改进模型并需要5个方程式而不是4个方程式的概率是多少?

我的建议:首先使用BLAS / LAPACK组合,看看它是否有效,分析整个程序,要求学生实施明确的公式(抱歉,在这里很讽刺),并比较速度和鲁棒性。


我花了大约15分钟的时间来实现它,因为我只需将一个普通的1x1、2x2、3x3和4x4矩阵输入CAS(对我来说就是Maple)并将其反转。它应返回一个明确的(类似C的)结果(假定基于Cramer规则)。您的第二点正是我的关注。结果,矩阵元素将具有更高阶的乘积。显然,由于不同术语的“几乎取消”,这可能会引入错误。但是问题是,是否有可能将结果写成不会发生的形式。速度不是这个地方的主要关注点。
highsciguy

6

O(n3)

AAdet(A)0xbxA

为了安全起见,最好确保在数字上也不存在秩不足(即,不具有小的奇异值)。A

克拉默法则的问题在于,除了(前向稳定,但不是后向稳定)之外,其稳定性性质未知。(请参阅N. Higham编写的《数值算法的准确性和稳定性》,第二版,)。高斯部分偏心消除法(GEPP)受到青睐。n=2

我希望在ODE解决方案中使用BLAS + LAPACK进行GEPP的问题是隐式ODE方法中使用的任何有限差分。我知道人们已经将线性程序求解作为右侧求值的一部分,并且因为他们天真地做(只是将线性程序求解插入到右侧,调用了单纯形算法),所以大大降低了他们的准确性。计算解决方案,大大增加了解决问题所需的时间。我的一个同事想出了如何以更有效,更准确的方式解决此类问题的方法。我将不得不看看他的出版物是否已经发行。无论您选择使用GEPP还是Cramer规则,您都可能遇到类似的问题。

如果有任何方法可以为您的问题计算一个解析雅可比矩阵,您可能希望这样做可以避免一些数字上的麻烦。与有限差分近似法相比,它的评估成本更低,而且可能更准确。如果需要,可以在此处找到矩阵逆的导数表达式。估计矩阵逆的导数似乎需要至少两个或三个线性系统求解,但是它们都将具有相同的矩阵和不同的右手边,因此它不会比单个线性系统昂贵得多解决。

而且,如果可以通过任何方式将计算出的解与具有已知参数值的解进行比较,我都会这样做,以便您可以诊断是否遇到了这些数值陷阱。


当您在此处写流畅时,是指在以有限的精度(即稳定的)(即我试图说的)进行评估时,它也是平滑的。另请参阅我对GertVdE答案的评论。我认为我可以排除几乎唯一的矩阵(我认为在这种情况下,必须重新制定对我的身体问题的分析)。
highsciguy

1
我的意思是“至少两次连续可微”。我认为矩阵逆映射对于所有都是无限连续可微的,使得。Adet(A)0
Geoff Oxberry

您对“隐式ODE方法中使用的有限差分”的评论适用于我。由于尺寸 的比我ODE系统的尺寸小得多(在此基质仅仅出现在几个变量的映射),鲁棒性是在该阶段比速度更重要。特别是由于在开发阶段,如果我不确定各个组件的安全性,我将永远不知道遇到数字错误的地方。nA
highsciguy

-2

不确定是否可以提供帮助,但我只是认为当您谈论稳定解时,您在谈论的是近似方法。当您显式地计算事物时,稳定性没有意义。也就是说,如果您想获得稳定性,就必须接受近似解。


5
浮点逼近(四舍五入,抵消等)在稳定性方面都非常重要。即使您有答案的公式,也必须计算出是否可以使用有限精度算术准确地计算出来。
Bill Barth

我不认为这个答案像其他人所看到的那样负面。当然,对于明确的结果也存在稳定性问题。但是我相信ctNGUYEN只是想说一个近似的解决方案,例如小数量的扩展实际上比完全正确的结果(我认为是正确的)更精确。从某种意义上说,我要求提供明确的解决方案来处理这种困难的情况,以使公式始终稳定。
highsciguy
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.