《数学建模中常用的模型,及程序》由会员分享,可在线阅读,更多相关《数学建模中常用的模型,及程序(5页珍藏版)》请在金锄头文库上搜索。
1、数学建模中常用的模型及程序:1 灰色预测:程序一:先建立 M 文件:function GM1=fungry1(x0)T=input(T=);x1=zeros(1,length(x0);B=zeros(length(x0)-1,2);yn=zeros(length(x0)-1,1);Hatx0=zeros(1,length(x0)+T);Hatx00=zeros(1,length(x0);Hatx1=zeros(1,length(x0)+T);epsilon=zeros(length(x0),1);omega=zeros(length(x0),1);for i=1:length(x0)for j
2、=1:i x1(i)=x1(i)+x0(j);end end for i=1:length(x0)-1 B(i,1)=(-1/2)*(x1(i)+x1(i+1);B(i,2)=1;yn(i)=x0(i+1);end HatA=(inv(B*B)*B*yn for k=1:length(x0)+T Hatx1(k)=(x0(1)-HatA(2)/HatA(1)*exp(-HatA(1)*(k-1)+HatA(2)/HatA(1);end Hatx0(1)=Hatx1(1);for k=2:length(x0)+T Hatx0(k)=Hatx1(k)-Hatx1(k-1);end for i=1:
3、length(x0)epsilon(i)=x0(i)-Hatx0(i);omega(i)=(epsilon(i)/x0(i)*100;end%x0,Hatx1,Hatx0,epsilon,omega,c=std(epsilon)/std(x0);p=0;for i=1:length(x0)if abs(epsilon(i)-mean(epsilon)0.95&c0.85&c0.70&c0.65 disp(The model is not good and the forecast is:),disp(Hatx0(length(x0)+T)else p0.65 disp(The model is
4、 bad and try again)end for i=1:length(x0)Hatx00(i)=Hatx0(i);end z=1:length(x0);plot(z,x0,-,z,Hatx00,:)text(2,x0(2),History data:real line)text(length(x0)/2,Hatx00(length(x0)/2,Simulation data:broken line)end 在 matlab 命令窗口中输入:x0=。;%原始数据矩阵 fungry1(x0);Matlab 命令窗口中将提示:T=这时输入1 将表示所得结果为从原始数据最后一个算起的第一个预测值
5、,输入 2 表示。程序二:y=input(请输入数据 );n=length(y);yy=ones(n,1);yy(1)=y(1);名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 5 页 -for i=2:n yy(i)=yy(i-1)+y(i);end B=ones(n-1,2);for i=1:(n-1)B(i,1)=-(yy(i)+yy(i+1)/2;B(i,2)=1;end BT=B;for i=1:(n-1)YN(i)=y(i+1);end YM=YN;A=inv(BT*B)*BT*YM;a=A(1);u=A(2);t=u/a;for i=1:n-1 yyy(i+1)=(
6、y(1)-t)*exp(-a*i)+t;end for i=1:n-1 y_y(i+1)=yyy(i+1)-yyy(i);名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 5 页 -end for i=1:n m(i)=abs(y_y(i)-y(i);end p=1:n;subplot(1,2,1),plot(p,y_y,p,y,r*),title(申请量 模拟曲 线)subplot(1,2,2),plot(m),title(误差曲线)t_n=input(请输入需要预测个数:);for i=0:t_n-1 q(i+1)=(y(1)-t)*exp(-a*i)+t;end ff(1)=
7、q(1);for i=1:t_n-1 ff(i+1)=q(i+1)-q(i);end disp(vpa(ff,6)神经模型:P=1601 5421 1890 4439 1703 3232 376 1167 1897 3737 1807 1628 1723 2584 1551 2479 1199 4148 2449 2026 1690 3374 2015 2480 850 2249 1674 3666 2029;T=5421 1890 4439 1703 3232 376 1167 1897 3737 1807 1628 1723 2584 1551 2479 1199 4148 2449 20
8、26 1690 3374 2015 2480 850 2249 1674 3666 2029 1238;%这样建立的是根据第一个月,预测第二个月的神经系统模型,P 中每一个对应于T 中每一个,而 T 中每一个是 P 中相对应的下一个月的数据名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 5 页 -net=newff(minmax(P),5 1,tansig purelin);Y=sim(net,P);plot(P,T,P,Y,o)net.trainParam.epochs=10000;net=train(net,P,T);Y=sim(net,P);plot(P,T,P,Y,o)x
9、0=1601 5421 1890 4439 1703 3232 376 1167 1897 3737 1807 1628 1723 2584 1551 2479 1199 4148 2449 2026 1690 3374 2015 2480 850 2249 1674 3666 2029 1238;Y=sim(net,x0)%记下最后一个数据,作为7 月 1 号的x1=1601 5421 1890 4439 1703 3232 376 1167 1897 3737 1807 1628 1723 2584 1551 2479 1199 4148 2449 2026 1690 3374 2015 2480 850 2249 1674 3666 2029 1238,x0 的最后一个数据;Y=sim(net,x1)依次做下去,做到第x7 名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 5 页 -