Matlab 实战笔记
写在前面
暑假为了参加国赛学习了matlab(白给的可能性比较大毕竟第一次参加比赛还撞上开学考试),看了也快有半月多一点了,之前基本上就是看书,会了点线性规划图论微分方程积分等等,然而实践出真知,具体问题还得具体分析。于是从今天起开始对着那本黄书上的案例(数学建模算法与应用)大致复现一遍,顺便做些课后题目,希望能有所收获(事实证明这玩意突然就实战真的能把人搞自闭,走一步是一步),并且配合excel(用这个画图或者进行曲线拟合)进行。
需要:
- Matlab2018b
- 《数学建模算法与应用》
- 《matlab从入门到精通》
- 交流群嫖来的代码
- CSDN解答
那么现在就开始叭
DAY 1 线性规划/整数规划/非线性规划
线性规划
linprog函数
linprog是求解线性规划的重要函数
求解线性规划的函数:
关于lingprog的一些注意事项:
求解结果是线性最小值当求最大值时一定要把系数为负!!!
f是多元一次线性式的系数(当未知数矩阵是行矩阵,注意是列矩阵)同时这要求当求max时对应y变为负
A是不等式的系数矩阵
b是不等式的常数项矩阵
要求不等式是小于等于关系大于等于关系时时对应系数变为负数转换成小于等于;
Aeq和beq是等式约束;
lb是各变量下限,要求为列矩阵,ub是上限也是列矩阵;
当无某一项约束时,用空矩阵[]代替
以下为代码案例
>> clear all >> f=[2;3;1]; >> a=[1,4,2;3,2,0]; >> a=[-1,-4,-2;-3,-2,0]; >> b=[-8;-6]; >> [x,y]=linprog(f,a,b,[],[],zeros(3,1)); Optimal solution found.//说明运行成功 >> x,y x = 2.0000 0 3.0000
y =
7
```
注意
编写函数要:
- 文件名要和函数名字一样;
- 函数要以end结尾;
- 工程文件要和函数文件在同一个文件夹下
整数规划
intlinprog
这是解整数规划的函数使用方法和linprog一样;
不同的是,整数规划多了限制参数;
非线性整数规划
很显然,多了函数入口;
使用方法:
注意函数名要加单引号;
day2约束问题/图论
也就是图论开始,我意识到我作为编程手做的最大也就是嫖到算法和函数后套上模型罢了
只有离散只考了人均水平的垃圾硬看算法看了半天愣是看不出什么所以然,然而事实证明还是matlab的强大的,有现成的图论工具箱,往上套就可以了。