MATLAB中的lsqcurvefit函数

对于一个某些参数未知的曲线,在手上拥有其部分数据时,可用lsqcurvefit函数获得其参数。

如:

x = 0 : 1 : 21;
y = [3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76 92 76.5 123.2 131.7 150.7 179.3 204 226.5 251.4 281.4];

当中x为年份,y为人口数。

如图为人口增长公式。其中参数x0为人口初始数据,xm为最大人口容量,r为固定增长率,x(t)为第t年人口数量。x0此时已知,需要xm与r的值。

首先编写函数usa_population:

function [ out ] = usa_population( x, year )
out = x(1) ./ (1 + (x(1) / 3.9 - 1) .* exp(- x(2) .* year));       
end

其中x(1)为xm,x(2)为r。

之后声明新变量x0作为预估的初值,xi为使用lsqcurvefit()函数后得到的参数值。

x0 = [1, 1];
xi = lsqcurvefit('usa_population', x0, x, y);

查看xi中的内容:

xi =

  361.2406    0.2678

即为所求的xm与r。

作图查看拟合结果:

scatter(x, y);
hold on;
z = usa_population(xi, x);
plot(x, z);

得到图像:

  • 22
    点赞
  • 140
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值