⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 speeddesc.m

📁 此源码包是我本学期最优化理论课程的大作业
💻 M
字号:
%最速下降法
clear;
syms x1 x2;
fun=fun1;
x0=[0;0];%设置初点
x=x0;
Dfx=[diff(fun,x1);diff(fun,x2)];
dfx=subs(Dfx,[x1 x2],x);
e=1e-6;%设置精度
num=0;%迭代次数
fx=subs(fun,[x1 x2],x);
d=-dfx;
d_fan=sqrt(d'*d);
%开始用最速下降法迭代求最优点
while(d_fan>e)
    alpha=1;
    sigma=0.5;
    rho=0.5;
    %开始用Armijo型线搜索方法求步长,并取σ=0.5,ρ=0.5
    while(subs(fun,[x1 x2],x+alpha*d)>(subs(fun,[x1 x2],x)+sigma*alpha*dfx'*d))
        alpha=rho*alpha;
    end
    x=x+alpha*d;
    fx=subs(fun,[x1 x2],x);
    dfx=subs(Dfx,[x1 x2],x);
    d=-dfx;
    d_fan=sqrt(d'*d);
    num=num+1;
end
fprintf('\n最速下降法\n结果:\n优化精度为ε=%d\n初指点x0=[%d %d]\n最优点x=[ %d %d ] \n最优值fx=%d \n||d||=%d \n迭代次数k=%d\n',e,x0(1),x0(2),x(1),x(2),fx,d_fan,num);
[x,y]=meshgrid(-3:0.1:3,-3:0.1:3);
z=(x.^2-y+1).^2+(x-cos(pi/2*y)).^2;
meshc(x,y,z);
xlabel('x1');
ylabel('x2');



    
        
        
        
        
        
        
     
    








⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -