数学软件实验报告实验七.docx
《数学软件实验报告实验七.docx》由会员分享,可在线阅读,更多相关《数学软件实验报告实验七.docx(14页珍藏版)》请在冰豆网上搜索。
![数学软件实验报告实验七.docx](https://file1.bdocx.com/fileroot1/2023-6/27/24bf908c-ef01-4529-8d13-938c11978732/24bf908c-ef01-4529-8d13-938c119787321.gif)
数学软件实验报告实验七
数学软件实验报告
学院名称:
理学院专业年级:
姓名:
学号:
课程:
数学软件实验报告日期:
2014年12月6日
实验七SIMULINK建模与工具箱的使用
一.实验目的
MATLAB具有丰富的可用于各种专业方向的工具箱,这些工具箱已经形成了MATLAB的系列产品。
特别是动态仿真建模工具箱,更是成为许多工具箱的基础。
本次实验的目的就是要使大家了解MATLAB工具箱使用的基本方法,以及如何查询工具箱,主要掌握系统优化工具箱的使用和系统动态仿真建模工具箱的使用。
二.实验要求
MATLAB系统的工具箱十分的丰富,并且随着版本的不断升级,其工具箱还在不断地增加。
通过本次实验,要求了解MATLAB系统工具箱的分类与查询,会使用系统优化工具箱解决一些实际问题。
能建立系统仿真方框图,并进行系统仿真模拟。
三.实验内容
最优化工具箱
非线性最小化函数
fgoalattain多目标达到优化constr有约束最小化
fminbnd有边界最小化
fminunc使用梯度法的无约束最小化
fminsearch使用简单法的无约束最小化
fzero非线性方程求解(数量情况)
fsolve非线性方程求解
lsqnonlin非线性最小二乘
fminimax最小的最大解
fseminf半无穷区间最小化
2.矩阵问题的最小化
linprog线性规划
quadprog二次规划
lsqnonneg非负线性最小二乘
lsqlin约束线性最小二乘
第十章
10.1线性优化
>>f=[-542];
>>a=[6-11;124];
>>b=[810];
>>1b=[-100];
>>ib=[-100];
>>ub=[32];
>>[x,fval,exitflag,output,lambda]=linprog(f,a,b,[],[],ib,ub)
Optimizationterminated.
x=
1.3333
0.0000
0.0000
fval=
-6.6667
exitflag=
1
output=
iterations:
7
algorithm:
'large-scale:
interiorpoint'
cgiterations:
0
message:
'Optimizationterminated.'
constrviolation:
0
lambda=
ineqlin:
[2x1double]
eqlin:
[0x1double]
upper:
[3x1double]
lower:
[3x1double]
>>f=[-64];
>>a=[23;42];
>>b=[100120];
>>ib=[00];
>>[x,fval]=linprog(f,a,b,[],[],ib,[])
Optimizationterminated.
x=
30.0000
0.0000
fval=
-180.0000
10.2二次优化
>>h=[1-1;-12];
>>c=[-2;-6];
>>a=[11;-12;21];
>>b=[2;2;3];
>>[x,i]=quadprog(h,c,a,b)
x=
0.6667
1.3333
i=
-8.2222
>>h=[20;02];
>>f=[-40];
>>a=[-11;1-1];
>>b=[2;-1];
>>[x,fval,exitflag,output,lambda]=quadprog(h,f,a,b,[],[],[00],[]);
>>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.00001.0000
fval=
8.1777e-010
exitflag=
1
对第二个函数使用函数文件的定义方法:
定义M文件
functionf=myfun(x)
f=3*x
(1)^2+2*x
(1)*x
(2)+x
(2)^2;
在命令窗口实现优化
>>x0=[1,1];
>>[x,fval]=fminsearch(@myfun,x0)
x=
1.0e-004*
-0.06750.1715
fval=
1.9920e-010
10.3.3fminunc函数应用举例
最小值求解
>>fun='exp(x
(1))*(4*x
(1)^2+2*x
(2)^2+4*x
(1)*x
(2)+2*x
(2)+1)';
>>x0=[-11];
>>[x,fval]=fminunc(fun,x0)
Warning:
Gradientmustbeprovidedfortrust-regionalgorithm;
usingline-searchalgorithminstead.
>Infminuncat347
Localminimumfound.
Optimizationcompletedbecausethesizeofthegradientislessthan
thedefaultvalueofthefunctiontolerance.
x=
0.5000-1.0000
fval=
3.6609e-015
10.4最小二乘优化问题
非线性最小二乘问题优化
调用M函数
functionF=myfun(x)
k=1:
10;
F=2+2*k-exp(k*x
(1))-exp(k*x
(2));
>>x0=[0.30.4];
>>[x,resnorm]=lsqnonlin(@myfun,x0)
x=
0.25780.2578
resnorm=
124.3622
非负最小二乘问题优化
>>C=[0.03720.2869
0.68610.7041
0.62330.6245
0.63440.6170];
>>d=[0.8587
0.1781
0.0747
0.8405];
>>[C\d,lsqnonneg(C,d)]%超定房乘除法即最小二乘法拟合法
ans=
-2.57210
3.12510.6947
>>[norm(C*(C\d)-d),norm(C*lsqnonneg(C,d)-d)]
ans=
0.66380.9111
10.5非线性约束问题优化
非线性约束问题优化
>>x0=[-1,1];
>>options=optimset('Algorithm','active-set');
>>[x,fval]=fmincon(@objfun,x0,[],[],[],[],[],[],@confun,options);
>>x,fval
x=
-1.57026.3688
fval=
-0.7620
边界问题(使用上例在命令窗口做优化)。
>>[x,fval]=fmincon(@objfun,x0,[],[],[],[],[00],[],@confun,options);
Localminimumfoundthatsatisfiestheconstraints.
Optimizationcompletedbecausetheobjectivefunctionisnon-decreasingin
feasibledirections,towithinthedefaultvalueofthefunctiontolerance,
andconstraintsweresatisfiedtowithinthedefaultvalueoftheconstrainttolerance.
Activeinequalities(towithinoptions.TolCon=1e-006):
lowerupperineqlinineqnonlin
11
>>x,fval
x=
01.5000
fval=
8.5000
等式约束条件问题
>>x0=[-1,1];
>>[x,fval]=fmincon(@objfun,x0,[],[],[11],[0],[],[],@confun,options);
Localminimumfoundthatsatisfiestheconstraints.
Optimizationcompletedbecausetheobjectivefunctionisnon-decreasingin
feasibledirections,towithinthedefaultvalueofthefunctiontolerance,
andconstraintsweresatisfiedtowithinthedefaultvalueoftheconstrainttolerance.
Activeinequalities(towithinoptions.TolCon=1e-006):
lowerupperineqlinineqnonlin
2
>>x,fval
x=
-3.16233.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
选择命令菜单Simulationrun,运行此模型,则屏幕上会出现显示双质量—弹簧系统运动状态的动画模型,下图为抓拍的静态图形。
2.创建一个简单模型
先从求解如下的微分方程入手来学习创建简单的Simulink模型。
步骤一:
添加模块
双击Simulation库模块浏览器窗口中的源图标,打开源模块库,如下图所示:
分别把把模块库中的正弦波模块,连续模块库中的积分模块,显示模块库中的示波器模块,拖拽到模型窗口,如下图所示:
步骤二:
连接模块
将三个模块按顺序连接在一起,如下图所示:
步骤三:
运行仿真
双击Scope窗口,运行结果如下所示:
3.创建一个复杂模型
一个生长在罐中的细菌的简单模型。
假设细菌的出生率和当前细菌的总数成正比,且死亡率和当前的总数的平方成正比。
若以x代表当前细菌的总数,则细菌的出生率表示为:
birth_rate=bx
细菌的死亡率表示为:
death_rate=px2
细菌数量的总变化率可表示为出生率与死亡率之差。
于是此系统可表示为如下的微分方程:
假设b=1/h,p=0.5/h,当前细菌的总数为100,计算一个小时后罐中的细菌总数。
步骤一:
添加模块
步骤二:
连接模块
步骤三:
设置仿真参数
步骤四:
运行模型
四、实验总结
本次实习做了matlab在运筹优化问题中的应用,比如,线性优化、二次优化、非线性无约束优化问题、最小二乘优化问题、非线性约束问题优化等,应用了fminbnd,fminsearch,fminunc,options,fsolve等函数,学习到了各种函数的应用,还在各种数学实例中应用了所学内容,更加深入的了解了数学软件在实际应用时的作用。
之后还做了matlab在建模仿真中的应用,尝试了创建简单数学模型,和运行仿真。
在实习过程中,有些地方还是不太了解。
比如创建数学模型。
可能是对数学软件了解的不完备,不能熟练运用,所以在建模中出现了问题。
通过这次的实习,我了解了以前数学建模的步骤,以前只是听说,现在自己亲自做了才了解到是怎样运行的。