Matlab--用最小二乘法确定指数函数的系数(牛顿法解二元非线性方程组)

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

例题

在这里插入图片描述

最小二乘法解题步骤

<img src="https://i-blog.csdnimg.cn/blog_migrate/18b341005dc31718d2312af83c824dc0.png"85%">
显然,该方程组为非线性方程组,考虑用牛顿法求解。

牛顿法解非线性方程组

<img src="https://img-blog.csdnimg.cn/20200803211018372.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2lsb3ZlZ2Vt,size_16,color_FFFFFF,t_70,width="85%

选取牛顿迭代的初值

牛顿法只具有局部收敛性,因此初始值的选取很重要。观察题中给出的数据,发现原函数 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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值