我的线性系统不均匀
其中是一个真正的Ñ × Ñ矩阵Ñ ≤ 4。确保A的零空间为零维,因此该方程式具有唯一的逆x = A - 1 b。由于结果进入ODE的右侧,我打算使用一种自适应方法进行求解,因此对于A和b元素的微小变化而言,解决方案的平滑性很重要。由于这一要求和较小的维数,我想为A − 1 b实现显式。元素可以正好为零或采用非常不同的值。我的问题是,这对您是否有意义,是否存在已知的稳定表达式。我在x86系统的C语言中进行编码。
我的线性系统不均匀
其中是一个真正的Ñ × Ñ矩阵Ñ ≤ 4。确保A的零空间为零维,因此该方程式具有唯一的逆x = A - 1 b。由于结果进入ODE的右侧,我打算使用一种自适应方法进行求解,因此对于A和b元素的微小变化而言,解决方案的平滑性很重要。由于这一要求和较小的维数,我想为A − 1 b实现显式。元素可以正好为零或采用非常不同的值。我的问题是,这对您是否有意义,是否存在已知的稳定表达式。我在x86系统的C语言中进行编码。
Answers:
在实施显式公式之前,我会问自己一个问题:“值得吗?”:
我的建议:首先使用BLAS / LAPACK组合,看看它是否有效,分析整个程序,要求学生实施明确的公式(抱歉,在这里很讽刺),并比较速度和鲁棒性。
为了安全起见,最好确保在数字上也不存在秩不足(即,不具有小的奇异值)。
克拉默法则的问题在于,除了(前向稳定,但不是后向稳定)之外,其稳定性性质未知。(请参阅N. Higham编写的《数值算法的准确性和稳定性》,第二版,)。高斯部分偏心消除法(GEPP)受到青睐。
我希望在ODE解决方案中使用BLAS + LAPACK进行GEPP的问题是隐式ODE方法中使用的任何有限差分。我知道人们已经将线性程序求解作为右侧求值的一部分,并且因为他们天真地做(只是将线性程序求解插入到右侧,调用了单纯形算法),所以大大降低了他们的准确性。计算解决方案,并大大增加了解决问题所需的时间。我的一个同事想出了如何以更有效,更准确的方式解决此类问题的方法。我将不得不看看他的出版物是否已经发行。无论您选择使用GEPP还是Cramer规则,您都可能遇到类似的问题。
如果有任何方法可以为您的问题计算一个解析雅可比矩阵,您可能希望这样做可以避免一些数字上的麻烦。与有限差分近似法相比,它的评估成本更低,而且可能更准确。如果需要,可以在此处找到矩阵逆的导数表达式。估计矩阵逆的导数似乎需要至少两个或三个线性系统求解,但是它们都将具有相同的矩阵和不同的右手边,因此它不会比单个线性系统昂贵得多解决。
而且,如果可以通过任何方式将计算出的解与具有已知参数值的解进行比较,我都会这样做,以便您可以诊断是否遇到了这些数值陷阱。
不确定是否可以提供帮助,但我只是认为当您谈论稳定解时,您在谈论的是近似方法。当您显式地计算事物时,稳定性没有意义。也就是说,如果您想获得稳定性,就必须接受近似解。