当前位置:首页 > 代码 > 正文

gm11的matlab代码(gmres matlab)

admin 发布:2022-12-19 20:45 166


本篇文章给大家谈谈gm11的matlab代码,以及gmres matlab对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

灰色系统预测GM(1,1)模型的MATLAB源代码

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);

end

B=-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),'exp','(',num2str(-a),'k',')',num2str(c)];

strcat('X(k+1)=',X)

%syms k;

for t=1:length(X0)

k(1,t)=t-1;

end

k

Y_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);

end

XY=[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.5

R=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),'%') %后验差检验 %方差比

%----------

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)

matlab中灰色模型新陈代谢模型的代码

result(i) = gm11(x0,1); % 将预测一期的结果保存到result中,这段代码总是有错误提示。其原因是题主缺这个 gm11()  灰色模型自定义函数。解决方法,下载或求助这个函数文件。

MATLAB程序问题

提示说,你的第13行有问题。你的第13行里“B(i,1)=-0.5*(X1(i)+X1(i+1));%计算B,Yn”,矩阵B在之前没有初始化就拿来直接用了。

灰色系统预测GM(1,1)模型的MATLAB详细源代码

%%%%%%%%%%%%%%%%把下面函数保存为gmcal.m文件%%%%%%%%%%%

function gmcal=gm1(x)

sizexd2 = size(x,2);

%求数组长度

k=0;

for y1=x

k=k+1;

if k1

x1(k)=x1(k-1)+x(k);

%累加生成

z1(k-1)=-0.5*(x1(k)+x1(k-1));

%z1维数减1,用于计算B

yn1(k-1)=x(k);

else

x1(k)=x(k);

end

end

%x1,z1,k,yn1

sizez1=size(z1,2);

%size(yn1);

z2 = z1';

z3 = ones(1,sizez1)';

YN = yn1'; %转置

%YN

B=[z2 z3];

au0=inv(B'*B)*B'*YN;

au = au0';

%B,au0,au

afor = au(1);

ufor = au(2);

ua = au(2)./au(1);

%afor,ufor,ua

%输出预测的 a u 和 u/a的值

constant1 = x(1)-ua;

afor1 = -afor;

x1t1 = 'x1(t+1)';

estr = 'exp';

tstr = 't';

leftbra = '(';

rightbra = ')';

%constant1,afor1,x1t1,estr,tstr,leftbra,rightbra

strcat(x1t1,'=',num2str(constant1),estr,leftbra,num2str(afor1),tstr,rightbra,'+',leftbra,num2str(ua),rightbra)

%输出时间响应方程,也就是最终要求的灰色模型

%%%%%%%%%%%%%%%%%%%%%在workspace里输入%%%%%%%%%%%%

x =[5999,5903,5848,5700,7884];gm1(x)

%其中5999,5903,5848,5700,7884可以换成已知的历史数据,无论几个都可以。

gm11的matlab代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于gmres matlab、gm11的matlab代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/23440.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载