两点最速下降法matlab程序,最速下降法--MATLAB程序

20180922154258944895.jpg

20180922154259342371.jpg

function x = fxsteep(f,e,a,b)

x1 = a;

x2 = b;

Q = fxhesson(f,x1,x2);

x0 = [x1,x2]‘;

temp = [x0];

fx1 = diff(f,‘x1‘);

fx2 = diff(f,‘x2‘);

g = [fx1,fx2]‘;

g1 = subs(g);

d = - g1;

while (abs(norm(g1))> e)

lamda = (-d)‘*d/((-d)‘*Q*d);

x0 = x0 - lamda *g1;

temp = [temp;x0];

a = [1,0] * x0;

b = [0,1] * x0;

x1 = a;

x2 = b;

g1 = subs(g);

d = - g1;

end

x = temp;

end

function Q = fxhesson(f,a,b)

x1 = a;

x2 = b;

fx1 = diff(f,1,‘x1‘);

fx2 = diff(f,1,‘x2‘);

fx1x1 = diff(fx1,1,‘x1‘);

fx1x2 = diff(fx1,1,‘x2‘);

fx2x2 = diff(fx2,1,‘x2‘);

fx2x1 = diff(fx2,1,‘x1‘);

fx1x1 = subs(fx1x1);

fx1x2 = subs(fx1x2);

fx2x1 = subs(fx2x1);

fx2x2 = subs(fx2x2);

Q = [fx1x1,fx1x2;fx2x1,fx2x2];

end

syms x1 x2;

X=[x1,x2];

fx=X(1)^2+4*X(2)^2;

z=fxsteep(fx,0.0001,1,1)

ans

1

1

48/65

-3/65

36/325

36/325

1728/21125

-108/21125

1296/105625

1296/105625

62208/6865625

-3888/6865625

46656/34328125

46656/34328125

2239488/2231328125

-139968/2231328125

1679616/11156640625

1679616/11156640625

80621568/725181640625

-5038848/725181640625

60466176/3625908203125

60466176/3625908203125

2902376448/235684033203125

-181398528/235684033203125

原文:http://www.cnblogs.com/Kermit-Li/p/4114372.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值