搜档网
当前位置:搜档网 › matlab最小值优化问题中fminunc、fmincon的应用

matlab最小值优化问题中fminunc、fmincon的应用

matlab最小值优化问题中fminunc、fmincon的应用
matlab最小值优化问题中fminunc、fmincon的应用

工程最优化即最大(小)值问题

1、无约束(无条件)的最优化

(1)使用fminunc函数(un-condition)(2)可用于任意函数求最小值

(3)将最大、最小问题统一为求最小值问题(即只能求最小值)。如

求最大值,

而变成求最小值问题,

最后即为函数

的最大值。

)(前后都是函数y两次取反,而自变量X不要取反)

(4)使用格式

x=fminunc(‘程序名’, x0)

左边的结果还可以写成

[x,fval] 或

[x,fval,exitflag] 或

必须预先把函数存入到一个程序中,(所编的程序一定是只有一个参数,则当为多元函数时,则x(1),x(2),x(3)…分别代表每个自变量)

其中fval为函数的最小值,

x0为自变量初始向量,一般不影响结果(如有n个变量(即n元函数),则x0中就有n个元素)

exitflag为退出标志,当它大于0时表示函数收敛于x,当它等于0时表示迭代次数超过,当它小于0时表示函数不收敛(所以解完题后还必须判断exitflag的值是否>0,以决定结果的正误/有效性)

函数存在最值的条件:在闭区间连续,存在导数等(说明有

很多函数不存在最值:有大、有小、有大小、都无)

最后一定要看看exitflag

........的值(判断结果是否有效)---所以

函数可以用内联函数inline(‘表达式’)

(程序中的.* ./ .^可要可不要,一般还是不要吧)

(5)y= x2+4x+5 的最小值(结果-2,1)其函数形式为:---可以@, 内联函数inline(‘x2+4x+5’),

function f=a1(x)

f=x^2+4*x+5;------最好不要.* .^ ./因为不是向量(一批数)的运算,初始x0就是变量的个数(调用该程

序时,所提供的每个变量的初始值)

函数名:’zhc1’或 @zhc1 或 inline(‘…’)

>> [x,f,g]=fminunc(inline('x^2+4*x+5'),1)

还有学生f=y=x^2+4*x+5;??????

>> edit

>> [x,fval,exitflag]=fminunc('max1',1)

Warning: Gradient must be provided for trust-region method;

using line-search method instead.

> In fminunc at 241

Optimization terminated: relative infinity-norm of gradient less than options.TolFun.

x =

-2.0000

fval =

1.0000

exitflag =

1

>> [a,b,c]=fminunc('max1',1)

Warning: Gradient must be provided for trust-region method;

using line-search method instead.

> In fminunc at 241

Optimization terminated: relative infinity-norm of gradient less than options.TolFun.

a = -2.0000

b = 1.0000

c = 1

>> [x,fval,exitflag]=fminunc('max1',0)

>> [x,fval,exitflag]=fminunc('max1',5)

>> [x,fval,exitflag]=fminunc(@max1,5)

>> [x,fval,exitflag]=fminunc(inline('x^2+4*x+5'),1)

>> [x,fval,exitflag]=fminunc(@(x)x^2+4*x+5,1)

>> a=@(x)x^2+4*x+5;

>> [x,fval,exitflag]=fminunc(a,1)

(6)例如:求y=1+2x-x2的最大值(结果为:x=1,y=-(-2) )---X不要取反,两次都是函数取反

其函数形式为:

function f=a1(x) 命令形式[x,y,z]=fminunc('a1',3)

f=-(1+2*x-x^2) 或负号展开—最后再取反------需两次取反

>> a1(1)

ans = -2

>> a1(0)

ans = -1

(7)求函数f(x,y)=e2x(x+y2+2y)的最小值

其函数形式为:

function f=a1(r)--fmin所要求的程序一定是一个参数x=r(1);y=r(2);

f=exp(2*x)*(x+y^2+2*y);----有学生写成f(x,y)=……

或function f=a2(a) x=a(1);y=a(2);f= 或f中直接用x(1),x(2)

命令为:[x,fval,exitflag]=fminunc('a1',[2,1])—即a1调用时的参数

x =

0.5000 -1.0000 ---

fval =

-1.3591 (即-e/2)

exitflag =

1

此题的x0也可为[1,1],[0,1],[1,0],[0,0],但不能用[1,2],如出问题,可尝试换一个初值----x0建议最好用[1,1,1]

此题说明可对任意函数、任意n元求最小值(此题为二元,含exp函数)

n元,则x视作一个向量,它的每个元素分别代表某一个自变量(可以a=x(1);b=x(2);…..)

结果x也是一个向量,每个元素分别代表每个自变量

此题不存在最大值。(可求一下,结果为x =1.0e+012 * 2.2923 0.2986 fval = -Inf exitflag = 0)-----结果无效----说明最值不一定存在

如为n元函数,则初始向量也必须为n个元素的向量

(都是小.)无条件的命令在实际问题中用的很少,一般还是使用下一条命令

2、fminbnd(‘程序名’,x1,xn)

求函数在区间[x1,xn]的最小值

3、有约束条件的最优化问题

使用fmincon函数(condition)

这是优化(最值)的万能命令

(1)左边(结果)可为:

x=

[x,fval]=

[x,fval,exitflag]=

(2)右边可为:

fmincon(‘程序名’,x0,A,b)

用于线性不等式约束,即A*x< =b,

A为系数矩阵,b为常数项列向量,

x0为初始向量

fmincon(‘程序名’,x0,A,b,

Aeq,beq)

用于线性不等式与线性等式约

束,线性等式为Aeq*x=beq, 其

中Aeq为系数矩阵,为beq列

向量

A,b, Aeq,beq的形式类似于解线性方程组的形式

fmincon(‘程序名’,x0, A,b,

Aeq,beq, l,u)

其中l、u为解的上下限(即解

的范围l<=x<=u)

(如为多元函数:则l=[x0,y0,z0,….], u=[xn,yn,zn,…]) (条件顺序:(线性)不等式---(线性)等式---上下限---非线性条件)

fmincon(‘程序名’,x0, A,b,

Aeq,beq, l,u, ‘程序2’)

其中‘程序2’ 是用于非线性

约束,它的格式为:c(x)<=0

ceq(x)=0

程序形式为:

function [c,ceq]=fxx(x)

c=……;

ceq=……;

如有多个非线性条件---见下面的例3---方法1:可以返回2/4/6/8…个结果,结果分别为不1、等1、不2、等2、不3、等3……,没有的则用[ ]或0 方法2:把c,ceq视作数组,即c=[不1, 不2, 不3,…]; ceq=[等1,等2, 等3,……] 或c(1)=不1; c(2)= 不2;……; ceq(1)=等1;……,建议最好使用最后一种形式,即c(1),c(2),c(3)…ceq(1),ceq(2),ceq(3)…

(3)注意:前面的各向量(矩阵)如不

使用,必须使用空的向量(后

面的如不使用,则可以不管)

(即每个参数的意义是由它们的位置来决定的,不是由变量决定的,变量名可以任意。)

函数的形式:function f=zha(r)一定是只有一个形参x=r(1);y=r(2);z=r(3);……

f=函数表达式;

看一下exitflag, 如无效则换一个初始向量x0

先做好各种准备(目标函数表达式---

编程序;线性条件(不等

式、等式);非线性条件---

编另一个程序)

最后再执行命令fmincon

条件分为:线性不等式、线性等式、

上下限(范围)、非线性条

件(不等式、等式)--程序

返回两个结果

一般是不等式居多(再多都不要紧),一般不会有太多的等式条

件(否则都可以解方程了)

(4)如1:f(x,y,z)=x2/2+xy+xz+y2+3yz

+z3-6x-7y-8z 求其最小值

受约束于:x+y+3z<=5

x+2y+z<=6

3x+y+2z<=13

答案为:(4,1,0, -18) (再添加2x+3y+4z=11; 3x+5z=12;--------再添加上/下限:x—[1,10], y----[0,5], z---[-5,5])

函数形式为:function f=zhabc(x)

a=x(1);b=x(2);c=x(3); %也可直接用(1),x(2),x(3)

f=a^2/2+a*b+a*c+b^2+3*b*c+c^3-6*a-7*b-8*c;

命令形式为:》a=[1,1,3;1,2,1;3,1,2];b=[5;6;13];

>> [x,fval,exitflag]=fmincon('zhabc',[1,1,1],a,b) 也可先x0

x =

4.0000 1.0000 -0.0000

fval =

-18

警告信息没有关系

虽然程序中可以直接用x(1),x(2),x(3)…,但更麻烦。所以最好这样:function f=zha(t) (用任意变量名都可以,但用其他字

母代替x更好,因为函数表达式可以直接拷贝过来,省得去对应)

x=t(1);y=t(2);z=t(3);……f=…….;

>> [x,fval,exitflag]=fmincon('minzh1',[1,1,1],[1,1,3;1,2,1;3,1,2],[5;6;13])

Warning: Large-scale (trust region) method does not currently solve this type of problem, switching to medium-scale (line search).

x = 4.0000 1.0000 -0.0000

fval = -18.0000

exitflag = 1

如2:z=sqrt((x-12)2+(y-12)2)

求其最小值

受约束于:x+y<=20

y<=14

3y-x>=0 (需转换)

答案为:10,10;2.8284 (再增加范围3<=x<=8, 5<=y<=14)

( l=[3,5] u=[8,14])---结果是一样的)

>> a=[1,1;0,1;-1,3];

>> a=[1,1;0,1;1,-3];

>> b=[20;14;0];

>> [x,fval,exitflag]=fmincon('minzh2',[1,2],a,b)

x = 10.0001 9.9999

fval = 2.8284

exitflag = 5

函数形式为:function f=zhabc(x)

a=x(1);b=x(2);

f=sqrt((a-12)^2+(b-12)^2);

命令为:a=[1,1;0,1;1,-3]; b=[20;14;0];

>> [x,fval,exitflag]=fmincon('zhabc',[8,8],a,b,[],[],[5,5],[20,20])

x = 10.0000 10.0000

fval =

2.8284

exitflag = [8,8] [5,5] [20,20]也可预先定义

5 [8,8]一定要在上下限的范围内>> [x,fval,exitflag]=fmincon(@minzh2,[1,1],a,b,[],[],[5,8],[10,15])

如3:f(x)=x2+y2-xy-10x-4y+60

求其最小值

约束条件为:x+y=8,

x,y的上下限分别为[-5,10],[0,5]

(答案为:5,3;17)

function f=zhabc(x)

a=x(1);b=x(2);

f=a^2+b^2-a*b-10*a-4*b+60;

a=[1,1];b=8;

>> l=[-5,0];u=[10,5];

>> [x,y,z]=fmincon('zhabc',[1,3]或[4,4],[],[],a,b,l,u)注意[1,3]范围x = 5.0000 3.0000

y = 17

z = 1

如再增加非线性条件:x^2+y^2=34,exp(y)<=64 (结果是不变的) ----去掉上/下限function [c,d]=zhxy(x) a=x(1);b=x(2); c=exp(b)-64;d=a^2+b^2-34;(先不后等)

aeq=[1,1];beq=8;-----此(非线性条件)函数也只能有一个参数

>> l=[-5,0];u=[10,5];

>> [x,fval,exitflag]=fmincon('zhabc',[5,4],[],[],aeq,beq,l,u,'zhxy')-----x0还可为[5,3]等,可能要多次试用

或程序为function [c,ceq]=fxx1(t) ----初值1,1---1,2 不可以,而3,2等则可以x=t(1);

y=t(2);

c=exp(y)-64;

ceq=x^2+y^2-34;

如有多个非线性条件,如再增加sin(x)+exp(y)<=70,x*y>=14, x+y^2=14

function [c,d,c2,d2]=zhxy(x) 先不等式后等式,不1,等1,不2,等2……(一定是一个形参)

a=x(1);b=x(2); c=exp(b)-64; c2=sin(a)+exp(b)-70; d=a^2+b^2-34;

d2=a+b^2-14;

或程序为:function [c,ceq]=fxx1(t)

x=t(1);

y=t(2);

c(1)=exp(y)-64;

c(2)=sin(x)+exp(y)-70;

c(3)=-x*y+14;

ceq=x^2+y^2-34;

ceq(2)=x+y^2-14;

如再加条件:x^3+y^3=152 则

function [c,d,c2,d2,c3,d3]=zhxy(x) a=x(1);b=x(2); c=exp(b)-64;

c2=sin(a)+exp(b)-70; d=a^2+b^2-34; d2=a+b^2-14;

c3=[];d3=a^3+b^3-152;

不能(最好不要)有太多的等式条件

(因为这可以解方程了。)

如4:P330 考虑三段旅程所化时间最

短问题。第一段为沙漠,长

度为10千米,行走速度为

5km/h,第二段为河流,长度

为10,坐渡般速度为10,

第三段为平地,长度为10,

坐汽车速度为40,且起点与

终点的水平距离为40,垂直

距离为30,求最短时间

(答案:1.214, 2.483, 36.303;

3.9864)

如5:P327漏斗问题(即漏斗的表

面积一定,求漏斗容积的最

大化

v=1/3*pi*r2*h

=1/3*pi*h3 *sin2(x)*cos(x)

s=pi*h2*sin(x)

(如要s=100,则h=7.4252, x=0.6155,化角度为x*180/pi=35.2644, v=116.675,

必须转化成求最小值问题)

如6: P337计算平面方程x+3y+5z=11, 求平面到原点的垂直距离及垂

足的坐标.

(d=x2+y2+z2,求d的最小值约束条件为:x+3y+5z=11,结果为

0.3143,0.9429,1.5714; 3.4571)

例7:P321-326多级铁心设计

例8:P355今有4种素食品,其维生素每公斤含量,人每天维生素需要量

和食品价格见下表,求在满足每天所需维生素的前提下如何使开支最小。

食品成分甲乙丙丁每天需

要量

维A 1000 1500 1750 3250 4000 维B 0.6 0.27 0.68 0.3 1.0 维C 17.5 7.5 0 30 30 价格1.6 1 1.8 3.0

设每天需要甲乙丙丁食品各x,y,z,m minf=1.6x+y+1.8z+3m

1000x+1500y+1750z+3250m>=4000 0.6x+0.27y+1750z+0.3m>=1.0

17.5x+7.5y+0z+30m>=30

x,y,z,m>=0

>=必须转化成<= (乘以-1)

(结果0.71753,2.02588,0.00000000004492,0.074966/f=3.3988398)

例9:某工厂生产两种产品A和B,产品A的利润每台150元,B的每台利润为200元. 产品A B每台所需加工工时及设备所能提供加工工

时见下表,问如何安排生产才能使

工厂的利润最大.

工时产品工序A B 每月可用

工时

机械加工 3.0 2.0 1500

装配 2.0 3.0 1500

设A的每月台数为x, B的每月生产台数为y,总利润为p, 则目标函数求最

大值maxP=150x+200 y

约束条件为: 3x+2y<=1500

2x+3y <=1500

x,y>=0

(求最大:必须要两次取反) function f=zhabc(x)

a=x(1);b=x(2);

f=-(150*a+200*b);

a=[3,2;2,3];b=[1500;1500];

>> l=[0,0];u=[inf,inf](可要可不要);

>> [x,fval,exitflag]=fmincon('zhabc',[2,2],a,b,[],[],l) x =

300.0000 300.0000

fval =

-105000 所以结果为-(-105000)即105000

exitflag =

1

结果为:x =

300.0000

300.0000

fval = -1.0500e+005

(也可以u=[inf,inf])

此题用linprog求解的结果也是一样的。

2019年matlab优化工具箱的使用

优化工具箱的使用 MATLAB的优化工具箱提供了各种优化函数,这些优化函数可以通过在命令行输入相应的函数名加以调用;此外为了使用方便,MA TLAB还提供了图形界面的优化工具(GUI Optimization tool)。 1 GUI优化工具 GUI优化工具的启动 有两种启动方法: (1)在命令行输入optimtool; (2)在MA TLAB主界面单击左下角的“Start”按钮,然后依次选择“Toolboxes→Optimization→Optimization tool” GUI优化工具的界面 界面分为三大块: 左边(Problem Setup and Results)为优化问题的描述及计算结果显示; 中间(Options)为优化选项的设置; 右边(Quick Reference)为帮助。为了界面的简洁,可以单击右上角“<<”、“>>”的按钮将帮助隐藏或显示。 1、优化问题的描述及计算结果显示 此板块主要包括选择求解器、目标函数描述、约束条件描述等部分。 选择合适的求解器以及恰当的优化算法,是进行优化问题求解的首要工作。 ?Solver:选择优化问题的种类,每类优化问题对应不同的求解函数。 ?Algorithm:选择算法,对于不同的求解函数,可用的算法也不同。 Problem框组用于描述优化问题,包括以下内容: ?Objective function: 输入目标函数。 ?Derivatives: 选择目标函数微分(或梯度)的计算方式。 ?Start point: 初始点。 Constraints框组用于描述约束条件,包括以下内容: ?Linear inequalities: 线性不等式约束,其中A为约束系数矩阵,b代表约束向量。 ?Linear equalities: 线性等式约束,其中Aeq为约束系数矩阵,beq代表约束向量。 ?Bounds: 自变量上下界约束。 ?Nonlinear Constraints function; 非线性约束函数。 ?Derivatives: 非线性约束函数的微分(或梯度)的计算方式。 Run solver and view results框组用于显示求解过程和结果。 (对于不同的优化问题类型,此板块可能会不同,这是因为各个求解函数需要的参数个数不一样,如Fminunc 函数就没有Constraints框组。) 2、优化选项(Options) ?Stopping criteria: 停止准则。

一个简单的Matlab_GUI编程实例

Matlab GUI编程教程(适用于初学者) 1.首先我们新建一个GUI文件:如下图所示; 选择Blank GUI(Default) 2.进入GUI开发环境以后添加两个编辑文本框,6个静态文本框,和一个按钮,布置如下

图所示; 布置好各控件以后,我们就可以来为这些控件编写程序来实现两数相加的功能了。3.我们先为数据1文本框添加代码; 点击上图所示红色方框,选择edit1_Callback,光标便立刻移到下面这段代码的位置。 1. 2. 3.function edit1_Callback(hObject, eventdata, handles) 4.% hObject handle to edit1 (see GCBO) 5.% eventdata reserved - to be defined in a future version of MATLAB

6.% handles structure with handles and user data (see GUIDATA) 7.% Hints: get(hObject,'String') returns contents of edit1 as text 8.% str2double(get(hObject,'String')) returns contents of edit1 as a double 复制代码 然后在上面这段代码的下面插入如下代码: 1. 2.%以字符串的形式来存储数据文本框1的内容. 如果字符串不是数字,则现实空白内容input = str2num(get(hObject,'String')); %检查输入是否为空. 如果为空,则默认显示为0if (isempty(input)) set(hObject,'String','0')endguidata(hObject, handles); 复制代码 这段代码使得输入被严格限制,我们不能试图输入一个非数字。 4.为edit2_Callback添加同样一段代码 5 现在我们为计算按钮添加代码来实现把数据1和数据2相加的目的。 用3中同样的方法在m文件中找到pushbutton1_Callback代码段 如下; 1.function pushbutton1_Callback(hObject, eventdata, handles) 2.% hObject handle to pushbutton1 (see GCBO) 3.% eventdata reserved - to be defined in a future version of MATLAB 4.% handles structure with handles and user data (see GUIDATA) 复制代码

应用matlab求解约束优化问题

应用matlab求解约束优化问题 姓名:王铎 学号: 2007021271 班级:机械078 上交日期: 2010/7/2 完成日期: 2010/6/29

一.问题分析 f(x)=x1*x2*x3-x1^6+x2^3+x2*x3-x4^2 s.t x1-x2+3x2<=6 x1+45x2+x4=7 x2*x3*x4-50>=0 x2^2+x4^2=14 目标函数为多元约束函数,约束条件既有线性约束又有非线性约束所以应用fmincon函数来寻求优化,寻找函数最小值。由于非线性不等式约束不能用矩阵表示,要用程序表示,所以创建m文件其中写入非线性不等式约束及非线性等式约束,留作引用。 二.数学模型 F(x)为目标函数求最小值 x1 x2 x3 x4 为未知量 目标函数受约束于 x1-x2+3x2<=6 x1+45x2+x4=7 x2*x3*x4-50>=0 x2^2+x4^2=14 三.fmincon应用方法 这个函数的基本形式为 x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) 其中fun为你要求最小值的函数,可以单写一个文件设置函数,也可是m文件。 1.如果fun中有N个变量,如x y z, 或者是X1, X2,X3, 什么的,自己排个顺序,在fun中统一都是用x(1),x(2)....x(n) 表示的。 2. x0, 表示初始的猜测值,大小要与变量数目相同 3. A b 为线性不等约束,A*x <= b, A应为n*n阶矩阵。 4 Aeq beq为线性相等约束,Aeq*x = beq。 Aeq beq同上可求 5 lb ub为变量的上下边界,正负无穷用 -Inf和Inf表示, lb ub应为N阶数组 6 nonlcon 为非线性约束,可分为两部分,非线性不等约束 c,非线性相等约束,ceq 可按下面的例子设置 function [c,ceq] = nonlcon1(x) c = [] ceq = [] 7,最后是options,可以用OPTIMSET函数设置,具体可见OPTIMSET函数的帮助文件。 四.计算程序

MATLAB优化工具箱应用简介

MATLAB优化工具箱 1 工具箱概述 1.1 功能 (1)求解无约束条件非线性极小值; (2)求解约束条件下非线性极小值,包括目标逼近问题、极大-极小值问题和半无限极小值问题; (3)求解二次规划和线性规划问题; (4)非线性最小二乘逼近和曲线拟合; (5)非线性系统的方程求解; (6)约束条件下的线性最小二乘优化; (7)求解复杂结构的大规模优化问题。 1.2 工具箱的新特色 MATLAB R2008b使用的是4.1版本的优化工具箱,较3.x的变化在于: (1)fmincon、fminimax和fgoalattain中引入了并行机制,加快梯度计算速度; (2)函数gatool和pserchtool整合到优化工具箱GUI中; (3)函数fmincon的求解器中新增内点算法; (4)提供了KNITRO优化库的接口; (5)函数lsqcurvefit、lsqnonlin和fsolve的优化选项参数PrecondBandWinth默认值由0变为inf; (6)优化选项参数TolConSQP的默认值改为1e-6; (7)输出结构中引入了参数constrviolation。 2 工具箱函数 常用函数: 输入参数中可以用options,用于所有函数,其中包括有一下参数。 (1)Display:结果显示方式,off不显示,iter显示每次迭代的信息,final为最终结果,notify只有当求解不收敛的时候才显示结果。 (2)MaxFunEvals:允许函数计算的最大次数,取值为正整数。 (3)MaxIter:允许迭代的最大次数,正整数。 (4)TolFun:函数值(计算结果)精度,正整数。 (5)TolX:自变量的精度,正整数。 而且可以用函数optimset创建和修改。 模型输入时需要注意问题: (1)目标函数最小化;

MATLAB简单程序大全

MATLAB简单程序大全 求特征值特征向量 A=[2 3 4;1 5 9;8 5 2] det(A) A' rank(A) inv(A) rref(A) eig(A)%求特征值和特征向量 卫星运行问题 h=200,H=51000,R=6378; a=(h+H+2*R)/2; c=(H-h)/2; b=(a^2-c^2)^(1/2); e=c/a; f=sqrt(1-exp(2).*cos(t)^2); l=int(f,t,0,pi/2) L=4*a.*l 动态玫瑰线 n=3;N=10000; theta=2*pi*(0:N)/N; r=cos(n*theta); x=r.*cos(theta); y=r.*sin(theta); comet(x,y) 二重积分 syms x y f=x^2*sin(y); int(int(f,x,0,1),y,0,pi) ezmesh(f,[0,1,0,pi]) 函数画图 syms x;f=exp(-0.2*x)*sin(0.5*x); ezplot(f,[0,8*pi])

玫瑰线 theta=0:0.01:2*pi; r=cos(3*theta); polar(theta,r,'r') 求x^2+y^2=1和x^2+z^2=1所围成的体积 syms x y z R r=1; Z=sqrt(1-x^2); y0=Z; V=8*int(int(Z,y,0,y0),x,0,1) 求导数及图像 f='1/(5+4*cos(x))'; subplot(1,2,1);ezplot(f) f1=diff(f) subplot(1,2,2);ezplot(f1) 绕x轴旋转 t=(0:20)*pi/10; r=exp(-.2*t).*sin(.5*t); theta=t; x=t'*ones(size(t)); y=r'*cos(theta); z=r'*sin(theta); mesh(x,y,z) colormap([0 0 0]) 某年是否闰年 year=input('input year:='); n1=year/4; n2=year/100; n3=year/400; if n1==fix(n1)&n2~=fix(n2) disp('是闰年') elseif n1==fix(n1)&n3==fix(n3) disp('是闰年') else

利用Matlab求解机械设计优化问题的分析

利用MATLAB求解机械设计优化问题的分析 周婷婷 (能源与动力学院,油气0701) 摘要:MATLAB是目前国际上最流行的科学与工程计算的软件工具, 它具有强大的数值分析、矩阵运算、信号处理、图形显示、模拟仿真和最优化设计等功能。本文浅谈MATLAB在机械设计优化问题的几点应用。 关键词:MATLAB 约束条件机械设计优化 引言:在线性规划和非线性规划等领域经常遇到求函数极值等最优化问题,当函数或约束条件复杂到一定程度时就无法求解,而只能求助于极值分析算法,如果借助计算器进行手工计算的话,计算量会很大,如果要求遇到求解极值问题的每个人都去用BASIC,C和FORTRAN之类的高级语言编写一套程序的话,那是非一朝一日可以解决的,但如用MATLAB语言实现极值问题的数值解算,就可以避免计算量过大和编程难的两大难题,可以轻松高效地得到极值问题的数值解,而且可以达到足够的精度。 1无约束条件的极值问题的解算方法 设有Rosenbrock函数如下: f(X1,X2)=100(X2-X1*X1)2+(1-X1)2 求向量X取何值时,F(x)的值最小及最小值是多少? 先用MATLAB语言的编辑器编写求解该问题的程序如下: %把函数写成MATLAB语言表达式 fun=’100*(X(2)-X(1)*X(1)2+(1-X(1))2 %猜自变量的初值 X0=[-1 2]; %所有选项取默认值 options=[ ]; %调用最优化函数进行计算。 %函数最小值存放在数组元素options(8)中

%与极值点对应的自变量值存放在向量X里 %计算步数存放在数组元素options(10)中 [X,options]=fmins(fun,X0,options); %显示与极值点对应的自变向量X的值。 %显示函数最小值 options(8) %显示函数计算步数 options(10) 把上面这段程序保存为m文件,然后用“Tools”菜单中的“Run”命令行这段程序,就可以轻松的得到如下结果: X=9.999908938395383e-001 9.99982742178110e-001 ans=1.706171071794760e-001 ans=195 显然,计算结果与理论结果的误差小到e-10级,这里调用了MATLAB的最优化函数fmins(),它采用Nelder-Mead的单纯形算法,就是因为这个函数的采用,使最小值问题的解算变得非常简单。 2.带约束条件的极值问题的解法 设目标函数和约束条件如下: f(x) =-3X1+X2+X3 -X1+2X2-X3>= -11 4X1-X2-2X3<=-3 2X1-X3= -1 X1>=0,X2>=0,X3>=0; 求X向量取何值时函数取极小值? 对条件极值问题通常的做法都是将约束条件标准化(即把等式约束条件写成等号为0的形式,把不等式写成<=0的形式)。然后把条件极值问题转换为非条件极值问题,MATLAB也采用同样的做法。

matlab 无约束优化问题

实验八 无约束优化问题 一.实验目的 掌握应用matlab 求解无约束最优化问题的方法 二.实验原理及方法 1:标准形式: 元函数 为其中n R R f X f n R x n →∈:) (min 2.无约束优化问题的基本算法一.最速下降法(共轭梯度法)算法步骤:⑴ 给定初始点 n E X ∈0,允许误差0>ε,令k=0; ⑵ 计算() k X f ?; ⑶ 检验是否满足收敛性的判别准则: () ε≤?k X f , 若满足,则停止迭代,得点k X X ≈*,否则进行⑷; ⑷ 令() k k X f S -?=,从k X 出发,沿k S 进行一维搜索, 即求k λ使得: ()() k k k k k S X f S X f λλλ+=+≥0 min ; ⑸ 令k k k k S X X λ+=+1,k=k+1返回⑵. 最速下降法是一种最基本的算法,它在最优化方法中占有重要地位.最速下降法的优点是工作量小,存储变量较少,初始点要求不高;缺点是收敛慢,最速下降法适用于寻优过程的前期迭代或作为间插步骤,当接近极值点时,宜选用别种收敛快的算法..牛顿法算法步骤: (1) 选定初始点n E X ∈0,给定允许误差0>ε,令k=0; (2) 求()k X f ?,()() 1 2-?k X f ,检验:若() ε

Matlab的实际应用设计(经典)

课 程 设 计学院:数学学院 学号:20106496 姓名:黄星奕 辅导老师:陈晓红殷明

实验一 1.1 水手、猴子和椰子问题 一、问题描述 1.1 水手、猴子和椰子问题:五个水手带了一只猴子来到南太平洋的一个荒岛上,发现那里有一大堆椰子。由于旅途的颠簸,大家都很疲惫,很快就入睡了。第一个水手醒来后,把椰子平分成五堆,将多余的一只给了猴子,他私藏了一堆后便又去睡了。第二、第三、第四、第五个水手也陆续起来,和第一个水手一样,把椰子分成五堆,恰多一只猴子,私藏一堆,再去入睡,天亮以后,大家把余下的椰子重新等分成五堆,每人分一堆,正好余一只再给猴子,试问原先共有几只椰子? 二、思考与实验 试分析椰子数目的变化规律,利用逆向递推的方法求解这一问题。 三、问题分析 用递推算法。首先分析椰子数目的变化规律,设最初的椰子数为p 0,即第一个水手所处理之前的椰子数,用p 1、p 2、p 3、p4、p 5分别表示五个水手对椰子动了手脚以后剩余的椰子数目,则根据问题有 再用x表示最后每个水手平分得到的椰子数,于是有 所以 p5 = 5x +1 利用逆向递推的方法,有 但由于椰子数为一正整数,用任意的x作为初值递推出的p0数据不一定是合适的。在实验中可以用for 循环语句结合break语句来寻找合适的x和p0,对任意的x递推计算出p0,当计算结果为正整数时,结果正确,否则选取另外的x再次重新递推计算,直到计算出的结果p0为正整数为止。

四、源程序 n=input('input n:'); for x=1:n p=5*x+1; for k=1:5 p=5*p/4+1; end if p==fix(p) break; end end disp([x,p]); 五、实验结果 六、结果分析 从理论上分析,由于 所以

MATLAB解决线性规划问题

运行环境:Windows+MATLAB 解决问题:线性规划问题(特定题目) 实验简述: MATLAB 可以高效、方便地解决线性规划问题。线性规划是合理利用、调配资源的一种应用数学的方法。它的基本思路就是在满足一定的约束条件下,使预定的目标达到最优。它的研究内容可归纳为两个方面:一是系统的任务已定,如何合理筹划,精细安排,用最少的资源去实现这个任务:二是资源的数量已定,如何利用、分配,使任务完成得最多。前者是求极小,后者是求极大。线性规划是在满足企业内、外部的条件下,实现管理目标和极值问题,就是要以尽少的资源输入来实现更多的社会需要的产品的产出。现在通过专门的数学MATLAB 软件,只要将模型中的目标函数系数、约束条件系数、不等关系输入计算机,就会很快算出结果。 在生活实践中,很多重要的实际问题都是线性的(至少能够用线性函数很好的近似表示),所以我们一般把这些问题化为线性的目标函数和约束条件进行分析,通常将目标函数和约束都是线性表达式的规划问题称为线性规划。 它的一般形式是: ) ,,2,1(0. .min 221122222121112121112211n i x b x a x a x a b x a x a x a b x a x a x a t s x c x c x c f i m n mn m m n n n n n n =>=???????<=+++<=+++<=++++++= 也可以用矩阵形式来表示: 0,..min >=<==x b Ax t s x c f T 线性规划的可行解是满足约束条件的解;线性规划的最优解是使目标函数达到最优的可行解。 线性规划关于解的情况可以是: 1、无可行解,即不存在满足约束条件的解; 2、有唯一最优解,即在可行解中有唯一的最有解; 3、有无穷最优解,即在可行解中有无穷个解都可使目标函数达到最优; 4、有可行解,但由于目标函数值无界而无最优解。 一般求解线性规划的常用方法是单纯形法和改进的单纯形法,这类方法的基

MATLAB中简单的数据拟合方法与应用实例①

MATLAB中简单的数据拟合方法与应用实例 仅供努力学习matlab的同学们参考参考,查阅了M多资料,总结了以下方法 按步骤做能够基本学会matlab曲线拟合的 1.1数据拟合方法 1.1.1多项式拟合 1.多项式拟合命令 polyfit(X,Y,N):多项式拟合,返回降幂排列的多项式系数。 Polyval(P,xi):计算多项式的值。 其中,X,Y是数据点的值;N是拟合的最高次幂;P是返回的多项式系数;xi是要求的横坐标 拟合命令如下: x=[1 2 3 4 5 6 7 8 9]; y=[9 7 6 3 -1 2 5 7 20]; P=polyfit(x,y,3); xi=0:.2:10; yi=polyval(P,xi); plot(xi,yi,x,y,'r*'); 拟合曲线与原始数据如图1-1 图1-1 2图形窗口的多项式拟合 1)先画出数据点如图1-2 x=[1 2 3 4 5 6 7 8 9]; y=[9 7 6 3 -1 2 5 7 20]; plot(x,y,'r*');

图1-2 2)在图形窗口单击Tools—Basic Fitting,如图1-3勾选. 图1-3 图1-3右方分别是线性、二阶、三阶对数据进行多项式拟合。下面的柱状图显示残差,可以看出,三阶多项式的拟合效果是最好的。 1.1.2指定函数拟合 已知M组数据点和对应的函数形式f t (t)=acos(kt)e X Y 编写M文件:

syms t x=[0;0.4;1.2;2;2.8;3.6;4.4;5.2;6;7.2;8;9.2;10.4;11.6;12.4;13.6;14.4;15]; y=[1;0.85;0.29;-0.27;-0.53;-0.4;-0.12;0.17;0.28;0.15;-0.03;-0.15;-0.071;0.059;0.08;0.032;-0.015;-0.02]; f=fittype('a*cos(k*t)*exp(w*t)','independent','t','coefficients',{'a','k','w'}); cfun=fit(x,y,f) xi=0:.1:20; yi=cfun(xi); plot(x,y,'r*',xi,yi,'b-'); 图1-4 运行程序,在命令窗口可达到以下运行结果,图像如图1-4 Warning: Start point not provided, choosing random start point. > In fit>handlewarn at 715 In fit at 315 In Untitled2 at 5 cfun = General model: cfun(t) = a*cos(k*t)*exp(w*t) Coefficients (with 95% confidence bounds): a = 0.9987 ( 0.9835, 1.014) k = 1.001 (0.9958, 1.006) w = -0.2066 (-0.2131, -0.2002) 从结果可以看出,拟合的曲线为: (0.2066) ()0.9987cos(1.001)*t f t t e- =。拟 合曲线给出了数据大致趋势,并给出了各参数的置信区间。

用MATLAB求解规划问题

§15. 利用Matlab求解线性规划问题 线性规划是一种优化方法,Matlab优化工具箱中有现成函数linprog对如下式描述的LP问题求解: % min f'x % s.t .(约束条件):Ax<=b % (等式约束条件):Aeqx=beq % lb<=x<=ub linprog函数的调用格式如下: x=linprog(f,A,b) x=linprog(f,A,b,Aeq,beq) x=linprog(f,A,b,Aeq,beq,lb,ub) x=linprog(f,A,b,Aeq,beq,lb,ub,x0) x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options) [x,fval]=linprog(…) [x, fval, exitflag]=linprog(…) [x, fval, exitflag, output]=linprog(…) [x, fval, exitflag, output, lambda]=linprog(…) 其中: x=linprog(f,A,b)返回值x为最优解向量。 x=linprog(f,A,b,Aeq,beq) 作有等式约束的问题。若没有不等式约束,则令 111

A=[ ]、b=[ ] 。 x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options) 中lb ,ub为变量x的下界和上界,x0为初值点,options为指定优化参数进行最小化。 Options的参数描述: Display显示水平。选择’off’ 不显示输出;选择’I ter’显示每一步迭代过程的输出;选择’final’ 显示最终结果。 MaxFunEvals 函数评价的最大允许次数 Maxiter 最大允许迭代次数 TolX x处的终止容限 [x,fval]=linprog(…) 左端fval 返回解x处的目标函数值。 [x,fval,exitflag,output,lambda]=linprog(f,A,b, Aeq,beq,lb,ub,x0) 的输出部分: exitflag描述函数计算的退出条件:若为正值,表示目标函数收敛于解x 处;若为负值,表示目标函数不收敛;若为零值,表示已经达到函数评价或迭代的最大次数。 output 返回优化信息:output.iterations表示迭代次数;output.algorithm表示所采用的算法;outprt.funcCount表示函数评价次数。 lambda返回x处的拉格朗日乘子。它有以下属性: lambda.lower-lambda的下界; lambda.upper-lambda的上界; lambda.ineqlin-lambda的线性不等式; lambda.eqlin-lambda的线性等式。 112

matlab中GUI的使用

今天由于要帮一朋友用matlab处理一幅图片,处理图片的要求其实很简单,就是把图片加载进matlab中,然后显示出想要的某一列的趋势图来。如果用代码写的话,程序如下: x=imread(‘文件路径\*.jpg’); figure(1); plot(x(:,100)); %假如要显示的是图像的第100列的趋势图 显示效果如下图所示: 虽然用M文件写两句很简单,不过带着感情,追求更好是我们永恒的动力,首先用M文件时候人机界面不友好,的看很多的代码,尤其对不太熟悉M编程的的人而言即使很简单也看着比较郁闷,因此我们接下来用matlab中的GUI来完成这个简单的例子,当然编程起来比这个复杂多,但是对使用者而言确很简单清楚。这个就如同VC中的MFC和WINDOWSFORMS一样。做成的都是人机交互界面。不废话了,看例子。 首先打开MATLAB,要新建一个MATLAB GUI 程序有三种方法,这里我直接在命令窗口里输入guide,新建一个空的GUI程序,选择如下图: 新建好的GUI编程界面如下图,上面无非就是菜单,工具,还有编程用到的控件,还有编程的用户窗口。这个和LABVIEW有点像。不过LABVIEW的前面板都是用控件拖出来的,后面板也是拖控件

画出来的。而GUI的显示界面是拖控件画出来的,其中一些属性参数要设置下,而后面的执行这些控件的都是写的M函数,即后面板都是要写代码的,这个比LABVIEW单纯的画程序要难,当然灵活性也大,不过个人感觉没一个简单的,都难呀。至于上面控件的意思,怎么拖请自己看吧,若学过MFC或者WINDOWSFORMS的人就会很容易理解的,这之间是太像了,呵呵。 我们的目的是显示图片,并且显示需要的某一列的趋势图。为了使人机交互更好点,我们可以使加载图片时和我们选择打开文件夹那样完成,即自己选择路径,而不用每次在M文件里改路径。还有我们要求在加载图片完成时立马显示出这幅图片的大小信息,即多少行,多少列。应该显示哪一列的趋势图,这个列数我们应该可以自己更加图片的信息来选择的,即从界面上面输入。完了之后我们还需要一个推出按键来退出GUI程序。 好,我们按照这些要求来完成前面板的空间摆放,其中需要两个axes控件,用来显示图片和画出的趋势图。还有若干个static text用来标注和显示输出信息。一个edit text用来输入需要画的列的信息。面板画出来如下:我就真没啥审美感了,所以摆出来总觉得哪里怪怪的,就凑合着看吧,重要的是方法。

(整理)Matlab优化工具箱基本用法.

Matlab 优化工具箱 x = bintprog(f, A, b, Aeq, Beq, x0, options) 0-1规划

用MATLAB 优化工具箱解线性规划 命令:x=linprog (c ,A ,b ) 2、模型: beq AeqX b AX ..min =≤=t s cX z 命令:x=linprog (c ,A ,b ,Aeq,beq ) 注意:若没有不等式:b AX ≤存在,则令A=[ ],b=[ ]. 若没有等式约束, 则令Aeq=[ ], beq=[ ]. 3、模型: VUB X VLB beq AeqX b AX ..min ≤≤=≤=t s cX z 命令:[1] x=linprog (c ,A ,b ,Aeq,beq, VLB ,VUB ) [2] x=linprog (c ,A ,b ,Aeq,beq, VLB ,VUB, X0) 注意:[1] 若没有等式约束, 则令Aeq=[ ], beq=[ ]. [2]其中X0表示初始点 4、命令:[x,fval]=linprog(…) 返回最优解x及x处的目标函数值fval. 例1 max 6543216.064.072.032.028.04.0x x x x x x z +++++= 85003.003.003.001.001.001.0. .654321≤+++++x x x x x x t s 70005.002.041≤+x x 10005.002.052≤+x x 90008.003.063≤+x x 6,2,10 =≥j x j 解 编写M 文件小xxgh1.m 如下: c=[-0.4 -0.28 -0.32 -0.72 -0.64 -0.6]; A=[0.01 0.01 0.01 0.03 0.03 0.03;0.02 0 0 0.05 0 0;0 0.02 0 0 0.05 0;0 0 0.03 0 0 0.08]; b=[850;700;100;900]; Aeq=[]; beq=[]; vlb=[0;0;0;0;0;0]; vub=[]; [x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub) min z=cX b AX t s ≤..1、模型:

MATLAB在土木工程中的应用

MATLAB在土木工程中的应用 MATLAB是由美国MathWorks公司于1984年发布的、面向科学计算、数据可视化以及交互程序设计的高级计算机语言。MA TLAB软件开发的初衷是方便地进行矩阵运算,如今的MATLAB已经把功能延伸到了科学研究和工程应用的诸多领域。在国外,MA TLAB已经成为数值分析、数理统计、系统识别、信号处理、动态仿真等领域的基本工具。同传统的土木工程计算机语言FORTRAN和C相比,MA TLAB 更具有以下几大优势: a)功能强大。除了数值计算上的绝对优势外,MA TLAB5.2以上版本中还开发了自己的符号计算功能。用户只要拥有一个MAT ,就可以方便的处理诸如矩阵运算,线性与非线性方程求解,特征值问题,统计及优化问题了。 b)语言简单。MA TLAB允许用户以数学形式的语言编写程序,比FORTRAN和C更接近计算公式的书写思维方式。它的操作和功能函数指令就是常用计算机和数学上一些简单的英文单词。 c)扩充能力强、可开发性强。MATLAB本身的函数就是以源代码形式出现,用户可以仿照其写法,创建自己的程序“库”。另外,MA TLAB可以方便的与FORTRAN 或C语言接口,充分利用现有资源。 d)编程易,效率高。MA TLAB程序文件是纯文本文件,用任何字处理文件都可以对它进行编写和修改。因此程序易调试,人机交互性强。另外,MATLAB自己也拥有视窗环境下的调试系统,程序调试简单、方便。随着科研水平的不断提高,科研领域的不断扩展,多学科并行、交叉发展已成必然,认识到MATLAB的强大功能,使得MATLAB在土木工程领域中得到充分应用,达到利用MA TLAB来快速实现科研构想和提高工作效率的效果。 1 MA TLAB在结构分析中的应用 土木工程中的结构分析主要是指结构在静力和动力荷载作用时结构内力和位移的求解问题。由于结构的复杂多变和对求解精度的严格要求,采用有限元法(finite element method)程序是常用的分析手段。有限元程序中非线性方程组的求解和解的收敛问题,是困扰许多科研人员的基本问题之一,采用FORTRAN或C不但需要很多语句,而且需要研究者有较高的计算机理论和实际操作水平,程序的编制与调试又要占用近一半的研究时间。MA TLAB的出现,可以在用简单的语句完成基本算法程序后,方程组的求解利用MA TLAB自身的命令实现,整个程序不但小巧、便于调试与操作,而且解的收敛问题易于解决。例如,经典的非线性方程组Newton解法MATLAB求解程序仅有l4行,而用C语言编写的Newton法子函数程序接近30行,而且在每个迭代步当Newton方程建立后,还要再调用其他子函数程序求解线性方程组,较MA TLAB程序要繁琐许多。再有,对图1所示的为整体坐标系中二维一次四结点单元,单元可以是任意形状的四边形。这种单元比较容易满足结构实际分析的需要,该单元在整体坐标系下(x0y坐标系)的形函数表达式非常复杂,用FORTRAN或C语言将其表达出来,是非常困难的。而用MATLAB语言就可以很容易的将其写出。如二维一次四结点单元的MA TLAB程序命令如下: clear v:sym(’[1,X,Y,X Y]’); m=sym(’【1,xl,yl,xl yl;x2,y2,x2 y2;1, x3,y3,x3 y3;1,x4,y4,x4 y4]’); mm=inv(m); d=v mm simplify(factor(d));

Matlab简单运用

学院:船舶学院班级:0701104 学号:070110418 姓名:施鹏

作业一:有初始状态为0的二阶微分方程x"+0.2x'+0.4x=0.2u (t), 其中u(t)是单位阶跃函数,试建立系统模型并仿真。 方法1:用积分器直接构造求解微分方程的模型。 方法2:利用传递函数模块建模。 方法3:利用状态方程模块建模。 解:x’’+0.2x’+0.4x=0.2u(t) x’’=-0.2x’-0.4x+0.2u(t) u(t)=1(t) 方法一: 0102030405060708090100

方法二:x ’’+0.2x ’+0.4x=0.2u(t) L 氏变换后得:s 2X(s)+0.2sX(s)+0.4X(s)=0.2U(s) G(s)=0.2/(s 2+0.2s+0.4) 10 20 30 40 50 60 70 80 90 100 0.10.20.30.40.50.60.70.8

方法三: 输出同上。 作业2: 封装蹦极系统。要求:封装后的蹦极子系统只有一个输出端口,封装后子系统的参数设置包括蹦极者的体重、弹性绳索的弹性常数。通过仿真分析蹦极系统在下述情况下是否安全,并绘制响应的响应曲线: (1)蹦极者体重80 kg,弹性绳索的弹性常数为30; (2)蹦极者体重70 kg,弹性绳索的弹性常数为20。 解:蹦极跳时一种挑战身体极限的运动,蹦极者系着一根弹性绳从高处的桥梁(或山崖等)向下跳。在下落的过程中,蹦极者几乎处于失重状态。按照牛顿运动规律,自由下落的物体由下式确定: m为人体的质量,g为重力加速度。位置x的基准为桥梁的基准面. 12 m x m g a x a x x ????? =--

matlab在优化设计中的应用

Matlab在优化设计中的应用 摘要 常见的优化问题包括线性规划、无约束优化、约束优化、最下二乘优化、多目标规划等。本文研究了matlab在这些常见优化问题中的应用及求解。 在进行研究本课题之前,我们先通过网络、电子书刊等各种有效渠道获取我们所需信息,在充分了解与熟练掌握了各种优化问题的具体特点及性质后,我们给出了关于如何用matlab进行多类优化问题的求解基本方法,在此前提下,为了体现该软件在这些优化领域的实际应用效果,我们结合若干个优化问题的实例进行分析、建模、以及运用matlab编程求解,在求解过程中,通过得到的精确数据和反应结果的图例,我们了解到matlab工具箱的功能强大,是处理优化问题的非常方便的编程工具。 关键词:matlab 优化问题 二、基本概念 2.1.1 线性规划 线性规划是优化的一个重要分支。它在理论和算法上都比较成熟,在实际中有广泛的应用。例如数学表达形式:

???? ? ??? ?=≥=+++=+++=++++++n i x b x a x a x a b x a x a x a b x a x a x a t s x c x c x c i m n mn m m n n n n n n ,,2,1,0..min 221 122222121112121112211 在MTLAB 提供的优化工具箱中,解决规划的命令是linprog ,它的调用格式如下, ),,(b A c linprog x = 求解下列形式的线性规划: ?? ?≤b Ax t s x c T ..min ),,,,(beq Aeq b A c linprog x = 求解下面形式的线性规划: ?? ? ? ????=?≤beq x Aeq b Ax t s x c T ..min 若没有不等式约束b Ax ≤,则只需命令 [][],==b A 。 ),,,,,,(ub lb beq Aeq b A c linprog x = 求解下面形式的线性规划: ??? ?????? ? ? ?≤≤=?≤ub x lb beq x Aeq b Ax t s x c T ..min 若没有不等式约束b Ax ≤,则只需令[][],==b A ;若只有下界约束,则可以不用输入ub 。 2.1.2 无约束优化算法 对于无约束优化问题,已经有许多有效的算法。这些算法基本都是迭代法,它们都遵循下面的步骤: ① 选取初始点x 0 ,一般来说初始点越靠近最优解越好; ② 如果当前迭代点x k 不是原问题的最优解,那么就需要找一个搜索方向p k ,使得目标函数f (x ) 从x k 出发,沿方向p k 有所下降;

Matlab简单实例学习

Matlab 程序代码 绘制 1.5 10sin(7.75)7.75 t y e t -= 的函数图象。 fv clear; t=0:0.02:10; f1=10/sqrt(7.75).*exp(-1.5*t); f2=sin(sqrt(7.75).*t); y=f1.*f2; plot(t,y,'-k',t,y,'ok'); xlabel('t');ylabel('y(t) ');title('函数图像') axis([-2 10 -0.5 2]) 拉氏变换 clear; clc; syms s t fs1 fs2 fs3 ft1 ft2 ft3; L=1,C=0.1,R=[1.5 3 5]; h1=1/(L*C*s^2+R(1)*C*s+1); h2=1/(L*C*s^2+R(2)*C*s+1);

h3=1/(L*C*s^2+R(3)*C*s+1); fs1=h1*(1/s); fs2=h2*(1/s); fs3=h3*(1/s); ft1=ilaplace(fs1,s,t); ft2=ilaplace(fs2,s,t); ft3=ilaplace(fs3,s,t); ezplot(t,ft1); hold on; ezplot(t,ft2); hold on; ezplot(t,ft3); 信号编码 对[1 1 0 1 1 1 0 1 0 0 1]进行编码。 clear; clc; c=[1 1 0 1 1 1 0 1 0 0 1] for i=1:length(c) if i==1 d1(i)=0;d2(i)=0; elseif i==2 d1(i)=c(i-1);d2(i)=c(i-1); elseif i==3

MATLAB 函数解优化问题

MATLAB 函数在优化问题中的应用 §1 线性规划模型 一、线性规划课题: 实例1:生产计划问题 假设某厂计划生产甲、乙两种产品,现库存主要材料有A类3600公斤,B类2000公斤,C类3000公斤。每件甲产品需用材料A类9公斤,B类4公斤,C类3公斤。每件乙产品,需用材料A类4公斤,B类5公斤,C类10公斤。甲单位产品的利润70元,乙单位产品的利润120元。问如何安排生产,才能使该厂所获的利润最大。 建立数学模型: 设x1、x2分别为生产甲、乙产品的件数。f为该厂所获总润。 max f=70x1+120x2 s.t 9x1+4x2≤3600 4x1+5x2≤2000 3x1+10x2≤3000 x1,x2≥0 实例2:投资问题 某公司有一批资金用于4个工程项目的投资,其投资各项目时所得的净收益(投入资金锪百分比)如下表: 工程项目收益表 由于某种原因,决定用于项目A的投资不大于其他各项投资之和而用于项目B和C的投资要大于项目D的投资。试确定全文该公司收益最大的投资分配方案。 建立数学模型:

设x 1、 x 2 、x 3 、x 4分别代表用于项目A 、B 、C 、D 的投资百分数。 max f=0.15x 1+0.1x 2+0.08 x 3+0.12 x 4 s.t x 1-x 2- x 3- x 4≤0 x 2+ x 3- x 4≥0 x 1+x 2+x 3+ x 4=1 x j ≥0 j=1,2,3,4 实例3:运输问题 有A 、B 、C 三个食品加工厂,负责供给甲、乙、丙、丁四个市场。三个厂每天生产食品箱数上限如下表: 四个市场每天的需求量如下表: 从各厂运到各市场的运输费(元/每箱)由下表给出:

相关主题