MATLAB最小二乘法两种方法对比

任务 最小二乘法属于曲线拟合的方法之一。 复习《计算方法》时,在图书馆借阅的一本教辅上提供了两种实现方法,我好奇是否有何不同。 (并且发现matlab中矩阵的运算与最小二乘法也相关) 最终发现二者求解得到的多项式系数A相同 法一:Ga=d 通过不断将提供数据项代入x阶次逐渐提高的拟合公式P(x)=a0+a1x+a2x^2中,得到矩阵G,向量d,通过矩阵运算求得系数A 在matlab中求上述a,用左除:a=G\d code 在实现书上的例子时,发现解得系数与答案不一致,通过计算误差可知书上有误 法二:ATAx=ATb 这个方法很神奇,由于提供数据组数超过唯一确定多项式P(x)的模数,固得到的m>n的矩阵为超定方程组的求解 通过将方程组两边同乘A的转置,将x左边转变为方阵,实现x的求解 code 可以验证,这里运算得到的x与上个方法得到的A是完全相同的。 matlab中的矩阵算法 中文: matlab 在这里的求解与严格的数学意义是不同的 如果 A 接近奇异,matlab 仍会给出合理的结果,但也会提示警告信息; 如果 A 为方阵,如果解存在的话,x = A\B 的解就是 Ax=B(代入就会成立) 如果 A 不为方阵,返回的是 Ax=B 的最小二乘解; 参考资料 《数值计算方法与实验学习指导》左军 谢东秀 matlab 求解 Ax=B 时所用算法