永发信息网

新陈代谢gm(1,1)模型matlab程序

答案:2  悬赏:60  手机版
解决时间 2021-02-03 15:53
  • 提问者网友:萌卜娃娃
  • 2021-02-03 12:45
新陈代谢gm(1,1)模型matlab程序
最佳答案
  • 五星知识达人网友:骨子里都是戏
  • 2021-02-03 13:12
function GM1_1(X0)%format long ;[m,n]=size(X0); X1=cumsum(X0);   %累加 X2=[];for i=1:n-1    X2(i,:)=X1(i)+X1(i+1);endB=-0.5.*X2 ;t=ones(n-1,1);B=[B,t]  ;      % 求B矩阵YN=X0(2:end)  ;P_t=YN./X1(1:(length(X0)-1)) %对原始数据序列X0进行准光滑性检验,                            %序列x0的光滑比P(t)=X0(t)/X1(t-1)A=inv(B.'*B)*B.'*YN.' ;a=A(1) u=A(2) c=u/a  ;b=X0(1)-c ; X=[num2str(b)ot'exp','(',num2str(-a),'k',')',num2str(c)]; strcat('X(k+1)=',X) %syms k; for t=1:length(X0)     k(1,t)=t-1; end kY_k_1=b*exp(-a*k)+c;for j=1:length(k)-1   Y(1,j)=Y_k_1(j+1)-Y_k_1(j);endXY=[Y_k_1(1),Y]    %预测值CA=abs(XY-X0) ;    %残差数列Theta=CA       %残差检验 绝对误差序列XD_Theta= CA ./ X0   %残差检验 相对误差序列AV=mean(CA);       % 残差数列平均值 R_k=(min(Theta)+0.5*max(Theta))./(Theta+0.5*max(Theta)) ;% P=0.5R=sum(R_k)/length(R_k)  %关联度Temp0=(CA-AV).^2 ;Temp1=sum(Temp0)/length(CA);S2=sqrt(Temp1) ;    %绝对误差序列的标准差%----------AV_0=mean(X0);     % 原始序列平均值Temp_0=(X0-AV_0).^2 ;Temp_1=sum(Temp_0)/length(CA);S1=sqrt(Temp_1)   ;     %原始序列的标准差TempC=S2/S1*100;      %方差比C=strcat(num2str(TempC)cyc'%')   %后验差检验  %方差比    %----------SS=0.675*S1 ;Delta=abs(CA-AV) ;TempN=find(Delta<=SS);N1=length(TempN);N2=length(CA);TempP=N1/N2*100;P=strcat(num2str(TempP)'%')   %后验差检验    %计算小误差概率   调用例子:X0=[2.874,3.278,3.337,3.39,3.679];GM1_1(X0)参考资料:我自己想的,算法不是很优,希望你自己改进吧...余下全文>>
全部回答
  • 1楼网友:神鬼未生
  • 2021-02-03 13:52
任务占坑
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯