例题

最小二乘法解题步骤

显然,该方程组为非线性方程组,考虑用牛顿法求解。
牛顿法解非线性方程组

选取牛顿迭代的初值
牛顿法只具有局部收敛性,因此初始值的选取很重要。观察题中给出的数据,发现原函数 y=ae^{bx},有递增趋势,y值都较小且大于0,可以判断a,b的值应该同时为正且小于1,所以在区间(0,1)内随机选取初始值。又因为随机选取的初始值不能保证结果一定收敛,所以随机选取多组初始值进行多次计算,选取其中均方误差最小的一组结果,也即所有结果中效果最好的一组a,b作为最终结果。

计算结果
在区间(0,1)内随机选取50组初始值,其中能收敛且均方误差最小的一组是:
将所得函数和原始数据进行拟合比较(红线是对数据表中数据描点连线得到)

matlab代码
初始值是随机生成的,所以可能每次运行代码得到的结果都不一样
clear
%最小二乘法
x=1:19;
y=[0.898 2.38 3.07 1.84 2.02 1.94 2.22 2.77 4.02 4.76 6.46 6.53 10.9 16.5 22.5
35.7 50.6 61.6 81.8];
%建立目标函数
syms a b
F=0;
for i=1:length(x)
F=F+(a*exp(b*x(i))-y(i))^2;
end
%偏导
Fa

这篇博客介绍了如何利用Matlab的牛顿法解决一个二元非线性方程组,该方程组来源于指数函数的最小二乘拟合。文章详细阐述了最小二乘法的解题步骤,并强调了牛顿法在选择初始值时的重要性。通过在(0,1)区间内随机选取初始值并进行多次计算,找到均方误差最小的解。博主提供了代码示例,指出由于初始值的随机性,每次运行代码可能会得到不同的结果。"
137371817,19925603,理解Web服务器推送技术:从Ajax到Comet与Java实践,"['前端开发', '服务器', 'Java']
2063

被折叠的 条评论
为什么被折叠?



