贡献者: addis
预备知识 最小二乘法
,Nelder-Mead 算法
我们在 “最小二乘法” 见到的三个例子中,方差函数都是待定系数的线性组合,这种情况下我们令偏导为零后得到的是线性方程组,便于求解。然而当方差不是待定系数的线性组合时,得到的方程组往往非常复杂,这时就需要借助数值计算。相比用数值计算解 元的非线性方程组,更简单的方法是直接用数值方法寻找方差函数的极小值(如 Nelder-Mead 算法)。实践证明,大多数情况下极小值点仅有一个,那就是最小值点。
为了验证结果的正确性,我们先来用数值方法拟合 ,并与 “最小二乘法” 中的方法比较结果。
图 1:运行结果
Matlab 代码如下,需要 NelderMead.m 函数:
代码 1:curveFit_test.m
运行结果如图 1 所示,可见两种方法拟合出的曲线一致(红色的曲线和黄色的点线)。注意第 13 行使用了 “Nelder-Mead 算法” 中的函数 NelderMead
求函数句柄 f
的最小值。
一般参数函数的最小二乘法拟合代码为
代码 2:curveFit.m
1. 例子:拟合高斯函数
图 2:
高斯函数 的拟合(
fit_gaussian_test.m
)
代码 3:fit_gaussian.m
代码 4:fit_gaussian_test.m
致读者: 小时百科一直以来坚持所有内容免费无广告,这导致我们处于严重的亏损状态。 长此以往很可能会最终导致我们不得不选择大量广告以及内容付费等。 因此,我们请求广大读者
热心打赏 ,使网站得以健康发展。 如果看到这条信息的每位读者能慷慨打赏 20 元,我们一周就能脱离亏损, 并在接下来的一年里向所有读者继续免费提供优质内容。 但遗憾的是只有不到 1% 的读者愿意捐款, 他们的付出帮助了 99% 的读者免费获取知识, 我们在此表示感谢。