作业帮 > 综合 > 作业

用matlab求拟合函数Y=L/1+a*exp(-b*x)

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/07/07 13:10:56
用matlab求拟合函数Y=L/1+a*exp(-b*x)
野兔生长问题.在某地区野兔的数量在连续十年的统计数量(单位十万)如下x=[0 1 2 3 4 5 6 7 8 9]Y=[1 2.31969 4.50853 6.90568 6.00512 5.56495 5.32807 7.56101 8.9392 9.5817].求Y=L/1+a*exp(-b*x),并用图表示出野兔的生长规律,及x=10时,Y的数量
用matlab求拟合函数Y=L/1+a*exp(-b*x)
分两个步骤:
第一步建立函数模型的M文件
打开M编辑器,输入如下代码;
function yd=model(beta0,x)
%% L/1+a*exp(-b*x)
a=beta0(1);
b=beta0(2);
L=beta0(3);
x1=x;
yd=L./(1+a.*exp(-b.*x1));
保存这个M文件到work文件夹下,名称为:model
第二步:在命令窗口中输入如下代码:
x=[0 1 2 3 4 5 6 7 8 9]';
y=[1 2.31969 4.50853 6.90568 6.00512 5.56495 5.32807 7.56101 8.9392 9.5817]';
beta0=[3 0.3 11];
[beta,R,J]=nlinfit(x,y,'model',beta0)
运行后得到如下结果:
beta =
3.5457 0.3194 10.8337
R =
-1.3833
-0.7098
0.7359
2.3149
0.5556
-0.7416
-1.7921
-0.2955
0.4443
0.5539
J =
-0.5243 0 0.2200
-0.6155 2.1823 0.2797
-0.6935 4.9176 0.3483
-0.7461 7.9359 0.4238
-0.7638 10.8325 0.5031
-0.7432 13.1754 0.5822
-0.6883 14.6416 0.6573
-0.6088 15.1101 0.7253
-0.5171 14.6675 0.7842
-0.4243 13.5395 0.8334
其中的
beta =
3.5457 0.3194 10.8337
依次便是方程的系数:a=3.5457 b=0.3194 L=10.8337
所以回归的结果是:
y=10.8337./(1+3.5457.*exp(-0.3194.*x))
画出图像,在命令窗口中输入如下代码:
x=[0 1 2 3 4 5 6 7 8 9]';
x1=0:0.1:10;
y=[1 2.31969 4.50853 6.90568 6.00512 5.56495 5.32807 7.56101 8.9392 9.5817]';
y1=10.8337./(1+3.5457.*exp(-0.3194.*x1));
plot(x,y,'+',x1,y1)
计算x=10的估计值,输入如下代码:
x=10;
回车运行后得到结果为:
y =
9.4584