MATLAB数学建模算法学习笔记.docx

上传人:b****1 文档编号:2417569 上传时间:2022-10-29 格式:DOCX 页数:18 大小:2.54MB
下载 相关 举报
MATLAB数学建模算法学习笔记.docx_第1页
第1页 / 共18页
MATLAB数学建模算法学习笔记.docx_第2页
第2页 / 共18页
MATLAB数学建模算法学习笔记.docx_第3页
第3页 / 共18页
MATLAB数学建模算法学习笔记.docx_第4页
第4页 / 共18页
MATLAB数学建模算法学习笔记.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

MATLAB数学建模算法学习笔记.docx

《MATLAB数学建模算法学习笔记.docx》由会员分享,可在线阅读,更多相关《MATLAB数学建模算法学习笔记.docx(18页珍藏版)》请在冰豆网上搜索。

MATLAB数学建模算法学习笔记.docx

MATLAB数学建模算法学习笔记

关于MATLAB的数学建模算法学习笔记

目录

线性规划中应用:

3

非线性规划:

3

指派问题;投资问题:

(0-1问题)3

1)应用fmincon命令语句3

2)应用指令函数:

bintprog5

重新整理矩阵类型6

1)应用reshape6

2)应用命令:

nonzeros7

非线性的最小值得求法:

含有一个变量时,应用命令:

fminsearch(@fun,x0)7

含有多个变量时用:

fminunc()7

求解非线性多变量等式应用命令fsolve8

二次规划问题应用:

quadprog8

把有条件的问题转化成无条件问题。

罚函数法:

fminunc9

在Matlab中求解极值问题函数有:

9

1)fminbnd9

1:

在Matlab中求解距离的函数为:

dist9

最小生成树9

prim算法10

Find函数的应用10

关于图论的Matlab工具箱相关命令10

这些命令基本上都用到稀疏阵,产生稀疏阵用sparse命令10

查看网图用view11

积分命令quadl11

Matlab插值工具箱11

一维插值:

interp111

二维插值:

11

插值接点为网格节点:

interp211

插值节点为散乱节点:

griddata11

最小二乘法11

2)应用lsqlin命令语句12

三次样条差12

积分函数命令:

quadl13

同一组数据用不同插值方法效果比较线性插值、三次样条插值13

参数估计14

1)非线性最小拟合14

命令:

lsqcurvefit解决非线性拟合问题。

14

2)线性最小二乘法15

解微分方程16

1)求解常微分、线性常微分、齐次与非齐次微分方程等问题16

2)初值问题的matlab数值解16

3)高阶微分方程16

4)边值问题的Matlab数值解16

多目标规划问题18

解决方案:

18

1)加权系数法。

18

2)优先等级法。

18

3)序贯算法18

4)应用多目标规划的MATLAB函数fgoalattain具体见《数学建模算法与应用》P13118

5)多目标规划可以归结为:

18

分类问题19

聚类分析:

Q型和R型19

用于求元素之间距离的命令:

mandist19

去掉非零元命令:

nonzeros19

去掉重复的元素命令:

union19

Matlab聚类分析的相关命令19

 

知识点

线性规划中应用:

1)X=linprog(c,a,b,aeq,beq,zeros(x的个数,1))用于在限制条件下的最小值;

X=linprog(-c,a,b,aeq,beq,zeros(x的个数,1))用于在限制条件下的最大值;

非线性规划:

1)X=fmincon(fun,X0,A,B,Aeq,Beq,LB,UB,NONLCON,OPTIONS)

 

指派问题;投资问题:

(0-1问题)

1)应用fmincon命令语句

Matlab中非线性规划的数学模型写成以下形式

其中f(x)是标量函数,A,B,Aeq,Beq是相应维数的矩阵和向量,C(x),Ceq(x)是非线性向量函数。

Matlab中的命令是

X=FMINCON(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON,OPTIONS)

它的返回值是向量x,其中FUN是用M文件定义的函数f(x);X0是x的初始值;A,B,Aeq,Beq定义了线性约束A*X≤B,Aeq*XBeq,如果没有线性约束,则A=[],B=[],Aeq=[],Beq=[];LB和UB是变量x的下界和上界,如果上界和下界没有约束,则LB=[],UB=[],如果x无下界,则LB的各分量都为-inf,如果x无上界,则UB的各分量都为inf;NONLCON是用M文件定义的非线性向量函数C(x),Ceq(x);OPTIONS定义了优化参数,可以使用Matlab缺省的参数设置。

例子:

2)应用指令函数:

bintprog

重新整理矩阵类型

1)应用reshape

2)应用命令:

nonzeros

功能是将a=nonzeros(b)矩阵b按列逐次去值放在a中形成一个列向量。

非线性的最小值得求法:

含有一个变量时,应用命令:

fminsearch(@fun,x0)

含有多个变量时用:

fminunc()

求解非线性多变量等式应用命令fsolve

二次规划问题应用:

quadprog

把有条件的问题转化成无条件问题。

罚函数法:

fminunc

其中:

用法[X,Y]=fminunc(‘test3’,rand(1,2))与[X,Y]=fminunc(@test3,rand(1,2))相同。

缺点:

精度不高。

在Matlab中求解极值问题函数有:

1)fminbnd

解决单变量非线性函数在区间上的极小值问题。

3)fseminf

解决多变量、含有非线性约束的极小值问题。

3)fminimax

解决多变量,满足在多个式子中极小——极大问题。

加一个负号就是解决多个式子中极大——极小值问题。

4)利用梯度求解约束优化问题。

1:

在Matlab中求解距离的函数为:

dist

2:

Sin()的反函数用asind()表示

3:

将数据生成txt文本:

dlmwrite

最小生成树

prim算法

 

Find函数的应用

1)I=find(A)找出A内的非零元素位置,按列查找。

一次写在I中。

2)[I,J,K]=find(A)找出A中非零元素的位置,将行标放入I中,将列表放入J中,将数值放入K中,按理寻找。

关于图论的Matlab工具箱相关命令

这些命令基本上都用到稀疏阵,产生稀疏阵用sparse命令

1)graphallshortestpaths求图中所有顶点之间的最短距离

2)graphconncomp找无向图的连通分支,或有向图的强(弱)连通分支

3)Graphisdag测试所有有向图是否含有圈,不含圈返回1,含圈返回0

4)Graphisomorphism确定连个图是否同构,同构返回1,否则返回0

5)Graphisspantree确定一个图是否是生成树,是返回1,否则返回0

6)Graphmaxflow计算有向图的最大流

7)Graphminspantree在图中找最小生成树

8)Graphpred2path把前驱顶点的一对顶点间的最短距离和嘴短路径

9)Graphtopoorder执行有向无圈图的拓扑排序

10)Graphtraverse求从一顶点出发,所能遍历图中的顶点

查看网图用view

用法:

view(biograph(ST,[],'ShowArrows','off','ShowWeights','on'))其中ST为树。

积分命令quadl

Matlab插值工具箱

一维插值:

interp1

二维插值:

插值接点为网格节点:

interp2

插值节点为散乱节点:

griddata

最小二乘法

1)

2)应用lsqlin命令语句

3)

三次样条差

积分函数命令:

quadl

同一组数据用不同插值方法效果比较线性插值、三次样条插值

例子clc;clear;

x0=[035791112131415];

y0=[01.21.72.02.12.01.81.21.01.6];

x=0:

0.1:

15;

y1=interp1(x0,y0,x);%%线性插值

y2=interp1(x0,y0,x,'spline');%%%立方样条插值

pp1=csape(x0,y0);

y3=ppval(pp1,x);%%边界为一阶导插值

pp2=csape(x0,y0,'second');

y4=ppval(pp2,x);%%边界为二阶导插值

[x',y1',y2',y3',y4'];

subplot(1,3,1)

plot(x0,y0,'+',x,y1)

title('Piecewiselinear')

subplot(1,3,2)

plot(x0,y0,'+',x,y2)

title('Spline1')

subplot(1,3,3)

plot(x0,y0,'+',x,y3)

title('Spline2')

dx=diff(x);%%diff为一阶微分

dy=diff(y3);

dy_dx=dy./dx;

dy_dx0=dy_dx

(1)

%%求13<=x<=15内y的最小值

ytemp=y3(131:

151);

ymin=min(ytemp);

index=find(y3==ymin);

%%

xmin=x(index);

[xmin,ymin]

holdon

plot(xmin,ymin,'ro')

参数估计

1)非线性最小拟合

命令:

lsqcurvefit解决非线性拟合问题。

人口数学模型的应用:

例子:

数学建模算法与应用的的6章人口预报模型

clc,clear

a=textread('data4.txt');%把原始数据保存在纯文本文件data4.txt中

x=a([2:

2:

6],:

)';%提出人口数据

x=nonzeros(x);%去掉后面的零,并变成列向量

t=[1790:

10:

2000]';

t0=t

(1);x0=x

(1);

fun=@(cs,td)cs

(1)./(1+(cs

(1)/x0-1)*exp(-cs

(2)*(td-t0)));%cs

(1)=xm,cs

(2)=r

cs=lsqcurvefit(fun,rand(2,1),t(2:

end),x(2:

end),zeros(2,1))%%拟合,满足使最小二乘最小的参数cs

xhat=fun(cs,[t;2010])%预测已知年代和2010年的人口

2)线性最小二乘法

人口数学模型的应用,例子:

1)利用后项查分

clc,clear

a=textread('data4.txt');%把原始数据保存在纯文本文件data4.txt中

x=a([2:

2:

6],:

)';

x=nonzeros(x);

t=[1790:

10:

2000]';

a=[ones(21,1),-x(2:

end)];

b=diff(x)./x(2:

end)/10;%%时间间隔为10年

cs=a\b;

r=cs

(1),xm=r/cs

(2)

2)利用前项查分

clc,clear

a=textread('data4.txt');%把原始数据保存在纯文本文件data4.txt中

x=a([2:

2:

6],:

)';x=nonzeros(x);

t=[1790:

10:

2000]';

a=[ones(21,1),-x(1:

end-1)];

b=diff(x)./x(1:

end-1)/10;

cs=a\b;

r=cs

(1),xm=r/cs

(2)

解微分方程

1)求解常微分、线性常微分、齐次与非齐次微分方程等问题

用命令:

dsolve数学建模算法与应用p112-P114

2)初值问题的matlab数值解

用:

ode45(采用四五阶龙哥库塔方简称RK方法)、ode23(采用二三阶RK方法)、ode113(采用多步法,效率一般比ode45高)

用法:

例如:

[x,y]=ode45(fun,[a,d],y0)其中fun为定义微分方程,[a,d]为定义区间,y0为初始值,x为在定义区间中采用四

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1