x=[1790:10:2000]; y=[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]; x=x';y=y'; % 將原始數據轉換為列向量 st_ = [500 20 0.2]; % xm,b,r 設定初始值 ft_ = fittype('xm/(1+b*exp(-r*(x-1790)))','dependent',{'y'},'independent',{'x'},'coefficients',{'xm', 'b', 'r'}); cf_ = fit(x,y,ft_ ,'Startpoint',st_) % 模型輸出的擬合參數 xm = 446.6; % 擬合出的最大人口數量xm b = 57.01; % b=xm/x0; r = 0.02155; % 擬合出的人口增長率r % 畫圖 scatter(x,y); % 散點圖 hold on; x1=[1790:10:2300]; % 檢驗查看擬合曲線是否為S型曲線 cf_ = xm./(1+b*exp(-r*(x1-1790))); plot(x1,cf_); grid
%例子1:正規戰爭(課本p150) %模型類型:一階微分方程組 %數值解法:RK4:ode45() %% f1.m function dz=f(t,z) %z=[x,y] a=0.5; %甲方戰斗系數 b=0.5; %乙方戰斗系數 dz(1)=-a*z(2); dz(2)=-b*z(1); dz=dz(:); end %% lizi1.m x0=[1:1:10]; %甲方兵力變化 y0=[10:-1:1]; %乙方兵力變化 for i=1:10 [t,z]=ode45(@f,[0:0.02:2],[x0(i),y0(i)]) k(i)=0.5*y0(i)^2-0.5*x0(i)^2; %a=0.5,b=0.5,計算k plot(z(:,1),z(:,2)); axis([0,10,0,10]); hold on End %模型:混合戰爭:甲方游擊部隊,乙方正規部隊(課本p152) %模型類型:一階微分方程組 %數值解法:RK4:ode45() function dz=f(t,z) %z=[x,y] c=0.5; %甲方戰斗系數 d=0.5; %乙方戰斗系數 dz(1)=-c*z(1)*z(2); dz(2)=-d*z(1); dz=dz(:); end %%混合戰爭模型 %f2.m function dz=f2(t,z) %z=[x,y] c=0.5; %甲方戰斗系數 d=0.5; %乙方戰斗系數 dz(1)=-c*z(1)*z(2); dz(2)=-d*z(1); dz=dz(:); End %Lizi2.m x0=[1:1:10]; %甲方兵力變化 y0=[10:-1:1]; %乙方兵力變化 for i=1:10 [t,z]=ode45(@f1,[0:0.02:2],[x0(i),y0(i)]) n(i)=0.5*y0(i)^2-2*0.5*x0(i); %c=0.5,d=0.5,計算n plot(z(:,1),z(:,2)); axis([0,11,0,11]); hold on end
參考資料:
https://zhidao.baidu.com/question/163154587.html