Excel多项式曲线拟合algorithm
Excel用来计算二阶多项式回归(曲线拟合)的algorithm是什么? 是否有示例代码或伪代码可用?
我发现了一个解决scheme,返回Excel提供的相同公式:
-
将最小二乘抛物线中使用的值的增广matrix组合在一起。 请参阅http://www.efunda.com/math/leastsquares/lstsqr2dcurve.cfm中的和方程式
-
使用高斯消元来解决matrix。 这里是C#代码,将这样做http://www.codeproject.com/Tips/388179/Linear-Equation-Solver-Gaussian-Elimination-Csharp
-
运行之后,matrix(M)中的剩余值将等于Excel中给出的系数。
也许我可以findR ^ 2,但我不需要它为我的目的。
图表中的多项式趋势线使用基于QR分解方法(如LINEST工作表函数( http://support.microsoft.com/kb/828533 ))的最小二乘法。 给定(x,y)数据的二阶或二次趋势可以使用=LINEST(y,x^{1,2})
来计算。
您可以使用Worksheet.Evaluate
方法从C#调用工作表公式。
这取决于,因为根据你提供的数据有很多方法可以做这样的事情,曲线通过这些点是多么重要。
我猜测你比多项式中的系数要多得多(例如对于二阶曲线,超过三个点)。
如果这是真的,那么你可以做的最好的是最小二乘拟合,它可以计算使所有点和结果曲线之间的均方误差最小的系数。
既然这是第二顺序,我的build议就是创build该死的二阶项并做一个线性回归。
防爆。 如果你正在做z〜second_order(x,y),它相当于z_first_order(x,y,x ^ 2,y ^ 2,xy)。