24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 1012  |  回复: 0

bingbing5380

铁虫 (正式写手)

[求助] 《精通matlab最优化计算》(龚纯著)中的BFGS算法为何一直busy?(代码见贴正文)

《精通matlab最优化计算》(龚纯著)中的BFGS算法为何一直busy?(代码见贴正文)
但如果去掉 if k+1==n 这个条件,可以出结果,但是与书上例子的结果有出入。
请教大牛,指点迷津一下?非常感谢。

附--拟牛顿算法BFGS代码:
function [x,minf] = minBFGS(f,x0,var,eps)
format long;
if nargin == 3
    eps = 1.0e-6;
end
x0 = transpose(x0);
n = length(var);
syms l;
H = eye(n,n);
gradf = jacobian(f,var);
v0  = Funval(gradf,var,x0);
p = -H*transpose(v0);
k = 0;

while 1
    v  = Funval(gradf,var,x0);
    tol = norm(v);
    if tol<=eps
        x = x0;
        break;
    end   
    y = x0 + l*p;
    yf = Funval(f,var,y);
    [a,b] = minJT(yf,0,0.1);
    xm = minHJ(yf,a,b);
    x1 = x0 + xm*p;
    vk = Funval(gradf,var,x1);
    tol = norm(vk);
    if tol<=eps
        x = x1;
        break;
    end
    if k+1==n
        x0 = x1;
        continue;
    else
        dx = x1 - x0;
        dgf = vk - v;
        dgf = transpose(dgf);
        dxT = transpose(dx);
        dgfT = transpose(dgf);
        mdx = dx*dxT;
        mdgf = dgf*dgfT;
        H = H + (1+dgfT*(H*dgf)/(dxT*dgf))*mdx/(dxT*dgf)- ...
            (dx*dgfT*H + H*dgf*dxT)/(dxT*dgf);
        p = -H*transpose(vk);
        k = k+1;
        x0 = x1;
    end
end
minf = Funval(f,var,x);
format short;

function [minx,maxx] = minJT(f,x0,h0,eps)
format long;
if nargin == 3
    eps = 1.0e-6;
end

x1 = x0;
k = 0;
h = h0;
while 1
    x4 = x1 + h;
    k = k+1;
    f4 = subs(f, findsym(f),x4);
    f1 = subs(f, findsym(f),x1);
    if f4 < f1
        x2 = x1;
        x1 = x4;
        f2 = f1;
        f1 = f4;
        h = 2*h;
    else
        if k==1
            h = -h;
            x2 = x4;
            f2 = f4;
        else
            x3 = x2;
            x2 = x1;
            x1 = x4;
            break;
        end
    end
end

minx = min(x1,x3);
maxx = x1+x3 - minx;
format short;

function [x,minf] = minHJ(f,a,b,eps)
format long;
if nargin == 3
    eps = 1.0e-6;
end

l = a + 0.382*(b-a);
u = a + 0.618*(b-a);
k=1;
tol = b-a;

while tol>eps && k<100000
    fl = subs(f , findsym(f), l);
    fu = subs(f , findsym(f), u);
    if fl > fu
        a = l;
        l = u;
        u = a + 0.618*(b - a);
    else
        b = u;
        u = l;
        l = a + 0.382*(b-a);
    end
    k = k+1;
    tol = abs(b - a);
end
if k == 100000
    disp('找不到最小值!');
    x = NaN;
    minf = NaN;
    return;
end
x = (a+b)/2;
minf = subs(f, findsym(f),x);
format short;
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

找到一些相关的精华帖子,希望有用哦~

科研从小木虫开始,人人为我,我为人人
相关版块跳转 我要订阅楼主 bingbing5380 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 0703调剂,一志愿天津大学319分 +11 haaaabcd 2026-04-05 11/550 2026-04-06 09:36 by jp9609
[考研] 294求调剂 +4 Grey_Ey 2026-04-01 5/250 2026-04-05 23:05 by Grey_Ey
[考研] 086000生物与医药求调剂 +3 老天眷顾之人 2026-03-31 3/150 2026-04-05 22:24 by syh9288
[考研] 348求调剂 +3 车厘子zzz 2026-04-05 3/150 2026-04-05 20:30 by 啵啵啵0119
[考研] 材料专硕(0856) 339分求调剂 +10 哈哈哈鹅哈哈哈 2026-04-04 10/500 2026-04-05 18:51 by 蓝云思雨
[考研] 085602调剂 初试总分335 +12 19123253302 2026-04-04 12/600 2026-04-05 08:08 by 544594351
[考研] 294求调剂 +6 Grey_Ey 2026-04-02 9/450 2026-04-04 22:07 by hemengdong
[考研] 11408 一志愿西电,277分求调剂 +4 zhouzhen654 2026-04-03 4/200 2026-04-04 18:10 by 猪会飞
[考研] 0710生物学336分求调剂 +6 kiyy 2026-04-01 8/400 2026-04-04 10:10 by kiyy
[考研] 兽医调剂 +3 wh119216 2026-04-02 3/150 2026-04-03 19:34 by zrongyan
[考研] 考研调剂 +3 Draa 2026-04-03 3/150 2026-04-03 17:37 by hgwz7468
[考研] 293求调剂 +5 末未mm 2026-04-02 6/300 2026-04-03 15:20 by 王保杰33
[考研] 085801 总分275 本科新能源 求调剂 +19 bradoner 2026-04-01 23/1150 2026-04-03 10:07 by linyelide
[考研] 重庆大学材料与化工085600,初试370+,求求调剂建议 +8 shzhou_ 2026-04-01 9/450 2026-04-03 09:31 by 蓝云思雨
[考研] 求调剂!生物与医药专硕 +4 逆转陆先生 2026-04-01 5/250 2026-04-03 08:33 by Jaylen.
[考研] 一志愿北京科技材料科学与工程288分,求调剂 +14 是辰啊 2026-04-02 14/700 2026-04-02 21:10 by dongzh2009
[考研] 0703一志愿南师大334求调剂 +4 seven7yu 2026-03-30 4/200 2026-04-01 16:10 by oooqiao
[考研] 一志愿西交大080500材料学硕349 +6 jqx1258 2026-03-31 7/350 2026-03-31 21:08 by yuq
[考研] 考研调剂求助 +7 13287130938 2026-03-31 7/350 2026-03-31 16:39 by 690616278
[考研] 一志愿食品科学与工程083200求调剂 +4 XQTJZ 2026-03-30 4/200 2026-03-31 04:10 by fmesaito
信息提示
请填处理意见