最速下降法

更新时间:2023-08-17 10:20:01 阅读量: 资格考试认证 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第二题matlab编程(任选一个)

1) 翻牌游戏把13张牌反过来(背面朝上)按一定的顺序排列,先把你已经排好的牌第一张取出放在这叠牌的最底层,拿出第二张放在桌面上,然后将第三张取出又放在最底层,取出第四张放在桌子上……直到游戏结束,你依次取出放在桌子上的牌刚好为K,Q,J,10,9,8,7,6,5,4,3,2,A。问你一开始时这13张牌的顺序是怎样的?请你编程解决这个问题。

解:程序如下:

function f=card() a=1:13; i=1;

for j=1:13

n=numel(a); %目前的片数;numle为元数的个数。

a(n+1)=a(1); %在多少张里面取第一张。

a(1)=[];%将上面取出的第一张牌所在空格剪掉。 b(i)=a(1); %翻出来时桌面上亮出来的牌。 i=i+1;

a(1)=[];%随着i自增,取出现的空格为空。(即删除)。 end

c={'K','Q','J','10','9','8','7','6','5','4','3','2','A'}; %因为10占两位,故用单元d=cell(1,13); %由BC对应的数,

%将C中字符型的牌放入由B决定对应的D中。 for k=1:13 r=b(k); d{r}=c{k}; end f=d;

a=card()

运行结果为:

a =

'7' 'K' '2' 'Q' '6' 'J' '3' '10' '5' '9' 'A' '8' '4'

2) 学校要举行篮球循环赛,共有十个队参加比赛,请你安排一下比赛场次,使每队每次打完比赛后至少能隔一场不比赛,以便得到休息保持体力,请你用

MATLAB解决这个问题,并给出至少一个比赛日程表。(每队休息的场次越多越好,但每队都应得到的休息大体相同,不能出现某队刚打完比赛,马上和另一个已经休息了若干场的球队比赛,这是不公平的)。

3)利用最速下降法求如下函数的极值

22

f(x1,x2) (x1 x2 7)2 (x1 x2 11)2

其中,初始点为x0 1,1 T

解:

首先:得明确最速下降法的算法与思想。

最速下降法也叫梯度法,它是以梯度的负方向作为搜索方向。 即: dk f(xk)

设f(x)在xk附近连续可微,dk为搜索方向向量,gk f(x)。由泰勒展开式得:

T

f(xk dk) f(xk) gkdk o( ), 0

那么目标函数f(x)在xk处沿方向dk下降的变化率为

lim

0

f(xk dk) f(xk)

T

gkdk o( ) lim

0T

gkdk gkdkcosk,

其中 k是gk与dk的夹角。显然,对于不同的方向dk,函数变化率取决于它与

gk夹角的余弦值。要使变化率最小,只有cosk 1,即k 时才能达到,亦即

dk应取负梯度方向(即dk f(xk))。 最速下降法的算法:

步骤 1:选取初始点x0 Rn,允许误差0 1.令 k=0.

步骤 2:计算gk f(xk).若gk ,停止计算,输出xk作为近似最优解。 步骤 3:取方向dk gk。

步骤 4:由线搜索技术确定步长因子 k。 步骤 5:令xk 1 xk kdk,k k 1,转到步骤 1 程序如下:

(1)先写一个主程序 m 文件 (名为 grad.m):

function [x,val,k]=grad(fun,gfun,x0) % 最速下降法求解无约束问题:min f(x1,x2)

% 输入:x0是初始点,fun是目标函数,gfun是梯度 % 输出:x是近似最优点,val是最优值,k是迭代次数 maxk=2000; % 最大迭代次数 rho=0.5; sigma=0.4; k=0;

epsilon=1e-100; while(k<maxk)

g=feval(gfun,x0); % 计算梯度 d=-g; % 计算搜索方向 if(norm(d)<epsilon) break; end

m=0;mk=0; while(m<20)

if(feval(fun,x0+rho^m*d)<feval(fun,x0)+sigma*rho^m*g'*d) mk=m; break; end m=m+1; end

x0=x0+rho^mk*d; k=k+1; end x=x0;

val=feval(fun,x0);

(2)建立目标函数和求梯度的两个函数 (名字分别为 fun.m 和 gfun.m ):

% 目标函数 m 文件: function f=fun(x);

f=(x(1)^2+x(2)-7)^2+(x(1)+x(2)^2-11)^2;

% 梯度函数 m 文件: function g=gfun(x);

g=[2*(x(1)^2+x(2)-7)*2*x(1)+2*(x(1)+x(2)^2-11),... 2*(x(1)^2+x(2)-7)+2*(x(1)+x(2)^2-11)*2*x(2)]';

在MATLAB命令窗口输入: x0=[1 1]';

[x,val,k]=grad('fun','gfun',x0);

g = -38 -46 f =

7440890 f = 106 f =

516114 f = 106 f =

3.7656e+004 f = 106 f =

2.7018e+003 f = 106 f =

122.9419 f = 106 f =

8.2928 f = 106 g =

-3.7939 -27.5479 f =

8.0287e+005 f =

8.2928 f =

6.6153e+004 f =

8.2928 f =

6.4017e+003 f =

8.2928 f =

724.5325 f =

8.2928 f =

85.3361 f =

8.2928 f =

7.3880 f =

8.2928 f =

1.1179 f =

8.2928 g =

7.1755 -4.2271 f =

1.7788e+003 f =

1.1179 f =

155.6531 f =

1.1179 f =

31.8208 f =

1.1179 f =

6.7267 f =

1.1179 f =

0.7722 f =

1.1179 f =

0.0087 f =

1.1179 g =

0.7795 0.4543 f =

19.1951 f =

0.0087 f =

5.2534 f =

0.0087 f =

1.3044 f =

0.0087 f =

0.2929 f =

0.0087 f =

0.0558 f =

0.0087 f =

0.0080 f =

0.0087

f =

0.0022 f =

0.0087 g =

0.2135 -0.3139 f =

3.2148 f =

0.0022 f =

0.7323 f =

0.0022 f =

0.1622 f =

0.0022 f =

0.0327 f =

0.0022 f =

0.0053 f =

0.0022 f =

7.1342e-004 f =

0.0022 f =

7.1178e-004 f =

0.0022 g =

0.1969 -0.0192 f =

0.5068 f =

7.1178e-004 f =

0.1246 f =

7.1178e-004 f =

0.0277 f =

7.1178e-004 f =

0.0051 f =

7.1178e-004 f =

6.0803e-004 f =

7.1178e-004 f =

7.5948e-005 f =

7.1178e-004 g =

-0.0014 -0.0980 f =

0.3595 f =

7.5948e-005 f =

0.0861 f =

7.5948e-005 f =

0.0202 f =

7.5948e-005 f =

0.0045 f =

7.5948e-005 f =

8.7536e-004 f =

7.5948e-005 f =

1.2537e-004 f =

7.5948e-005 f =

1.3217e-005 f =

7.5948e-005 g =

0.0300 0.0157 f =

0.0323 f =

1.3217e-005 f =

0.0078 f =

1.3217e-005 f =

0.0018 f =

1.3217e-005 f =

3.9724e-004 f =

1.3217e-005 f =

7.3572e-005

f =

1.3217e-005 f =

1.0453e-005 f =

1.3217e-005 f =

3.5963e-006 f =

1.3217e-005 g =

0.0091 -0.0118 f =

0.0042 f =

3.5963e-006 f =

9.9898e-004 f =

3.5963e-006 f =

2.2438e-004 f =

3.5963e-006 f =

4.4841e-005 f =

3.5963e-006 f =

6.9411e-006 f =

3.5963e-006 f =

9.5052e-007 f =

3.5963e-006 f =

1.1940e-006 f =

3.5963e-006 g =

0.0080 -0.0010 f =

8.8926e-004 f =

1.1940e-006 f =

2.0757e-004 f =

1.1940e-006 f =

4.4787e-005 f =

1.1940e-006 f =

8.0682e-006 f =

1.1940e-006 f =

8.9770e-007 f =

1.1940e-006 f =

1.1215e-007 f =

1.1940e-006 g =

0.0001 -0.0037 f =

4.7217e-004 f =

1.1215e-007 f =

1.1471e-004 f =

1.1215e-007 f =

2.7081e-005 f =

1.1215e-007 f =

6.0173e-006 f =

1.1215e-007 f =

1.1704e-006 f =

1.1215e-007 f =

1.6773e-007 f =

1.1215e-007 f =

2.1559e-008 f =

1.1215e-007 g =

0.0012 0.0005 f =

4.6047e-005 f =

2.1559e-008 f =

1.1098e-005 f =

2.1559e-008 f =

2.5747e-006 f =

2.1559e-008

f =

5.5179e-007 f =

2.1559e-008 f =

1.0008e-007 f =

2.1559e-008 f =

1.4165e-008 f =

2.1559e-008 f =

6.1991e-009 f =

2.1559e-008 g =

1.0e-003 * 0.3986 -0.4589 f =

6.4724e-006 f =

6.1991e-009 f =

1.5303e-006 f =

6.1991e-009 f =

3.4103e-007 f =

6.1991e-009 f =

6.6812e-008 f =

6.1991e-009 f =

9.8056e-009 f =

6.1991e-009 f =

1.3274e-009 f =

6.1991e-009 g =

1.0e-003 * 0.2619 0.3532 f =

7.4397e-006 f =

1.3274e-009 f =

1.8127e-006 f =

1.3274e-009 f =

4.3001e-007 f =

1.3274e-009 f =

9.6414e-008 f =

1.3274e-009 f =

1.9057e-008 f =

1.3274e-009 f =

2.7386e-009 f =

1.3274e-009 f =

1.6960e-010 f =

1.3274e-009 f =

2.8265e-010 f =

1.3274e-009 g =

1.0e-003 * 0.1371 0.1081 f =

1.0183e-006 f =

2.8265e-010 f =

2.4716e-007 f =

2.8265e-010 f =

5.8192e-008 f =

2.8265e-010 f =

1.2854e-008 f =

2.8265e-010 f =

2.4727e-009 f =

2.8265e-010 f =

3.5370e-010 f =

2.8265e-010 f =

6.2188e-011 f =

2.8265e-010 g =

1.0e-004 *

0.3051 -0.5975 f =

1.0701e-007 f =

6.2188e-011 f =

2.5675e-008 f =

6.2188e-011 f =

5.9027e-009 f =

6.2188e-011 f =

1.2410e-009 f =

6.2188e-011 f =

2.1624e-010 f =

6.2188e-011 f =

3.0378e-011 f =

6.2188e-011 f =

1.9074e-011 f =

6.2188e-011 g =

1.0e-004 * 0.3297 -0.0020 f =

1.7285e-008 f =

1.9074e-011 f =

4.0637e-009 f =

1.9074e-011 f =

8.9433e-010 f =

1.9074e-011 f =

1.6993e-010 f =

1.9074e-011 f =

2.2811e-011 f =

1.9074e-011 f =

3.0193e-012 f =

1.9074e-011 g =

1.0e-004 * -0.0194 -0.2035 f =

1.5755e-008 f =

3.0193e-012 f =

3.8366e-009 f =

3.0193e-012 f =

9.0919e-010 f =

3.0193e-012 f =

2.0345e-010 f =

3.0193e-012 f =

4.0073e-011 f =

3.0193e-012 f =

5.7553e-012 f =

3.0193e-012 f =

4.3960e-013 f =

3.0193e-012 f =

7.4250e-013 f =

3.0193e-012 g =

1.0e-005 * 0.1757 -0.8281 f =

2.2280e-009 f =

7.4250e-013 f =

5.3964e-010 f =

7.4250e-013 f =

1.2651e-010 f =

7.4250e-013 f =

2.7705e-011 f =

7.4250e-013

f =

5.2435e-012 f =

7.4250e-013 f =

7.4793e-013 f =

7.4250e-013 f =

1.8395e-013 f =

7.4250e-013 g =

1.0e-005 * 0.3412 0.0745 f =

2.5720e-010 f =

1.8395e-013 f =

6.1390e-011 f =

1.8395e-013 f =

1.3961e-011 f =

1.8395e-013 f =

2.8662e-012 f =

1.8395e-013 f =

4.7345e-013 f =

1.8395e-013 f =

6.5803e-014 f =

1.8395e-013 f =

5.9154e-014 f =

1.8395e-013 g =

1.0e-005 * 0.1366 -0.1183 f =

4.7956e-011 f =

5.9154e-014 f =

1.1217e-011 f =

5.9154e-014 f =

2.4404e-012 f =

5.9154e-014 f =

4.5039e-013 f =

5.9154e-014 f =

5.4919e-014 f =

5.9154e-014 f =

7.0731e-015 f =

5.9154e-014 g =

1.0e-006 * 0.6537 0.6980 f =

3.3509e-011 f =

7.0731e-015 f =

8.1540e-012 f =

7.0731e-015 f =

1.9295e-012 f =

7.0731e-015 f =

4.3052e-013 f =

7.0731e-015 f =

8.4357e-014 f =

7.0731e-015 f =

1.2105e-014 f =

7.0731e-015 f =

1.1864e-015 f =

7.0731e-015 g =

1.0e-006 * 0.0883 -0.3133 f =

3.1071e-012 f =

1.1864e-015 f =

7.5118e-013

f =

1.1864e-015 f =

1.7544e-013 f =

1.1864e-015 f =

3.8126e-014 f =

1.1864e-015 f =

7.1098e-015 f =

1.1864e-015 f =

1.0115e-015 f =

1.1864e-015 f =

3.1481e-016 f =

1.1864e-015 g =

1.0e-006 * 0.1393 0.0214 f =

3.8675e-013 f =

3.1481e-016 f =

9.1960e-014 f =

3.1481e-016 f =

2.0744e-014 f =

3.1481e-016 f =

4.1808e-015 f =

3.1481e-016 f =

6.6067e-016 f =

3.1481e-016 f =

9.0964e-017 f =

3.1481e-016 f =

1.0369e-016 f =

3.1481e-016 g =

1.0e-007 * 0.5862

-0.4687 f =

7.9213e-014 f =

1.0369e-016 f =

1.8473e-014 f =

1.0369e-016 f =

3.9919e-015 f =

1.0369e-016 f =

7.2372e-016 f =

1.0369e-016 f =

8.2684e-017 f =

1.0369e-016 f =

1.0433e-017 f =

1.0369e-016 g =

1.0e-007 * 0.2563 0.2488 f =

4.5562e-014 f =

1.0433e-017 f =

1.1079e-014 f =

1.0433e-017 f =

2.6182e-015 f =

1.0433e-017 f =

5.8261e-016 f =

1.0433e-017 f =

1.1360e-016 f =

1.0433e-017 f =

1.6288e-017 f =

1.0433e-017 f =

1.9279e-018 f =

1.0433e-017

g =

1.0e-007 * 0.0424 -0.1190 f =

4.3763e-015 f =

1.9279e-018 f =

1.0556e-015 f =

1.9279e-018 f =

2.4542e-016 f =

1.9279e-018 f =

5.2831e-017 f =

1.9279e-018 f =

9.6692e-018 f =

1.9279e-018 f =

1.3709e-018 f =

1.9279e-018 f =

5.4252e-019 f =

1.9279e-018 g =

1.0e-008 * 0.5705 0.0534 f =

5.9248e-016 f =

5.4252e-019 f =

1.4032e-016 f =

5.4252e-019 f =

3.1383e-017 f =

5.4252e-019 f =

6.2009e-018 f =

5.4252e-019 f =

9.3123e-019 f =

5.4252e-019 f =

1.2675e-019 f =

5.4252e-019 g =

1.0e-008 * -0.0691 -0.4267 f =

7.2209e-016 f =

1.2675e-019 f =

1.7595e-016 f =

1.2675e-019 f =

4.1747e-017 f =

1.2675e-019 f =

9.3640e-018 f =

1.2675e-019 f =

1.8522e-018 f =

1.2675e-019 f =

2.6621e-019 f =

1.2675e-019 f =

1.5661e-020 f =

1.2675e-019 f =

2.6002e-020 f =

1.2675e-019 g =

1.0e-008 * 0.0160 -0.1692 f =

9.8116e-017 f =

2.6002e-020 f =

2.3826e-017 f =

2.6002e-020 f =

5.6150e-018 f =

2.6002e-020 f =

1.2427e-018

f =

2.6002e-020 f =

2.3990e-019 f =

2.6002e-020 f =

3.4337e-020 f =

2.6002e-020 f =

5.5166e-021 f =

2.6002e-020 g =

1.0e-009 * 0.6036 0.2146 f =

1.0082e-017 f =

5.5166e-021 f =

2.4221e-018 f =

5.5166e-021 f =

5.5837e-019 f =

5.5166e-021 f =

1.1808e-019 f =

5.5166e-021 f =

2.0834e-020 f =

5.5166e-021 f =

2.9338e-021 f =

5.5166e-021 f =

1.6648e-021 f =

5.5166e-021 g =

1.0e-009 * 0.2159 -0.2222 f =

1.5649e-018 f =

1.6648e-021 f =

3.6848e-019 f =

1.6648e-021 f =

8.1373e-020 f =

1.6648e-021 f =

1.5594e-020 f =

1.6648e-021 f =

2.1482e-021 f =

1.6648e-021 f =

2.8628e-022 f =

1.6648e-021 g =

1.0e-009 * 0.1253 0.1566 f =

1.5277e-018 f =

2.8628e-022 f =

3.7208e-019 f =

2.8628e-022 f =

8.8203e-020 f =

2.8628e-022 f =

1.9750e-020 f =

2.8628e-022 f =

3.8945e-021 f =

2.8628e-022 f =

5.5940e-022 f =

2.8628e-022 f =

4.0092e-023 f =

2.8628e-022 f =

6.7520e-023 f =

2.8628e-022 g =

1.0e-010 * 0.6758 0.4649

本文来源:https://www.bwwdw.com/article/xoaj.html

Top