Logistic模型的分岔图(MATLAB实现)

Logistic模型的分岔图(MATLAB实现),第1张

clc, clearx = 0.5i  =  1for mu=0:0.00001:2    x = 1-mu*x*x     派信   迅羡做y(i) = x     亩衡   i = i+1endplot(0:0.00001:2,y,'.')hold onxlabel('\mu')ylabel('x')虫口模型分岔

怎么利用人口数据和非线性最小二乘法估计y=Xm/[1+(Xm/X0-1)*exp(-r*t)]式中r,x0,xm的值?其求解液陪山方法如下:

1、将【1790年乱御~2000年】的年份按序列来表示,闹中并赋值给t。即

t=1:22%1——代表1790年,2——代表1800年,。。。,22——代表2000年

2、将人口数赋值给y

3、自定义logistic模型函数,即

fun=inline('a(1)./(1+(a(1)/a(2)-1)*exp(-a(3).*t))','a','t')

4、使用nlinfit非线性最小二乘法函数,拟合系数Xm、X0、r,即

a= nlinfit(t,y,fun,b)

5、使用plot绘图函数,绘制拟合前后对比图

6、根据上述方法,编写程序并执行,可以得到如下结果。

【亩数1】初始值是这么定的:

>>[c,d]=solve('c/(1+(c/60.2-1)*exp(-5*d))=67.2','c/(1+(c/60.2-1)*exp(-20*d))=90.9','c','d')

c =

62.457687920920008140916437719297-1.6291275002135204129081793780683*i

62.457687920920008140916437719297+1.6291275002135204129081793780683*i

241.95986840768380162085441918688

d =

-.95675170588036288272009149214033e-1+.43712460153973020393407947582405*i

-.95675170588036288272009149214033e-1-.43712460153973020393407947582405*i

.29854891132649696390901254874996e-1

【2】fun的函数形式就是logistic函数。

【3】b1 =

180.9871 0.0336

可以改成这样,效果一样:

%==============

[c,d]=solve('c/(1+(c/60.2-1)*exp(-5*d))=67.2','c/(1+(c/60.2-1)*exp(-20*d))=90.9','c','d') %求初始参数

t=0:51%令1954年为初始年

x=[60.2 61.5 62.8 64.6 66 67.2 66.2 65.9 67.3 69.1 70.4 72.5 74.5 76.3 78.5 80.7 83 85.2 87.1 89.2 90.9 92.4 93.7 95 96.259 97.5 98.705 100.1 101.654 103.008 104.357 105.851 107.5 109.3 111.026 112.704 114.333 115.823 117.171 118.517 119.85 121.121 122.389 123.626 124.761 125.786 126.743 127.627 128.453 129.227 129.988 130.756]

b0=[ eval(c(3)), eval(d(3))]%初始参数值

fun=inline('b(1)./(1+(b(1)/60.2-1)*exp(-b(2)*t))','b','t')

[b1,r1,j1]=nlinfit(t,x,fun,b0)

y1=fun(b1,t)%非线性拟合的方程

plot(t+1954,x,'*',t+1954,y1) %对原始数据与曲线拟合后的值作图

grid

R1=r1.^2

R2=(x-mean(x)).^2

R=1-R1/R2 %可决虚信系数差耐轮

W=sum(abs(r1)) %残差绝对值之

%==============


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12255664.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存