描述实际对象的某些特性随时间(或空间)而演变的过程、分析它的变化规律、预测它的未来性态、研究它的控制手段。
dxy=@(t,x)[-0.0544*x(2)+54000*(t>=0 & t<1)+6000*(t>=2 & t<3)+13000*(t>=5 & t<6)
-0.0106*x(1)];
[t,xy]=ode45(dxy,[0:36],[0,21500])
subplot(211), plot(t,xy(:,1),'r*',t,xy(:,2),'gD')
xlabel('时间t'), ylabel('人数'), legend('美军','日军')
subplot(212), plot(xy(:,1),xy(:,2))
xlabel('美军人数x'), ylabel('日军人数y')
使用的不是原始数据序列,而是生成的数据序列。只适用于中短期的预测,指数增长的预测。
一阶微分方程,且只含一个变量
clc,clear
x0=[71.1 72.4 72.4 72.1 71.4 72.0 71.6]'; %注意这里为列向量
n=length(x0);
lamda=x0(1:n-1)./x0(2:n) %计算级比
range=minmax(lamda') %计算级比的范围
x1=cumsum(x0) %累加运算
B=[-0.5*(x1(1:n-1)+x1(2:n)),ones(n-1,1)];
Y=x0(2:n);
u=B\Y %拟合参数u(1)=a,u(2)=b
syms x(t)
x=dsolve(diff(x)+u(1)*x==u(2),x(0)==x0(1)); %求微分方程的符号解
xt=vpa(x,6) %以小数格式显示微分方程的解
yuce1=subs(x,t,[0:n-1]); %求已知数据的预测值
yuce1=double(yuce1); %符号数转换成数值类型,否则无法做差分运算
yuce=[x0(1),diff(yuce1)] %差分运算,还原数据
epsilon=x0'-yuce %计算残差
delta=abs(epsilon./x0') %计算相对误差
rho=1-(1-0.5*u(1))/(1+0.5*u(1))*lamda' %计算级比偏差值u(1)=a
非单调的摆动发展序列或有饱和的S形序列
(1)GM(2, 1)模型
clc,clear
x0=[41,49,61,78,96,104]; %原始序列
n=length(x0);
x1=cumsum(x0) %计算1次累加序列
次a_x0=diff(x0)' %计算1次累减序列
z=0.5*(x1(2:end)+x1(1:end-1))'; %计算均值生成序列
B=[-x0(2:end)',-z,ones(n-1,1)];
u=B\a_x0 %最小二乘法拟合参数
syms x(t)
x=dsolve(diff(x,2)+u(1)*diff(x)+u(2)*x==u(3),x(0)==x1(1),x(5)==x1(6));
xt=vpa(x,6)
yuce=subs(x,t,0:n-1); %求已知数据点1次累加序列的预测值
yuce=double(yuce)
x0_hat=[yuce(1),diff(yuce)]; %求已知数据点的预测值
x0_hat=round(x0_hat) %四舍五入取整数
epsilon=x0-x0_hat %求残差
delta=abs(epsilon./x0) %求相对误差
(2)DGM(2, 1)模型
clc,clear
x0=[2.874,3.278,3.39,3.679,3.77,3.8];
n=length(x0);
a_x0=diff(x0)'; %一阶向前差分
B=[-x0(2:end)',ones(n-1,1)];
u=B\a_x0
syms x(t)
d2x=diff(x,2); dx=diff(x);
x=dsolve(d2x+u(1)*dx==u(2),x(0)==x0(1),dx(0)==x0(1))
xt=vpa(x,6)
yuce=subs(x,'t',0:n-1);
yuce=double(yuce)
x0_hat=[yuce(1),diff(yuce)]
epsilon=x0-x0_hat
delta=abs(epsilon./x0)
(3)灰色Verhulst预测模型
描述具有饱和状态的过程,即S形过程
clc,clear
x0=[4.93 2.33 3.87 4.35 6.63 7.15 5.37 6.39 7.81 8.35];
x1=cumsum(x0);
n=length(x0);
z=0.5*(x1(2:n)+x1(1:n-1));
B=[-z',z'.^2];
Y=x0(2:end)';
u=B\Y
syms x(t)
x=dsolve(diff(x)+u(1)*x==u(2)*x^2,x(0)==x0(1));
xt=vpa(x,6)
yuce=subs(x,'t',[0:n-1]);
yuce=double(yuce)
x0_hat=[yuce(1),diff(yuce)]
epsilon=x0-x0_hat
delta=abs(epsilon./x0)
xlswrite('book4.xls',[x0',x0_hat',epsilon',delta'])
y0=[11 16 25 12 12 18 26 14 13 20 27 15 15 24 30 15 16 25 32 17]';
y=y0(9:20);
x=[y0(5:16),y0(1:12),ones(12,1)];
z=x\y
for t=21:25
y0(t)=z(1)*y0(t-4)+z(2)*y0(t-8)+z(3);
end
yhat=y0(21:25)
clc, clear
M=600; N=420; p=200; q=2282;
eq=@(x) x^M-(1+q/p)*x^(M-N)+q/p;
x=fzero(eq,[1.0001,1.5])
某一系统在已知现在情况的条件下,系统未来时刻的情况只与现在有关,而与过去的历史无直接关系。
clc,clear
format rat %数据格式是有理分数
fid=fopen('msdata.txt','r');
a=[];
while (~feof(fid))
a=[a fgetl(fid)]; %把所有字符串连接成一个大字符串行向量
end
for i=0:1
for j=0:1
s=[int2str(i),int2str(j)];
f(i+1,j+1)=length(findstr(s,a));
end
end
fs=sum(f,2); %求f矩阵的行和
f=f./repmat(fs,1,size(f,2)) %求状态转移频率
format rat
p=[0.8 0.1 0.1;0.5 0.1 0.4;0.5 0.3 0.2];
a=[p'-eye(3);ones(1,3)]; %构造方程组ax=b的系数矩阵
b=[zeros(3,1);1]; %构造方程组ax=b的常数项列
p_limit=a\b
format %恢复到短小数的显示格式
对于显著水平 α \alpha α,由时间序列 a i a_i ai计算(t, R t R_t Rt)的Spearman秩相关系数q
若|T|> t α / 2 t_{\alpha/2} tα/2(n-2),则拒绝 H 0 H_0 H0,认为序列非平稳。且当q>0时,认为序列有上升趋势,q<0时,认为序列有下降趋势。又当|T|> t α / 2 t_{\alpha/2} tα/2(n-2)时,接受 H 0 H_0 H0,认为序列平稳。
clc, clear
a=[15.2 15.9 18.7 22.4 26.9 28.3 30.5
33.8 40.4 50.7 58 66.7 81.2 83.4];
a=a'; a=a(:); a=a';
Rt=tiedrank(a)
n=length(a); t=1:n;
Qs=1-6/(n*(n^2-1))*sum((t-Rt).^2) %计算q的值
T=Qs*sqrt(n-2)/sqrt(1-Qs^2) %计算T统计量的值
t_0=tinv(0.975,n-2) %计算上alpha/2分位数
b=diff(a)
m=ar(b,2,'ls')
bhat=predict(m,b')
bhat(end+1)=forecast(m,b',1)
ahat=[a(1), a+bhat']
delta=abs((ahat(1:end-1)-a)./a)
xlswrite('yu.xls',ahat), xlswrite('yu.xls',delta,'Sheet1','A3')
clc,clear
syms x y
syms z positive %定义符号变量z为正
format long g
a=load('daodan.txt');
d=a(:,[2:end]);
n=size(a,1); sol=[];
for i=1:n
eq1=x^2+y^2+z^2-d(i,1)^2;
eq2=x^2+(y-4500)^2+z^2-d(i,2)^2;
eq3=(x+2000)^2+(y-1500)^2+z^2-d(i,3)^2;
[xx,yy,zz]=solve(eq1,eq2,eq3);
sol=[sol;double([xx,yy,zz])];
end
sol
pp1=csape(a(:,1),sol(:,1))
xishu1=pp1.coefs(end,:)
pp2=csape(a(:,1),sol(:,2))
xishu2=pp2.coefs(end,:)
pp3=csape(a(:,1),sol(:,3))
xishu3=pp3.coefs(end,:)
clc, clear
a=load('jishu.txt');
t=a([1,3],:); t=t(:);
n=a([2,4],:); n=n(:);
xishu=[n.^2,n]; %构造系数矩阵
ab=xishu\t
n0=4450
that=ab(1)*n0^2+ab(2)*n0
clc, clear
a=load('jingliu.txt');
a=a';
P=a([1:4],[1:end-1]); [PN,PS1]=mapminmax(P);
T=a(5,[1:end-1]); [TN,PS2]=mapminmax(T);
net1=newrb(PN,TN) %训练RBF网络
x=a([1:4],end); xn=mapminmax('apply',x,PS1);
yn1=sim(net1,xn); y1=mapminmax('reverse',yn1,PS2)
delta1=abs(a(5,20)-y1)/a(5,20) %求预测的相对误差
net2=feedforwardnet(4); %初始化BP网络,隐含层的神经元取为4个
net2 = train(net2,PN,TN);
yn2= net2(xn); y2=mapminmax('reverse',yn2,PS2)