ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

MATLAB实现0.618黄金分割法,牛顿法,最速下降法,共轭梯度法(运筹学)

2022-01-02 09:58:34  阅读:357  来源: 互联网

标签:p0 subs 梯度 0.618 MATLAB var x0 x1 最速


0.618黄金分割法

a=0;b=4;
f=@(x) x^2-4*x+5;%匿名函数
e=0.001;n=0;
while((b-a)>=e)
    t1=a+0.382*(b-a);
    t2=a+0.618*(b-a);
    n=n+1;
    if(f(t1)<f(t2))
        b=t2;
    else
        a=t1;
    end
end
X=(a+b)/2;
fprintf('最优解:X=%f\n',X);
fprintf('此时最小f(x)=%f\n',f(X))
运行结果:

Newton牛顿法

​​​​​​​function [p,k] = Newton(f,p0,tol)
% f 目标函数
% p0 初值
% tol 计算终止误差
syms x
f1(x)=diff(f,x);
f2(x)=diff(f,x,2);
for k=1:200
    p1=p0-f1(p0)/f2(p0);
    err=abs(p1-p0);
    if err<tol
        break
    end
    p0=p1;
end     
p=vpa(p1);
end

运行结果:

最速下降法

function [x]=grad(f,x0,e,var)
syms x1 x2 t
d=-jacobian(f,var);%负梯度
p0=subs(d,var,x0);%负梯度值
v=p0*p0.';%求梯度模
v=v^0.5;
while (v>e)
    h=x0+t.*p0;%h=x+Ld
    fai=subs(f,var,h);%f(x+Ld)=fai(L)
    df=diff(fai);%求导
    t1=solve(df,t);%导函数为0时t的值
    x0=subs(h,t1);%新的点
    p0=subs(d,var,x0);%新的负梯度值
    v=p0*p0.';
    v=v^0.5;
end
x=vpa(x0);
end

运行结果:

共轭方向法

function [x]=gefx(f,x0,e,var)
syms x1 x2 t
d=-jacobian(f,var);%负梯度
p0=subs(d,var,x0);%负梯度值
v=p0*p0.';%求梯度模
v=v^0.5;
while(v>e)
    h=x0+t.*p0;%h=x+Ld
    fai=subs(f,var,h);%f(x+Ld)=fai(L)
    df=diff(fai);%求导
    t1=solve(df,t);%导函数为0时t的值
    x1=subs(h,t1);%新的点
    p0=subs(d,var,x1);%新的负梯度值
    v1=p0*p0.';
    v1=v1^0.5;
    if(v1>e)
        a=subs(d,var,x0);
        L=(v1^2)/(a*a.');%求λ的值
        p0=subs(d,var,x1)+L.*p0;
        x0=x1;v=v1;%进入下一个循环
    else
        break;
    end
        
end
x=vpa(x1);
end

运行结果:

标签:p0,subs,梯度,0.618,MATLAB,var,x0,x1,最速
来源: https://blog.csdn.net/mon_V/article/details/122273774

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有