最优化方法及其matlab程序设计习题答案
证明:根据严格凸函数定义证明。
定义:对任意x ̸= y,及任意实数λ ∈ (0, 1)都有f (λx + (1 − λ)y) ≤ λf (x) + (1 − λ)f (y).
充分条件:∀x, y ∈ ℜn, 有f (x + y) ≤ f (x) + f (y)
对任意x ̸= y,及任意实数λ ∈ (0, 1)都有f (λx+(1−λ)y) ≤ f (λx)+f ((1−λ)y)
8
k= 2 (2)阻尼牛顿法 function He=Hesstwo(x) n=length(x); He=zeros(n,n); He=[8, 0; 0, 2]; ≫ x0=[0,1]’;[x val k]=dampnm(’funtwo1’,’gfuntwo1’,’Hesstwo’,x0) x= 1 2 val = -8 k= 1 第3题. function f=fun(x) f = (x(1) − 2)4 + (x(1) − 2 ∗ x(2))2; function gf=gfun(x) gf = [4 ∗ (x(1) − 2)3 + 2 ∗ (x(1) − 2 ∗ x(2)), −4 ∗ (x(1) − 2 ∗ x(2))]′; ≫clear all; ≫x0=[0 3]’;[v,val,k]=grad(’fun’,’gfun’,x0)
(1
−
λ)y)=
1 2
(λx
+
(1
−
λ)y)T
G(λx
+
(1
−
λ)y)
+
bT
(λx
+
(1
−
λ)y)
λf
(x)
+
(1
−
λ)f
(y)=λ(
1 2
xT
Gx
+
bT
x)+(1
−
λ)(
1 2
yT
Gy
+
bT
y)
λf (x)
+
(1
−
λ)f (y)
−
f (λx
+
(1
−
λ)y)=λ(
1 2
xT
Gx)+(1
−
λ)(
1 2
第2题: 黄金0.618算法: function [s,phis,k,G,E]=golds(phi,a,b,delta,epsilon) %输入:phi是目标函数,a,b是搜索区间的两个端点 % delta,epsilon分别是自变量和函数值的容许误差 %输出: s, phis 分别是近似极小点和极大值,G是n × 4矩阵, % 其第k行分别是a,p,q,b的第k次迭代值ak, pk, qk, bk, % E = [ds, dphi],分别是s和phis的误差限 %%%%%%%%%% t=(sqrt(5)-1)/2; h=b-a; phia=feval(phi,a); phib=feval(phi,b); p=a+(1-t)*h; q=a+t*h; phip=feval(phi,p); phiq=feval(phi,q); k=1; G(k,:)=[a, p, q, b]; while(abs(phib-phia)>epsilon)|(h>delta) if(phip<phiq) b=q; phib=phiq; q=p; phiq=phip; h=b-a; p=a+(1-t)*h; phip=feval(phi,p); else a=p; phia=phip; p=q; phip=phiq; h=b-a; q=a+t*h; phiq=feval(phi,q); end
正定矩阵
3.证明f (x)
=
1 2
xT
Gx
+
bT x为严格凸函数当且仅当Hesse矩阵G正定。
证明:根据严格凸函数定义证明。
对任意x ̸= y,及任意实数λ ∈ (0, 1)都有f (λx+(1−λ)y) < λf (x)+(1−λ)f (y).
充分性:Hesse矩阵G正定=》严格凸函数.
f
(λx
+
−
y)
+
1 2
(1
− λ)(x − y)T G(x − y)
− >
λ)yT Gλ(y − x) 0 G正定保障了严格不等式成立。
反之,必要性:严格凸函数=》Hesse矩阵G正定.
类似,当对任意x ̸= y,及任意实数λ ∈ (0, 1)都有f (λx + (1 − λ)y) < λf (x) + (1 − λ)f (y).
最优化方法-习题解答
张彦斌 计算机学院 2014年10月20日
Contents
1 第一章最优化理论基础-P13习题1(1)、2(3)(4)、3、4
1
2 第二章线搜索算法-P27习题2、4、6
4
3 第三章最速下降法和牛顿法P41习题1,2,3
7
4 第四章共轭梯度法P51习题1,3,6(1)
10
5 第五章拟牛顿法P73-2
0 1.1459 1.8541 3.0000
0 0.7082 1.1459 1.8541
0 0.4377 0.7082 1.1459
0.4377 0.7082 0.8754 1.1459 0.7082 0.8754 0.9787 1.1459
(6)
0.7082 0.8115 0.8754 0.9787
0.7721 0.8115 0.8359 0.8754
0.7721 0.7965 0.8115 0.8359
0.7965 0.8115 0.8208 0.8359
第4题: ≫clear all;[s, phis, k, ds, dphi, S] = qmin(inline(′s3 − 2 ∗ s + 1′), 0, 3, 1e − 2, 1e − 4); ≫s s= 0.8165 第6题 function f=fun(x) f = 100 ∗ (x(2) − x(1)2)2 + (1 − x(1))2; function gf=gfun(x) gf = [−400 ∗ (x(2) − x(1)2) ∗ x(1) − 2 ∗ (1 − x(1)), 200 ∗ (x(2) − x(1)2)]′; function mk=armijo(xk,dk ) beta=0.5; sigma=0.2; m=0; mmax=20; while (m¡=mmax) if (f un(xk + betam ∗ dk) <= f un(xk) + sigma ∗ betam ∗ gf un(xk)′ ∗ dk) mk=m; break;
Gλy
−
1 2
λxT
G(1
−
λ)y
−
1 2
(1
−
λ)yT
Gλx
=
1 2
λxT
G(1
−
λ)(x
−
y)
+
1 2
(1
−
λ)yT
Gλ(y
−
x)
=
1 2
λ(1
−
λ)(x
−
y)T
G(x
−
y)
>
0
4.若对任意x ∈ ℜn及实数θ > 0都有f (θx) = θf (x),证明f (x)在ℜn上为凸函数 的充要条件是∀x, y ∈ ℜn, f (x + y) ≤ f (x) + f (y)
yT
Gy)
−
[
1 2
(λx)T
G(λx)
+
1 2
(1
−
λ)yT G(1
−
λ)y
+
1 2
λxT
G(1
−
λ)y
+
1 2
(1
−
λ)yT Gλx]
=
1 2
λxT
G(1
−
λ)x
+
1 2
(1
−
λ)yT
Gλy
−
1 2
λxT
G(1
−
λ)y
−
1 2
(1
−
λ)yT
Gλx
2
= =
1 21 2
λxT λ(1
G(1
−
λ)(x
(2)
合并同类项,
2(λx1 + (1 − λ)y1) + (λx2 + (1 − λ)y2) ≥ 1, (λx1 + (1 − λ)y1) − 2(λx2 + (1 − λ)y2) ≥ 1
(3)
证毕.
2.判断下列函数为凸(凹)函数或严格凸(凹)函数:
(3)f (x) = x21 − 2x1x2 + x22 + 2x1 + 3x2
6
end m=m+1; end alpha=betamk newxk=xk+alpha*dk fk=fun(xk) newfk=fun(newxk) clear all;xk=[-1,1]’;dk=[1,1]’;mk=armijo(xk,dk) alpha = 0.0020 newxk = -0.9980 1.0020 fk = 4 newfk = 3.9956 mk = 9
利用f (θx) = θf (x),
f (λx + (1 − λ)y) ≤ f (λx) + f ((1 − λ)y)=λf (x) + (1 − λ)f (y).
充分性证毕;
必要性:f (x)在ℜn上为凸函数=》∀x, y ∈ ℜn, f (x + y) ≤ f (x) + f (y)
Matlab最优化计算方法
Aeq=[]; beq=[];
vlb=[0;0;0;0;0;0]; vub=[]; [x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)
问题2 max z 7 x1 5x 2 解答
3 x1 2 x2 90 4 x 6 x 200 2 s.t. 1 7 x2 210 x1 0, x2 0
问题
min z 13 9 10 11 12 8X
0 0 0.4 1.1 1 0 800 X 0 0 0 0 . 5 1 . 2 1 . 3 900
x1 x2 x 3 ,X 0 x4 x 5 x 6
实验作业
某厂生产甲乙两种口味的饮料,每百箱甲饮料需用 原料6千克,工人10名,可获利10万元;每百箱乙饮料 需用原料5千克,工人20名,可获利9万元.今工厂共有 原料60千克,工人150名,又由于其他条件所限甲饮料 产量不超过8百箱.问如何安排生产计划,即两种饮料 各生产多少使获利最大.进一步讨论: 1)若投资0.8万元可增加原料1千克,问应否作这项 投资. 2)若每百箱甲饮料获利可增加1万元,问应否改变生 产计划.
返 回
解答
线性规划的基本算法——单纯形法
1.线性规划的标准形式:
min z = f ( x)
x
s.t . g i ( x ) 0 ( i 1,2,, m)
其中目标函数 f ( x) 和约束条件中gi ( x) 都是线性函数
2. 线性规划的基本算法——单纯形法
用单纯法求解时,常将标准形式化为:
结果:
x= 0.0000 600.0000 0.0000 400.0000 0.0000 500.0000 fval =1.3800e+004 即在甲机床上加工600个工件2,在乙机床上加工400个工件1、 500个工件3,可在满足条件的情况下使总加工费最小为13800。
MATLAB课后习题集附标准答案
第2章MATLAB概论1、与其他计算机语言相比较,MA TLAB语言突出的特点是什么?答:起点高、人机界面适合科技人员、强大而简易的作图功能、智能化程度高、功能丰富,可扩展性强.2、MA TLAB系统由那些部分组成?答:开发环境、MATLAB数学函数库、MATLAB语言、图形功能、应用程序接口3、安装MATLAB时,在选择组件窗口中哪些部分必须勾选,没有勾选的部分以后如何补安装?答:在安装MATLAB时,安装内容由选择组件窗口中各复选框是否被勾选来决定,可以根据自己的需要选择安装内容,但基本平台(即MATLAB选项)必须安装.第一次安装没有选择的内容在补安装时只需按照安装的过程进行,只是在选择组件时只勾选要补装的组件或工具箱即可.4、MATLAB操作桌面有几个窗口?如何使某个窗口脱离桌面成为独立窗口?又如何将脱离出去的窗口重新放置到桌面上?答:在MATLAB操作桌面上有五个窗口,在每个窗口的右下角有两个小按钮,一个是关闭窗口的Close 按钮,一个是可以使窗口称为独立的Undock按钮,点击Undock按钮就可以使该窗口脱离桌面称为独立窗口,在独立窗口的view菜单中选择Dock,菜单项就可以将独立的窗口重新防止的桌面上.5、如何启动M文件编辑/调试器?答:在操作桌面上选择“建立新文件”或“打开文件”操作时,M文件编辑/调试器将被启动.在命令窗口中键入edit命令时也可以启动M文件编辑/调试器.6、存储在工作空间中的数组能编辑吗?如何操作?答:存储在工作空间的数组可以通过数组编辑器进行编辑:在工作空间浏览器中双击要编辑的数组名打开数组编辑器,再选中要修改的数据单元,输入修改内容即可.7、命令历史窗口除了可以观察前面键入的命令外,还有什么用途?答:命令历史窗口除了用于查询以前键入的命令外,还可以直接执行命令历史窗口中选定的内容、将选定的内容拷贝到剪贴板中、将选定内容直接拷贝到M文件中.8、如何设置当前目录和搜索路径,在当前目录上的文件和在搜索路径上的文件有什么区别?答:当前目录可以在当前目录浏览器窗口左上方的输入栏中设置,搜索路径可以通过选择操作桌面的file菜单中的Set Path菜单项来完成.在没有特别说明的情况下,只有当前目录和搜索路径上的函数和文件能够被MATLAB运行和调用,如果在当前目录上有与搜索路径上相同文件名的文件时则优先执行当前目录上的文件,如果没有特别说明,数据文件将存储在当前目录上.9、在MA TLAB中有几种获得帮助的途径?答:(1)帮助浏览器:选择view菜单中的Help菜单项或选择Help菜单中的MATLAB Help菜单项可以打开帮助浏览器.(2)help命令:在命令窗口键入“help”命令可以列出帮助主题,键入“help 函数名”可以得到指定函数的在线帮助信息.(3)lookfor命令:在命令窗口键入“lookfor 关键词”可以搜索出一系列与给定关键词相关的命令和函数.(4)模糊查询:输入命令的前几个字母,然后按Tab键,就可以列出所有以这几个字母开始的命令和函数.注意:lookfor和模糊查询查到的不是详细信息,通常还需要在确定了具体函数名称后用help命令显示详细信息.第3章 MATLAB 数值运算3.1在MA TLAB 中如何建立矩阵⎥⎦⎤⎢⎣⎡194375,并将其赋予变量a ? 答:在Command Window 窗口输入操作:>> a=[5 7 3;4 9 1]3.2有几种建立矩阵的方法?各有什么优点? 答:(1)直接输入法,如a=[1 2 3 4],优点是输入方法方便简捷;(2)通过M 文件建立矩阵,该方法适用于建立尺寸较大的矩阵,并且易于修改; (3)由函数建立,如y=sin(x),可以由MATLAB 的内部函数建立一些特殊矩阵; (4)通过数据文件建立,该方法可以调用由其他软件产生数据.3.3在进行算术运算时,数组运算和矩阵运算各有什么要求?答:进行数组运算的两个数组必须有相同的尺寸.进行矩阵运算的两个矩阵必须满足矩阵运算规则,如矩阵a 与b 相乘(a*b )时必须满足a 的列数等于b 的行数.渗釤呛俨匀谔鱉调硯錦。
matlab程序设计与应用第二版习题答案
matlab程序设计与应用第二版习题答案Matlab程序设计与应用第二版习题答案Matlab是一种强大的数学软件,广泛应用于科学计算、数据分析和工程设计等领域。
《Matlab程序设计与应用》是一本经典的教材,对于学习和掌握Matlab编程语言具有重要的意义。
本文将为大家提供《Matlab程序设计与应用第二版》中部分习题的答案,帮助读者更好地理解和应用Matlab。
第一章:Matlab基础1.1 基本操作1. a = 3; b = 4; c = sqrt(a^2 + b^2); disp(c);2. x = linspace(-pi, pi, 100); y = sin(x); plot(x, y);3. A = [1 2 3; 4 5 6; 7 8 9]; B = [9 8 7; 6 5 4; 3 2 1]; C = A + B; disp(C);1.2 控制结构1. for i = 1:10disp(i);end2. n = 0; sum = 0; while sum < 100n = n + 1;sum = sum + n;enddisp(n);3. x = 5; if x > 0disp('x is positive');elseif x < 0disp('x is negative');elsedisp('x is zero');end第二章:向量和矩阵运算2.1 向量运算1. A = [1 2 3]; B = [4 5 6]; C = A .* B; disp(C);2. A = [1 2 3]; B = [4 5 6]; C = A ./ B; disp(C);3. A = [1 2 3]; B = [4 5 6]; C = dot(A, B); disp(C);2.2 矩阵运算1. A = [1 2 3; 4 5 6]; B = [7 8; 9 10; 11 12]; C = A * B; disp(C);2. A = [1 2 3; 4 5 6]; B = [7 8; 9 10; 11 12]; C = B * A; disp(C);3. A = [1 2 3; 4 5 6]; B = [7 8; 9 10; 11 12]; C = A .* B; disp(C); 第三章:函数和脚本文件3.1 函数1. function y = myfunc(x)y = x^2 + 3*x + 2;end2. function [y1, y2] = myfunc(x1, x2)y1 = x1^2 + 3*x1 + 2;y2 = x2^2 + 3*x2 + 2;end3. function [y1, y2] = myfunc(x)y1 = x^2 + 3*x + 2;y2 = sin(x);end3.2 脚本文件1. x = linspace(0, 2*pi, 100); y = sin(x); plot(x, y);2. x = linspace(-10, 10, 100); y = x.^2 + 3*x + 2; plot(x, y);3. x = linspace(0, 2*pi, 100); y1 = sin(x); y2 = cos(x); plot(x, y1, x, y2);通过以上习题的答案,读者可以对Matlab程序设计的基本语法和常用函数有一个初步的了解。
MATLAB课件第七章 最优化计算方法
以fun702为文件名保存此函数文件。 在命令窗口输入: x0=[-2;4]; x=fminunc('fun702',x0) 结果显示:
f=
-1.0000 x=
Matlab程序: ch702.m
1.0000 1.0000
即极小值为-1,是x1=1,x2=1时取得。
【例 3】 解非线性方程组
x1 2 x 2 1 0 ( x1 2 ) 2 ( x 2 0 .5 ) 2 1 0
max f 3x1 x 2 x 3 x 1 2 x 2 x 3 11 4 x 1 x 2 2 x 3 3 2 x1 x 3 1 x 0 , i 1, 2 , 3 i
s .t .
解:考虑到linprog函数只解决形如
【例 4】 求解约束非线性规划:
max s .t . e
e
x1
x1
x 2 (3 e
2
2
x1
x2 )
(初值为[1;1])
2
x2
3
首先将问题转化为matlab要求的格式;即求出 fun,A,b,Aeq,Beq,X0,Lb,Ub
解:首先建立一个m文件fun7041.m
function y=fun7041(x) y=-exp(x(1))*x(2)^2*(3-exp(x(1))-x(2)^2);
k 1
k
k
k
由此得到下一个点 4) 检验新得到的点
x
k
P
k
k
k 1
是否满足精度要求的最
优解。
如果是,则结束运算;
否则,令 k k 1, 返回 ( 2 ) 继续迭代
最优化马昌凤第三章作业
最优化方法及其Matlab程序设计习题作业暨实验报告学院:数学与信息科学学院班级:12级信计一班姓名:李明学号:49第三章 最速下降法和牛顿法一、上机问题与求解过程1、用最速下降法求212221216423),(x x x x x x f --+=的极小值。
解:仿照书上编写最速下降法程序如下:function [x,val,k]=grad(fun,gfun,x0)%功能:用最速下降法求解无约束化问题:min f(x)%输入:x0是初始点,fun,gfun分别是目标函数和梯度%输出:x,val分别是近似嘴有点和最优值,k是迭代次数maxk=5000;rho=;sigma=;%一开始选择时选择的rho和sibma选择的数据不够合理,此处我参照书上的数据编写数据k=0;epsilon=1e-5;while(k<maxk)g=feval(gfun,x0);%计算梯度d=-g;%计算搜索方向if(norm(d)<epsilon),break;endm=0;mk=0;while(m<20)%Armijo搜索if(feval(fun,x0+rho^m*d)<feval(fun,x0)+sigma*rho^m*g'*d)mk=m;break;%直接利用Armijo搜索公式,一开始的时候没有记住公式编写出现错误endm=m+1;endx0=x0+rho^mk*d;k=k+1;endx=x0;val=feval(fun,x0)%求得每一个的函数值然后仿照书上建立两个目标函数和梯度的M文件:function f=fun(x)f=3*x(1)^2+2*x(2)^2-4*x(1)-6*x(2);function g=gfun(x)g=[6*x(1)-4,4*x(2)-6]';选取初始点为']0,0[,调用函数程序,得出最小极值点为']6667.0[,极小值为8333500.1,,在界面框中输入的程序如下:.5[x,val,k]=grad('fun','gfun',x0)val =x =k =10从结果可以看出迭代次数为10次,如果选取不同的初值点则迭代次数不一样,但是极小值相同。
matlab程序设计(第二版)课后作业答案
一、实验结果:1、利用函数eye,ones,zeros,rand,randn 函数分别产生首先编写脚本函数如下:a1=eye(3)a2=eye(15,8)b1=ones(3)b2=ones(15,8)c1=zeros(3)c2=zeros(15,8)d1=2*rand(3,3)-1d2=2*randn(3,3)+1r1=2*rand(15,8)-1r2=2*randn(15,8)+12、使用函数diag和reshape函数:编写脚本:a1=[8 -7 2];a2=diag(a1);a3=fliplr(a2);a4=[5 3];a5=diag(a4,-1);a6=fliplr(a5);a=a3+a6a1=reshape(a,1,9)b1=[4 5 7];b2=diag(b1);b3=fliplr(b2);b4=[2 0 8];b5=diag(b4);b=b3+b5b6=reshape(b,1,9)3、直接在工作空间里输入:a=5-round(100*rand(50,2))/104、脚本文件:a=[-pi:2*pi/360:pi];y1=sin(a)y2=cos(a)5.、编写脚本:A=rand(10)b=A>0.6[i,j,v]=find(b)c=sum(v)6、编写脚本:A=randn(10)b=-0.5<A<0.5[i,j,v]=find(b);c=sum(v)7、编写实现表中功能的语句:if and(a<1,b<=0.5)语句1elseif and(a<1,b>0.5)语句2elseif and(a>=1,b<=0.5)语句3elseif and(a>=1,b>0.5)语句4elsedisp('error')end8、编写脚本如下:A=2*rand(3)b=A>1c=A.*b;[i,j,v]=find(c);v9、编写脚本函数:A=101*rand(100,3)b=A>100;c=A.*b;[i,j,d]=find(c);d10、为节约空间,用5*5的矩阵来模拟100*100的矩阵:编写脚本函数如下:A=[0 2 0 3 0;0 0 0 0 0;0 8 0 5 0;0 4 0 5 0;0 4 0 2 0]b=any(A);[i,j,v]=find(1-b);A(:,j)=[];B=A';c=any(B);[i,j,v]=find(1-c);B(:,j)=[];A=B'一、实验结果:1、输入脚本函数:x=0:pi/50:2*pi;k=[1 26 51 76 101];x(k)=[];figure(1)subplot(2,2,1)plot(x,sin(x)),grid onsubplot(2,2,2)plot(x,cos(x)),grid onsubplot(2,2,3)plot(x,tan(x)),grid onsubplot(2,2,4)plot(x,cot(x)),grid on2、分别利用title函数给图形加上标题,用text函数给坐标系中的建立文本对象,可将字符串放在图形的指定位置,用xlabel、ylabel函数添加x、y轴的标记,用legend 函数给图形加上插图说明。
《MATLAB7.x》程序设计语言(第二版)课后题答案
《MATLAB7.x》程序设计语言(第二版)部分课后习题答案(楼顺天,姚若玉,沈俊霞编著)说明:所有答案均是本人在备考过程中亲自整理的,收录了一部分题目的答案。
答案可能存在不足甚至谬误,很多算法也可能不是最优的,仅供参考。
本人尽力整理的一点点心血,希望对大家有所帮助。
第二章8、 a=rand(5,5);[i,j]=find(a>0.5);for u=1:length(i);b(u)=a(i(u),j(u));endb'10、aa=any(a');i=find(aa==0)a(i,:)=[];第四章1、function flag=isprime(m)%m为素数,flag=1%m不为素数,flag=0k=sqrt(m);flag=1;for i=2:k;if rem(m,i)==0;flag=0;breakendendm=input('input an integer\n');flag=isprime(m);if flag==1disp([num2str(m),'是素数'])elsedisp([num2str(m),'不是素数'])end4、function [x1,x2]=jfc(a,b,c)d=b^2-4*a*c;if d>0;x1=(-b-sqrt(d))/(2*a);x2=(-b+sqrt(d))/(2*a);elseif d==0;x1=-b/(2*a);a=input('a=');b=input('b=');c=input('c=');[x1,x2]=jfc(a,b,c);if x1~=x2;disp('原方程存在两个不同的根')disp(['x1=',num2str(x1)])disp(['x2=',num2str(x2)]);elseif x1==x2;disp('原方程存在两个相同的根')disp(['x1=x2=',num2str(x1)])elsedisp('原方程的根不存在')end%MATLAB上机作业,184页习题4,求二次方程的实根function [s1,s2]=solve(a,b,c)d=b^2-4*a*c;if d>0s1=(-b-sqrt(d))/(2*a)s1=(-b-sqrt(d))/(2*a)%disp(['原方程有两个不同的根'num2str(s1)'和'nums2tr(s2)]) elseif d==0s1=(-b-sqrt(d))/(2*a);s1=(-b-sqrt(d))/(2*a);%disp(['原方程有两个相同的根'num2str(s1))elsedisp('原方程无实根')endend5、x=-3:0.01:3;if x>=-3 & x<-1;y=(-x.^2-4*x-3)/2;elseif x>=-1 & x<1;y=-x.^2+1;elsey=(-x.^2+4*x-3)/2;endplot(x,y)6、%MATLAB上机作业,184页习题6,点不同按钮产生不同分布的数s=menu('请选择随机数类型','U[-10,10]','U[-5,5]','U[-1,1]','N(0,1)');switch scase 1,n=(rand(1)-0.5)*20;case 2,n=(rand(1)-0.5)*10;case 3,n=(rand(1)-0.5)*2;endn7、load a.txt[m,n]=size(a);w=zeros(m,1);for i=1:m;w(i)=(2*a(i,1)+3*a(i,2)+2*a(i,3)+4*a(i,4)+2.5*a(i,5)+a(i,6))/14.5;endw8、function k=jj(i)if i<=10k=0.1*i;elseif i<=20k=1+(i-10)*0.05;elseif i<=40k=1.5+(i-20)*0.02;elsek=1.9+(i-40)*0.01;ends=0;a=2;b=1;for i=1:15;s=s+a/b;c=b;b=a;a=a+c;ends9、a=ones(15,1);b=ones(15,1);c=ones(15,1);a(1)=2;c(1)=2;for i=2:15;a(i)=b(i-1)+a(i-1);b(i)=a(i-1);c(i)=a(i)./b(i)endsum(c)第五章3、t=1:1:10;t=t';y=[4.842,4.362,3.754,3.368,3.169,3.083,3.304,3.016,3.012,3.005]';x1=[ones(size(t)),exp(-t)];x2=[ones(size(t)),t.*exp(-t)];p1=x1\y;p2=x2\y;grid on,legend('给定数据','y1拟合','y2拟合')5、(1)function dy=cwf(t,y)dy=[5*y(1)-5*y(2)-6*y(3);3*y(1)-2*y(2)+5*y(3);2*y(1)-y(2)-4*y(3)];x0=[1,-4,5];tspan=[13,16];[t,y]=ode45('cwf',tspan,x0);plot(t,y)(2)function dy=cwf(t,y)dy=[y(1)+2*y(2)-3*y(3)+y(4);3*y(1)+y(3)-2*y(4);y(1)-2*y(2)+5*y(4);2*y(1)+3*y(2)+y(4)];x0=[1,-1,2,1];tspan=[15,16];[t,y]=ode45('cwf',tspan,x0);plot(t,y)7、t=1:10;tt=1:0.01:10;y=[15,39.5,66,85.5,89,67.5,12,-86.4,-236.9,-448.4];p1=polyfit(t,y,2);y1=polyval(p1,tt);p2=polyfit(t,y,3);y2=polyval(p2,tt);plot(t,y,'b*',tt,y1,'r-',tt,y2,'c-');legend('样本点','二次拟合','三次拟合'),grid on10&11、pa=[2 3 -4];pb=[4 -2 5];pc=[3 -2 5 6];d1=conv(pa,pb)[q2,r2]=deconv(pc,pa)[q3,r3]=deconv(pc,pb)dy1=polyder(pa,pb)[q2,r2]=polyder(pc,pa)[q3,r3]=polyder(pc,pb)12、x=-5:1:5;xx=-5:0.01:5;y=10.*exp(-abs(x));y1=interp1(x,y,xx,'nearest');y2=interp1(x,y,xx,'linear');y3=interp1(x,y,xx,'spline');y4=interp1(x,y,xx,'cubic');plot(x,y,'*',xx,y1,'r-',xx,y2,'c-',xx,y3,'k-',xx,y4,'g-')grid on,legend('样本点','最临近内插','线性内插','三次样条内插','三次曲线内插')13、a=rand(1,50);amax=max(a)vara=(std(a))^2b=randn(1,50);bmax=max(a)bmin=min(a)ub=mean(a)varb=(std(a))^214、t=[0,0.2,0.4,0.6,0.8,1,2,5]';tt=0:0.01:5;y=[1,1.51,1.88,2.13,2.29,2.4,2.6,-4]';p1=polyfit(t,y,3);y1=polyval(p1,tt);x=[ones(size(t)),exp(t)];p2=x\y;y2=p2(1)+p2(2)*exp(tt);plot(t,y,'k*',tt,y1,'r-',tt,y2,'b-')legend('样本点','三次多项式拟合','指数拟合'),grid on 17、function y=jifen1(x)y=exp(-2*x);function y=jifen2(x)y=exp(2*x);function y=jifen3(x)y=x.^2-3*x+0.5;z1=quadl('jifen1',0,2)z2=quadl('jifen2',0,2)z3=quadl('jifen3',-1,1)19、function z=jifen(x,y)z=exp(-x*y)-2*x*y;q=dblquad('jifen',0,1,-1,1)20、function dy=cwf(t,y)dy=[0.5-y(1);y(1)-4*y(2)];x0=[1,-0.5];tspan=[0,25];[t,y]=ode45('cwf',tspan,x0);plot(y(1,:),y(2,:));grid on亲爱的朋友,上文已完,为感谢你的阅读,特加送另一篇范文,如果下文你不需要,可以下载后编辑删除,谢谢!道路施工方案1、工程概况2、编制说明及编制依据3、主要施工方法及技术措施3.1施工程序3.2施工准备3.3定位放线3. 4土方开挖3.5卵石路基施工3.6天然砾基层施工3. 7高强聚酯土工格楞3.8水泥稳定砂砾基层施工3.9路缘石施工3. 10玻璃纤维土工格栅施工3.11沥青面层施工3. 12降水施工4、质量控制措施5、雨季施工安排6、安全技术措施1.工程概况本项目建设的厂址位于新疆石河子市。
大连理工大学庞丽萍最优化方法MATLAB程序
班级:优化1班授课老师:庞丽萍姓名:学号:第二章12.(1)用修正单纯形法求解下列LP问题:>>clear>>A=[121100;123010;215001];[m,n]=size(A);b=[10;15;20];r=[-1-2-31];c=[-1-2-31];bs=[3:3];nbs=[1:4];a1=A(:,3);T=A(:,bs);a2=inv(T)*a1;b=inv(T)*b;A=[eye(m),a2];B=eye(m);xb=B\b;cb=c(bs);cn=c(nbs);con=1;M=zeros(1);while conM=M+1;t=cb/B;r=c-t*A;if all(r>=0)x(bs)=xb;x(nbs)=0;fx=cb*xb;disp(['当前解是最优解,minz=',num2str(fx)])disp('对应的最优解为,x=')disp(x)breakendrnbs=r(nbs);kk=find(rnbs==min(rnbs));k=kk(1);Anbs=A(:,nbs);yik=B\Anbs(:,k);xb=B\b;%yi0if all(yik<=0)disp('此LP问题无有限的最优解,计算结束',x)disp(xb)breakelsei=find(yik>0);w=abs(xb(i,1)./yik(i,1));l=find(w==min(w));rr=min(l);yrrk=yik(rr,1);Abs=A(:,bs);D=Anbs(:,k);Anbs(:,k)=Abs(:,rr);Abs(:,rr)=D;F=bs(rr);bs(rr)=nbs(k);nbs(k)=F;AA=[Anbs,Abs];EE=eye(m);EE(:,rr)=-yik./yrrk;Errk=EE;Errk(rr,rr)=1/yrrk;BB=Errk/B;B=inv(BB);cb=c(:,bs);xb=Errk*xb;x(bs)=xb;x(nbs)=0;fx=cb*xb;endif M>=1000disp('此问题无有限最优解')breakendend%结果当前解是最优解,minz=-15对应的最优解为,x=2.5000 2.5000 2.50000第三章30题DFP算法求函数极小点的计算程序function[x,val,k]=dfp(fun,gfun,x0)%功能:用DFP算法求解无约束问题:minf(x)%输入:x0是初始点,fun,gfun分别是目标函数及其梯度%输出:x,val分别是近似最优点和最优值,k是迭代次数.maxk=1e5;%给出最大迭代次数rho=0.55;sigma=0.4;epsilon=1e-5;k=0;n=length(x0);Hk=inv(feval('Hess',x0));%Hk=eye(n);while(k<maxk)gk=feval(gfun,x0);%计算梯度if(norm(gk)<epsilon),break;end%检验终止准则dk=-Hk*gk;%解方程组,计算搜索方向m=0;mk=0;while(m<20)%用Armijo搜索求步长if(feval(fun,x0+rho^m*dk)<feval(fun,x0)+sigma*rho^m*gk’*dk)mk=m;break;endm=m+1;end%DFP校正x=x0+rho^mk*dk;sk=x-x0;yk=feval(gfun,x)-gk;if(sk'*yk>0)Hk=Hk-(Hk*yk*yk'*Hk)/(yk'*Hk*yk)+(sk*sk')/(sk'*yk);endk=k+1;x0=x;endval=feval(fun,x0);%习题26的程序调用方式及结果:function y=fun(x)%UNTITLED Summary of this function goes here%Detailed explanation goes herey=(x(1)-1)^2+5*(x2-x(1)^2)^2endfunction y=gfun(x)%UNTITLED Summary of this function goes here%Detailed explanation goes herey=[diff(y,x1)diff(y,x2)]endx0=[20]’;[x,val,k]=dfp(fun,gfun,x0)%结果x=1.000001.00000val=k=6%习题27的程序调用方式及结果:function y=fun(x)%UNTITLED Summary of this function goes here %Detailed explanation goes herey=x1+2*x(2)^2+exp(x(1)^2+x(2)^2)endfunction y=gfun(x)%UNTITLED Summary of this function goes here %Detailed explanation goes herey=[diff(y,x1)diff(y,x2)]endx0=[10]’;[x,val,k]=dfp(fun,gfun,x0)%结果x=-0.419360val=0.77291k=536题编写Hooke-Jeeves方法求函数极小点的计算程序。
matlab最优化问题的经典例题
matlab最优化问题的经典例题MATLAB最优化问题的经典例题之一是线性规划问题。
线性规划是一种数学优化方法,用于寻找一组给定线性约束条件下使得目标函数达到最大或最小值的变量值。
假设有以下线性规划问题:最大化目标函数:Z = c1*x1 + c2*x2 + ... + cn*xn在满足约束条件:A*x <= bx >= 0下,求解变量x1, x2, ..., xn的最优解。
使用MATLAB求解该线性规划问题的代码如下:```% 定义目标函数系数向量cc = [c1; c2; ...; cn];% 定义不等式约束条件系数矩阵A和右侧常数向量bA = [A11, A12, ..., A1n;A21, A22, ..., A2n;...,Am1, Am2, ..., Amn];b = [b1; b2; ...; bm];% 定义变量的下界和上界lb = zeros(n, 1); % 下界为0,即 x >= 0ub = Inf(n, 1); % 上界为无穷大,即无上界% 求解线性规划问题[x, fval] = linprog(-c, A, b, [], [], lb, ub);% 输出最优解和最优值disp('最优解:')disp(x)disp('最优值:')disp(-fval)```在上述代码中,我们将目标函数系数向量c、不等式约束条件系数矩阵A和右侧常数向量b、变量的下界和上界lb、ub传递给linprog函数进行求解。
linprog函数返回最优解x和最优值-fval(由于linprog默认求解最小化问题,我们使用-c作为目标函数系数向量,将最大化问题转化为最小化问题)。
通过以上代码,我们可以求解线性规划问题的最优解和最优值,并使用MATLAB进行验证和分析。
这个例题可以帮助我们理解和掌握MATLAB中最优化问题的求解方法。
【设计】最优化方法及其Matlab程序设计
【关键字】设计最优化方法及其Matlab程序设计1.最优化方法概述在生活和工作中,人们对于同一个问题往往会提出多个解决方案,并通过各方面的论证,从中提取最佳方案。
最优化方法就是专门研究如何从多个方案中科学合理地提取出最佳方案的科学。
最优化是每个人,每个单位所希望实现的事情。
对于产品设计者来说,是考虑如何用最少的材料,最大的性能价格比,设计出满足市场需要的产品。
对于企业的管理者来说,则是如何合理、充分使用现有的设备,减少库存,降低能耗,降低成本,以实现企业的最大利润。
由于优化问题无所不在,目前最优化方法的应用和研究已经深入到了生产和科研的各个领域,如土木工程、机械工程、化学工程、运输调度、生产控制、经济规划、经济管理等,并取得了显著的经济效益和社会效益。
用最优化方法解决最优化问题的技术称为最优化技术,它包含两个方面的内容:1)建立数学模型。
即用数学语言来描述最优化问题。
模型中的数学关系式反映了最优化问题所要达到的目标和各种约束条件。
2)数学求解。
数学模型建好以后,选择合理的最优化算法进行求解。
最优化方法的发展很快,现在已经包含有多个分支,如线性规划、整数规划、非线性规划、动态规划、多目标规划等。
2.最优化方法(算法)浅析最优化方法求解很大程度上依赖于最优化算法的选择。
这里,对最优化算法做一个简单的分类,并对一些比较常用的典型算法进行解析,旨在加深对一些最优化算法的理解。
最优化算法的分类方法很多,根据不同的分类依据可以得到不同的结果,这里根据优化算法对计算机技术的依赖程度,可以将最优化算法进行一个系统分类:线性规划与整数规划;非线性规划;智能优化方法;变分法与动态规划。
2.1 线性规划与整数规划线性规划在工业、农业、商业、交通运输、军事和科研的各个研究领域有广泛应用。
例如,在资源有限的情况下,如何合理使用人力、物力和资金等资源,以获取最大效益;如何组织生产、合理安排工艺流程或调制产品成分等,使所消耗的资源(人力、设备台时、资金、原始材料等)为最少等。
