求解具有10次多项式的方程组,LSM

时间:2013-01-10 16:21:35

标签: equation numerical-methods resolve

我使用普通LSM(最小二乘法)求解方程组(多项式10度)的数值问题。我获得了具有巨大和非常小的值的参数 - 因此我不能在该方法中构造逆矩阵 - 即使在扩展变量中精度也是低的。我试过在C ++,Matlab,Delphi中做到这一点。 有人知道应用仪器,我可以用足够的准确性或数字提示做到这一点,确实取得了良好的效果。对矩阵的标准计算是不幸的难以捉摸。

1 个答案:

答案 0 :(得分:1)

我认为您的问题来自于使用10阶多项式这一事实,这通常会导致数值问题:

  • 首先,由于大的振荡,它们可能不合适。即使在插入一个简单的函数时,也可能存在这些振荡,参见着名的Runge's example
  • 其次,高阶多项式的拟合可以导致山脉条件线性系统,这就是为什么你不能反转矩阵(你应该不做的事情)。我做了一个简单的实验:我取了11个等距点(在区间[0,1]上)并组装了线性系统的矩阵来求解。 Matlab给出了大约1e8的condition number,因此最小二乘矩阵的条件数为1e16。所以你的矩阵“接近于单数”,这意味着所有的数值精度都会丢失。

因此,摆脱问题的最佳方法是摆脱10阶多项式。您应该考虑低阶多项式,样条或分段多项式近似。

如果你真的需要10阶多项式(例如,如果你知道你的数据是由这样的多项式生成的),那么不要反转矩阵。使用良好的预处理器和迭代方法来解决系统而不反转矩阵。