初学图论书籍:Matlab灰色预测工具箱——走过数模
来源:百度文库 编辑:中财网 时间:2024/04/27 18:37:41
Matlab灰色预测工具箱——走过数模 2009-07-02 23:05灰色预测几乎是每年数模培训必不可少的内容,相对来说也是比较简单,这里写了四个函数,方便在Matlab里面调用,分别是GM(1,1),残差GM(1,1),新陈代谢GM(1,1),Verhust
自己写得难免有所疏忽,需要的朋友自己找本书本来试验一下。。
Gm(1,1)
function [px0,ab,rel]=gm11(x0,number)
%[px0,ab,rel]=gm11(x0,number)
%px0为预测数列,rel为平均相对误差,rel为平均相对误差(为百分比)
%默认的number参数为原数组大小
if nargin==1
number=max(size(x0));
end
n=max(size(x0));
x1=zeros(size(x0));
for k=1:n
for i=1:k
x1(k)=x1(k)+x0(i);
end
end
z=zeros(size(x0));
for k=2:n
z(k)=0.5*(x1(k)+x1(k-1));
end
y=x0';
y(1)=[];
b(:,1)=-z';
b(:,2)=1;
b(1,:)=[];
ab=inv(b'*b)*b'*y;
a=ab(1);
b=ab(2);
px0(1)=x0(1);
%求还原值系列
for k=1:number-1
px0(k+1)=(1-exp(a)) * ( x0(1)-b/a ) * exp(-a*k);
end
temp=px0(1:n);
x0;
temp=(temp-x0)./x0; %相对误差
temp(1)=[]; %删除第一个为零的误差
temp=abs(temp);
rel=sum(temp)/(n-1)*100;
残差Gm(1,1)
function [px0,ab,rel]=ccgm11(x0,number)
%[px0,ab,rel]=gm11(x0,number)
%px0为残差预测数列,ab为求得的系数,rel为平均相对误差(为百分比)
%默认的number参数为原数组大小
if nargin==1
number=max(size(x0));
end
n=max(size(x0)); %数组大小..
[px0,ab,rel]=gm11(x0,number);
wucha=x0-px0(1:n);
i=n;
%求后面的同号的数目.
while(wucha(i)*wucha(i-1)>0 & i>=2)
i=i-1;
end
start=i;
length=n-i+1;
new=wucha(start:n);
if length>=4
pwucha=gm11(new);
px0(start:n)=px0(start:n)+pwucha
clear wucha;
wucha=px0-x0;
wucha=wucha./x0; %相对误差
wucha=abs(wucha);
rel=sum(wucha)/(n-1)*100;
end
verhust
function [px0,ab,rel]=verhust(x1,number)
%[px0,ab,rel]=verhust(x0,number)
%px0为预测数列,rel为平均相对误差,rel为平均相对误差(为百分比)
%默认的number参数为原数组大小
if nargin==1
number=max(size(x1));
end
n=max(size(x1));
x0(1)=x1(1);
for k=2:n
x0(k)=x1(k)-x1(k-1);
z(k)=0.5*(x1(k)+x1(k-1));
end
x0;
z;
B=[-(z(2:n))' (z(2:n).^2)'];
B;
Y=(x0(2:n))';
Y;
ab=inv(B'*B)*B'*Y;
a=ab(1);b=ab(2);
for k=1:number
px0(k)=(a*x1(1))/(b*x1(1)+(a-b*x1(1)).*exp(a*(k-1)));
end
temp=px0(1:n);
x1;
temp=(temp-x1)./x1; %相对误差
temp(1)=[]; %删除第一个为零的误差
temp=abs(temp);
rel=sum(temp)/(n-1)*100;
新陈代谢Gm(1,1)
function [px0,ab,rel]=xcdxgm11(x0,number,step)
%[px0,ab,rel]=xcdxgm11(x0,number,step)
%x0为原系列,number为要预测的数目,step为基本步长
%px0为预测数列,rel为平均相对误差,rel为平均相对误差(为百分比)
%默认的number参数为原数组大小
%模型假设预测的数据和原始数据都要大于等于5
if nargin==1
number=max(size(x0));
step=max(size(x0));
end
if nargin==2
step=max(size(x0));
end
n=max(size(x0));
if n error('此模型要求至少有五个原始数据,并且原始数据个数要大于新陈代谢的步长.');
end
[px0,ab,rel]=gm11(x0,n);
last=n;
x0;
px0;
while last begin=last-step+1;
temp=px0(begin:last);
temp=gm11(temp,step+1);
last=last+1;
px0(last)=temp(step+1);
end
自己写得难免有所疏忽,需要的朋友自己找本书本来试验一下。。
Gm(1,1)
function [px0,ab,rel]=gm11(x0,number)
%[px0,ab,rel]=gm11(x0,number)
%px0为预测数列,rel为平均相对误差,rel为平均相对误差(为百分比)
%默认的number参数为原数组大小
if nargin==1
number=max(size(x0));
end
n=max(size(x0));
x1=zeros(size(x0));
for k=1:n
for i=1:k
x1(k)=x1(k)+x0(i);
end
end
z=zeros(size(x0));
for k=2:n
z(k)=0.5*(x1(k)+x1(k-1));
end
y=x0';
y(1)=[];
b(:,1)=-z';
b(:,2)=1;
b(1,:)=[];
ab=inv(b'*b)*b'*y;
a=ab(1);
b=ab(2);
px0(1)=x0(1);
%求还原值系列
for k=1:number-1
px0(k+1)=(1-exp(a)) * ( x0(1)-b/a ) * exp(-a*k);
end
temp=px0(1:n);
x0;
temp=(temp-x0)./x0; %相对误差
temp(1)=[]; %删除第一个为零的误差
temp=abs(temp);
rel=sum(temp)/(n-1)*100;
残差Gm(1,1)
function [px0,ab,rel]=ccgm11(x0,number)
%[px0,ab,rel]=gm11(x0,number)
%px0为残差预测数列,ab为求得的系数,rel为平均相对误差(为百分比)
%默认的number参数为原数组大小
if nargin==1
number=max(size(x0));
end
n=max(size(x0)); %数组大小..
[px0,ab,rel]=gm11(x0,number);
wucha=x0-px0(1:n);
i=n;
%求后面的同号的数目.
while(wucha(i)*wucha(i-1)>0 & i>=2)
i=i-1;
end
start=i;
length=n-i+1;
new=wucha(start:n);
if length>=4
pwucha=gm11(new);
px0(start:n)=px0(start:n)+pwucha
clear wucha;
wucha=px0-x0;
wucha=wucha./x0; %相对误差
wucha=abs(wucha);
rel=sum(wucha)/(n-1)*100;
end
verhust
function [px0,ab,rel]=verhust(x1,number)
%[px0,ab,rel]=verhust(x0,number)
%px0为预测数列,rel为平均相对误差,rel为平均相对误差(为百分比)
%默认的number参数为原数组大小
if nargin==1
number=max(size(x1));
end
n=max(size(x1));
x0(1)=x1(1);
for k=2:n
x0(k)=x1(k)-x1(k-1);
z(k)=0.5*(x1(k)+x1(k-1));
end
x0;
z;
B=[-(z(2:n))' (z(2:n).^2)'];
B;
Y=(x0(2:n))';
Y;
ab=inv(B'*B)*B'*Y;
a=ab(1);b=ab(2);
for k=1:number
px0(k)=(a*x1(1))/(b*x1(1)+(a-b*x1(1)).*exp(a*(k-1)));
end
temp=px0(1:n);
x1;
temp=(temp-x1)./x1; %相对误差
temp(1)=[]; %删除第一个为零的误差
temp=abs(temp);
rel=sum(temp)/(n-1)*100;
新陈代谢Gm(1,1)
function [px0,ab,rel]=xcdxgm11(x0,number,step)
%[px0,ab,rel]=xcdxgm11(x0,number,step)
%x0为原系列,number为要预测的数目,step为基本步长
%px0为预测数列,rel为平均相对误差,rel为平均相对误差(为百分比)
%默认的number参数为原数组大小
%模型假设预测的数据和原始数据都要大于等于5
if nargin==1
number=max(size(x0));
step=max(size(x0));
end
if nargin==2
step=max(size(x0));
end
n=max(size(x0));
if n
end
[px0,ab,rel]=gm11(x0,n);
last=n;
x0;
px0;
while last
temp=px0(begin:last);
temp=gm11(temp,step+1);
last=last+1;
px0(last)=temp(step+1);
end
matlab工具箱
《matlab工具箱应用》电子书
怎样安装Matlab数学工具箱
matlab的工具箱功能详解
小弟跪求Matlab小波工具箱!
matlab中的asamin工具箱怎么用呀?
Matlab工具箱中的ccslink是什么啊
treeview 在工具箱中显示灰色,怎么回事
用matlab如何做时间序列预测
如何用matlab编程实现滚动预测?
matlab的工具箱比较全的在哪可以下载?
关于matlab的simulink里面模糊工具箱的问题
急求雷英杰编著《Matlab遗传算法工具箱及应用》电子版
急求雷英杰编著《Matlab遗传算法工具箱及应用》电子版
急求雷英杰编著《Matlab遗传算法工具箱及应用》电子版
急求雷英杰编著《Matlab遗传算法工具箱及应用》电子版
急求雷英杰编著《Matlab遗传算法工具箱及应用》电子版
matlab遗传算法工具箱中ga函数的用法
什么是数模
我刚下了一个matlab的工具箱,怎么样才能加载道matlab的开始菜单的toolbox里面去?谢谢
安装matlab时常见的工具箱都有什么(数学实验,数学模型方面的)
哪位知道基于MATLAB的量子力学工具箱在哪里可以下载到???急!!!
跪求可用于MATLAB图像工具箱处理的CT图像(最好人脸)若干
从网上下载的matlab工具箱软件包,要怎么加载进软件中?