MATLAB在数学建模中的应用

线性规划(linear programming)

目标函数(求min): f=cTx⃗ 
线性不等式约束: Ax⃗ b
线性等式约束: Aeqx⃗ =beq

eg.
c=[1 2 3]
x⃗ =[x1;x2;x3] 注: x⃗  是列向量
f=cTx⃗ =x1+2x2+3x3

linprog函数

[x result]=linprog(c, A, b, Aeq, beq, LOW, UP, x0, options)

非线性规划(nonlinear programming)

fmincon函数

目标函数(求min): f(x)
线性约束: Ax⃗ b Aeqx⃗ =beq
非线性约束: C(x)0 Ceq(x)=0 (注:线性约束也可以写这里)

‘func1’目标函数f(x)函数m文件:

function f=func1(x)
...

‘nonlinear’非线性函数m文件:

function [C Ceq]=nonlinear(x)
...

fmincon语法:

[x result]=fmincon('func1', A, b, Aeq, beq, LOW, UP, 'nonlinear',  options)

二次规划(quadprog函数)

目标函数变化成:

(xTHx)/2+fTx

H对称矩阵两倍, fTx 是一次函数部分

[x result]=quadprog(H, f, A, b, Aeq, beq, LOW, UP, x0, options)

灰色预测模型(gray model)

多个数据向量: X0=[x(0)(1),x(0)(2),...x(0)(n)]
x(1)(i)=x(0)(i)
则累积和向量: X1=[x(1)(1),x(1)(2),...x(1)(n)]
矩阵:

E=1,1,...1,x(1)(1)+x(1)(2)x(1)(2)+x(1)(3)x(1)(n1)+x(1)(n)

且:

dx(1)/dt+ax(1)=u

设:
a⃗ =[au]

用最小二乘法求 a⃗  :
a⃗ =(ETE)1ET[x(0)(1),x(0)(2),...x(0)(n)]T=(ETE)1ETX0T

matlab代码:

clear
syms a b;
c=[a b]';
A=[89677 99215 109655 120333 135823 159878 182321 209407 246619 300670]; %求A=X0
B=cumsum(A); %求B=X1
n=length(A);
for i=1:(n-1)
    C(i)=(B(i)+B(i+1))/2;
end

D=A;
D(1)=[];
D=D';
E=[-C;ones(1,n-1)]; %求E=E^T
c=inv(E*E')*E*D; 
c=c';
a=c(1); b=c(2);  %求a u
F=[]; F(1)=A(1);
for i=2:(n+10)
    F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a;
end
G=[];G(1)=A(1);
for i=2:(n+10)
    G(i)=F(i)-F(i-1);
end
t1=1999:2008;
t2=1999:2018;
G
plot(t1, A, 'o', t2, G)

遗传算法

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值