1樓:匿名使用者
logistic模型:a/(1+(a/b-1)*exp(-k*t))
實現**:
clc,clear all,close all
%logistic模型用matlab求解
%時間是2023年到2023年
%資料是q=[503.02 526.02 561.
96 629.2 700.21 788.
15 876.76 989.23 1058.
23 1135.13 1330]
%要**2023年的用水量。
t=[1:11];
q=[503.02 526.02 561.
96 629.2 700.21 788.
15 876.76 989.23 1058.
23 1135.13 1330];
func=inline('a(1)./(1+(a(1)/a(2)-1)*exp(-a(3).*t))','a','t');
b=[0.1576 0.9706 0.9572]
a=lsqcurvefit(func,b,t,q);
q1=func(a,t);
y=q';y1=q';
wz=['q=',num2str(a(1)),'/(1+(',num2str(a(1)),'/',num2str(a(2)),'-1)*','exp(-',num2str(a(3)),'*t)'];
figure
tt=2000:2010;
xx=min(t):1:max(t);
yy=func(a,xx);
plot(tt,q,'rp'),hold on
plot(tt,yy,'*-'),xlabel('年份'),ylabel('用水量(萬噸)'),hold off %,grid on
text(2000,1300,wz,'fontsize',10);
t0=2015-2000+1;y0=func(a,t0);
text(2000,1200,['**2023年的用水量:',num2str(max(y0)),'(萬噸)'])
執行結果
**2023年的用水量:1972萬噸
2樓:置之不理
多項式函式擬合:a=polyfit(xdata,ydata,n)其中n表示多項式的最高階數,xdata,ydata為將要擬合的資料,它是用陣列的方式輸入.輸出引數a為擬合多項式的係數
多項式在x處的值y可用下面程式計算.
y=polyval(a,x)
matlab擬合非線性函式,如何用matlab進行已知函式的非線性擬合
兔子和小強 線性模型 非線性模型是以待優化引數w為參考 而不是看x y w x 表示轉置 描述的是線性模型。題目中要擬合的函式是 y w0 w1 cos a wn cosna,它同樣符合y w x,其中x 1 cosa cosna 設x構成的集合是x,y構成的集合是y,可依據最小二乘法求出w xx ...
matlab線性擬合
刻舟不為劍 線性擬合如下 x 0 20 40 60 100 130 160 190 y 18 17.586 17.136 16.704 15.84 15.129 14.544 13.896 a polyfit x,y,1 xi 0 0.001 200 yi polyval a,xi plot x,y...
matlab擬合問題
直接用左除就行了 定義x和y為如下形式 y y1 y2.y56 x 1 x11 x12 x16 1 x21 x22 x26 1 x56,1 x56,2 x56,6 然後a x y 就出來了 曲線你有6個自變數怎麼畫啊 你把a0,a1,a2,a3,a4,a5,a6看成未知數。把你的56個資料代入 y1...