【问题标题】:Excel Polynomial Curve-Fitting AlgorithmExcel多项式曲线拟合算法
【发布时间】:2012-07-26 15:08:45
【问题描述】:

Excel 用于计算二阶多项式回归(曲线拟合)的算法是什么?是否有示例代码或伪代码可用?

【问题讨论】:

    标签: algorithm excel interpolation curve-fitting


    【解决方案1】:

    我找到了一个返回与 Excel 给出的相同公式的解决方案:

    1. 将用于最小二乘抛物线的值的增强矩阵放在一起。见http://www.efunda.com/math/leastsquares/lstsqr2dcurve.cfm中的求和方程

    2. 使用高斯消元法求解矩阵。这是可以做到这一点的 C# 代码http://www.codeproject.com/Tips/388179/Linear-Equation-Solver-Gaussian-Elimination-Csharp

    3. 运行后,矩阵 (M) 中的剩余值将等于 Excel 中给出的系数。

    也许我能以某种方式找到 R^2,但我不需要它。

    【讨论】:

      【解决方案2】:

      图表中的多项式趋势线使用基于 QR 分解方法的最小二乘法,例如 LINEST 工作表函数 (http://support.microsoft.com/kb/828533)。可以使用=LINEST(y,x^{1,2}) 计算给定 (x,y) 数据的二阶或二次趋势。

      您可以使用 Worksheet.Evaluate 方法从 C# 调用工作表公式。

      【讨论】:

      • 我知道linest工作表函数。我想知道的是linest 使用的算法(或具有二阶多项式趋势线的图表)。我想通了,并在下面回答了我自己的问题,stackoverflow.com/questions/11672385/…
      • 如果你只做一个二次趋势线,你的链接应该足够了,但趋势线 (LINEST) 算法实际上实现了 QR 分解以获得更高的准确性 - 它不能直接解决“正规方程”中所述知识库文章。
      【解决方案3】:

      这取决于,因为有很多方法可以做到这一点,具体取决于您提供的数据以及曲线通过这些点的重要性。

      我猜你的点比多项式中的系数多得多(例如,二阶曲线的点超过三个)。

      如果这是真的,那么你能做的最好的就是最小二乘拟合,它计算最小化所有点和结果曲线之间的均方误差的系数。

      【讨论】:

      • 你知道最小二乘拟合的算法吗?我想用 C# 编写一些代码。
      【解决方案4】:

      由于这是二阶,我的建议是创建该死的二阶项并进行线性回归。

      例如。如果做z~second_order(x,y),就相当于做z~first_order(x,y,x^2,y^2, xy)。

      【讨论】:

      • 我将二阶解释为 y = c0 + c1*x + c2*x^2。您的二阶想法是拟合曲面,而不是曲线。
      猜你喜欢
      • 2018-02-16
      • 2019-09-05
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      • 2015-02-08
      • 1970-01-01
      相关资源
      最近更新 更多