『壹』 跪求用MATLAB建立GM(1,1)模型预测到2020年的代码
实现用MATLAB建立GM(1,1)模型预测(已知:2007~2013年碰撞事故的次数)直到2020年发生碰撞事故的次数。可以通过下列步骤来进行:
1、收集数据,x0=[13,16,11,22,19,20,15];
2、设定预测数为7年(2020年)
3、用GM(1,1)模型预测,预测前应对数据进行预处理,如数据累加累减,均值化处理,
4、利用矩阵方法计算灰方程的参数a,u
5、计算模拟数据,残差和相对误差
6、根据灰方程,预测2014~2020年的碰撞事故的次数
7、用plot函数绘制原始数据与预测数据的比较分析图
『贰』 灰色系统预测GM(1,1)模型的MATLAB源代码
%%%%%%%%%%%%%%%%把下面函数保存为gmcal.m文件%%%%%%%%%%%
function
gmcal=gm1(x)
sizexd2
=
size(x,2);
%求数组长度
k=0;
for
y1=x
k=k+1;
if
k>1
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可以换成已知的历史数据,无论几个都可以。
『叁』 贝叶斯网络模型 matlab 源代码
>> N = 8;
dag = zeros(N,N);
X2=2;X3=3;X4=4; X1=1;C = 5; B = 6;A = 7;T = 8;
dag([X2 X3],C)=1;
dag([X3 X4],B)=1;
dag([X1 C],A)=1;
dag([A B],T)=1;
discrete_nodes = 1:N;
node_sizes = 2*ones(1,N);
bnet = mk_bnet(dag, node_sizes);
bnet.CPD{
X1
} = tabular_CPD(bnet, X1, [0.01 0.99]);
bnet.CPD{
X2
} = tabular_CPD(bnet, X2, [0.02 0.98]);
bnet.CPD{
X3
} = tabular_CPD(bnet, X3, [0.03 0.97]);
bnet.CPD{
X4
} = tabular_CPD(bnet, X4, [0.04 0.96]);
bnet.CPD{
A
} = tabular_CPD(bnet, A, [1 1 1 0 0 0 0 1]);
bnet.CPD{
B
} = tabular_CPD(bnet, B, [1 1 1 0 0 0 0 1]);
bnet.CPD{
C
} = tabular_CPD(bnet, C, [1 0 0 0 0 1 1 1]);
bnet.CPD{
T
} = tabular_CPD(bnet, T, [1 0 0 0 0 1 1 1]);
G=bnet.dag;
draw_graph(G);
engine=jtree_inf_engine(bnet);
evidence=cell(1,N);
[engine,ll]=enter_evidence(engine,evidence);
m=marginal_nodes(engine,[X1]);
m.T
『肆』 如何用matlab建立数学模型及求解。哪位高手给个模版。
求最复大正值要变为求最小制负值,可这样:
f=[-2,-3];A=[4,2;1,1];b=[20;6];lb=zeros(2,1);ub=[inf;12];[x,fval]=linprog(f,A,b,[],[],lb,ub)
运行结果是:
Optimization terminated.
x =
0.0000
6.0000
fval =
-18.0000
则,优化结果是:x1=0,x2=6时最大利润是18.
『伍』 灰色系统预测GM(1,1)模型的MATLAB详细源代码
%%%%%%%%%%%%%%%%把下面函数保存为gmcal.m文件%%%%%%%%%%%
function gmcal=gm1(x)
sizexd2 = size(x,2);
%求数组长度
k=0;
for y1=x
k=k+1;
if k>1
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可以换成已知的历史数据,无论几个都可以。
『陆』 下面这个数学模型怎么用matlab编写代码啊
对于有多重求和的极值问题,应这样来写(方法):
1、考虑双循环语句建立目标函数函数 myfun,其函数体
y=sum(sum(c(i,j)*x(i,j)))
2、考虑双循环语句建立其约束条件函数 mycon,其函数体
ceq(j)=a(i)-sum(x(i,j)); %j=1,....,n
ceq(i)=b(j)-sum(x(i,j)); %i=1,....,m
ceq=[ceq(j) ceq(i)]
3、用fmincon函数求其最小值
[x,fval,exitflag] = fmincon(@(x) myfun(x),x0,A,b,Aeq,beq,lb,ub,@(x) mycon(x))