数学软件实验报告实验七
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学软件实验报告
学院名称:理学院专业年级:
姓名:学号:
课程:数学软件实验报告日期:2014年12月6日
实验七SIMULINK建模与工具箱的使用
一.实验目的
MATLAB 具有丰富的可用于各种专业方向的工具箱,这些工具箱已经形成了MATLAB 的系列产品。
特别是动态仿真建模工具箱,更是成为许多工具箱的基础。
本次实验的目的就是要使大家了解MA TLAB工具箱使用的基本方法,以及如何查询工具箱,主要掌握系统优化工具箱的使用和系统动态仿真建模工具箱的使用。
二.实验要求
MATLAB系统的工具箱十分的丰富,并且随着版本的不断升级,其工具箱还在不断地增加。
通过本次实验,要求了解MA TLAB系统工具箱的分类与查询,会使用系统优化工具箱解决一些实际问题。
能建立系统仿真方框图,并进行系统仿真模拟。
三.实验内容
最优化工具箱
非线性最小化函数
fgoalattain 多目标达到优化 constr 有约束最小化
fminbnd 有边界最小化
fminunc使用梯度法的无约束最小化
fminsearch 使用简单法的无约束最小化
fzero 非线性方程求解(数量情况)
fsolve 非线性方程求解
lsqnonlin 非线性最小二乘
fminimax 最小的最大解
fseminf 半无穷区间最小化
2.矩阵问题的最小化
linprog 线性规划
quadprog 二次规划
lsqnonneg 非负线性最小二乘
lsqlin 约束线性最小二乘
第十章
10.1线性优化
>> f=[-5 4 2];
>> a=[6 -1 1;1 2 4];
>> b=[8 10];
>> 1b=[-1 0 0];
>> ib=[-1 0 0];
>> ub=[3 2];
>> [x,fval,exitflag,output,lambda]=linprog(f,a,b,[],[],ib,ub) Optimization terminated.
x =
1.3333
0.0000
0.0000
fval =
-6.6667
exitflag =
1
output =
iterations: 7
algorithm: 'large-scale: interior point'
cgiterations: 0
message: 'Optimization terminated.'
constrviolation: 0
lambda =
ineqlin: [2x1 double]
eqlin: [0x1 double]
upper: [3x1 double]
lower: [3x1 double]
>> f=[-6 4];
>> a=[2 3;4 2];
>> b=[100 120];
>> ib=[0 0];
>> [x,fval]=linprog(f,a,b,[],[],ib,[]) Optimization terminated.
x =
30.0000
0.0000
fval =
-180.0000
10.2 二次优化
>> h=[1 -1;-1 2];
>> c=[-2;-6];
>> a=[1 1;-1 2;2 1];
>> b=[2;2;3];
>> [x,i]=quadprog(h,c,a,b)
x =
0.6667
1.3333
i =
-8.2222
>> h=[2 0;0 2];
>> f=[-4 0];
>> a=[-1 1;1 -1];
>> b=[2;-1];
>> [x,fval,exitflag,output,lambda]=quadprog(h,f,a,b,[],[],[0 0],[]); >> x
x =
0.5000
1.5000
10.3 非线性无约束优化问题
π的近似值
>> fminbnd('cos',3,4)
ans =
3.1416
函数式在(0,1)范围内的最小值点
>> fminbnd('(x^3+cos(x)+x*log(x))/exp(x)',0,1)
ans =
0.5223
对第一个函数直接在命令窗中定义函数
>> banana=@(x)100*(x(2)-x(1)^2)^2+(1-x(1))^2;
>> [x,fval,exitflag]=fminsearch(banana,[-1.2,1])
x =
1.0000 1.0000
fval =
8.1777e-010
exitflag =
1
对第二个函数使用函数文件的定义方法:
定义M文件
function f =myfun(x)
f = 3*x(1)^2+2*x(1)*x(2)+x(2)^2;
在命令窗口实现优化
>> x0=[1,1];
x =
1.0e-004 *
-0.0675 0.1715
fval =
1.9920e-010
10.3.3 fminunc函数应用举例
最小值求解
>> fun='exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1)';
>> x0=[-1 1];
>> [x,fval]=fminunc(fun,x0)
Warning: Gradient must be provided for trust-region algorithm;
using line-search algorithm instead.
> In fminunc at 347
Local minimum found.
Optimization completed because the size of the gradient is less than the default value of the function tolerance.
<stopping criteria details>
x =
0.5000 -1.0000
fval =
3.6609e-015
10.4 最小二乘优化问题
非线性最小二乘问题优化
调用M函数
function F =myfun(x)
k = 1:10;
F = 2+2*k-exp(k*x(1))-exp(k*x(2));
>> x0=[0.3 0.4];
x =
0.2578 0.2578
resnorm =
124.3622
非负最小二乘问题优化
>> C=[0.0372 0.2869
0.6861 0.7041
0.6233 0.6245
0.6344 0.6170];
>> d=[0.8587
0.1781
0.0747
0.8405];
>> [C\d,lsqnonneg(C,d)] %超定房乘除法即最小二乘法拟合法
ans =
-2.5721 0
3.1251 0.6947
>> [norm(C*(C\d)-d),norm(C*lsqnonneg(C,d)-d)]
ans =
0.6638 0.9111
10.5非线性约束问题优化
非线性约束问题优化
>> x0=[-1,1];
>> options=optimset('Algorithm','active-set');
>> [x,fval]=fmincon(@objfun,x0,[],[],[],[],[],[],@confun,options); >> x,fval
x =
-1.5702 6.3688
fval =
-0.7620
边界问题(使用上例在命令窗口做优化)。
>> [x,fval]=fmincon(@objfun,x0,[],[],[],[],[0 0],[],@confun,options); Local minimum found that satisfies the constraints.
Optimization completed because the objective function is non-decreasing in
feasible directions, to within the default value of the function tolerance,
and constraints were satisfied to within the default value of the constraint tolerance.
<stopping criteria details>
Active inequalities (to within options.TolCon = 1e-006):
lower upper ineqlin ineqnonlin
1 1
>> x,fval
x =
0 1.5000
fval =
8.5000
等式约束条件问题
>> x0=[-1,1];
>> [x,fval]=fmincon(@objfun,x0,[],[],[1 1],[0],[],[],@confun,options); Local minimum found that satisfies the constraints.
Optimization completed because the objective function is non-decreasing in
feasible directions, to within the default value of the function tolerance,
and constraints were satisfied to within the default value of the
constraint tolerance.
<stopping criteria details>
Active inequalities (to within options.TolCon = 1e-006): lower upper ineqlin ineqnonlin
2
>> x,fval
x =
-3.1623 3.1623
fval =
0.5778
非线性方程的优化解
>> fzero('sin',3)
ans =
3.1416
>> fsolve('cos(x)+x',0)
ans =
-0.7391
>> cos(ans)
ans =
0.7391
求解方程
>> x0=[-5;-5];
>> [x,fval]=fsolve(@myfun,x0)
x =
0.5671
0.5671
fval =
1.0e-006 *
-0.4059
-0.4059
第12章
1、Simulink应用举例
>> sldemo_dblcart1
选择命令菜单
Simulation run,运行此模型,则屏幕上会出现显示双质量—弹簧系统运动状态的动画模型,下图为抓拍的静态图形。
2.创建一个简单模型
先从求解如下的微分方程入手来学习创建简单的Simulink模型。
x=
'sin(t)
x=
(0)0
步骤一:添加模块
双击Simulation库模块浏览器窗口中的源图标,打开源模块库,如下图所示:
分别把把模块库中的正弦波模块,连续模块库中的积分模块,显示模块库中的示波器模块,拖拽到模型窗口,如下图所示:
步骤二:连接模块
将三个模块按顺序连接在一起,如下图所示:
步骤三:运行仿真
双击Scope窗口,运行结果如下所示:
3.创建一个复杂模型
一个生长在罐中的细菌的简单模型。
假设细菌的出生率和当前细菌的总数成正比,且死亡率和当前的总数的平方成正比。
若以x代表当前细菌的总数,则细菌的出生率表示为:
birth_rate=bx
细菌的死亡率表示为:
death_rate=px2
细菌数量的总变化率可表示为出生率与死亡率之差。
于是此系统可表示为如下的微分方程:
2
bx px
x=-
假设b=1/h,p=0.5/h,当前细菌的总数为100,计算一个小时后罐中的细菌总数。
步骤一:添加模块
步骤二:连接模块
步骤三:设置仿真参数
步骤四:运行模型
四、实验总结
本次实习做了matlab在运筹优化问题中的应用,比如,线性优化、二次优化、非线性无约束优化问题、最小二乘优化问题、非线性约束问题优化等,应用了fminbnd,fminsearch,fminunc,options,fsolve等函数,学习到了各种函数的应用,还在各种数学实例中应用了所学内容,更加深入的了解了数学软件在实际应用时的作用。
之后还做了matlab在建模仿真中的应用,尝试了创建简单数学模型,和运行仿真。
在实习过程中,有些地方还是不太了解。
比如创建数学模型。
可能是对数学软件了解的不完备,不能熟练运用,所以在建模中出现了问题。
通过这次的实习,我了解了以前数学建模的步骤,以前只是听说,现在自己亲自做了才了解到是怎样运行的。