Matlab:非线性曲线拟合

本文通过MATLAB使用logistic模型对美国1790年至2000年的人口数据进行拟合。利用lsqcurvefit函数找到最佳参数a,使模型曲线与实际人口数据最为接近。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

% Assume you determined xdata and ydata experimentally
function logistic_renkou
clc 
clear all
xdata = [1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 ...
    1890 1900 1910 1920 1930 1940 1950 1960 1970 1980 1990 2000];
ydata = [3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76.0 ...
    92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5 251.4 281.4];
a0 = [400 0.02];   % 初始猜测值
[a, resnorm] = lsqcurvefit(@logistic,a0,xdata,ydata)

yfit = a(1)./(1+(a(1)/3.9-1)*exp(-a(2)*(xdata-1790)));
plot(xdata,ydata,'*b',xdata,yfit,'-r')

function y = logistic(a,xdata)
y = a(1)./(1+(a(1)/3.9-1)*exp(-a(2)*(xdata-1790)));


以上代码,用lsqcurvefit函数,求解下列方程,返回的a包含了所求的方程参数。

xdata和ydata是需要拟合的x、y值。

y = a(1)./(1+(a(1)/3.9-1)*exp(-a(2)*(xdata-1790)));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值