首页 > 其他分享 >工程数学实验2

工程数学实验2

时间:2023-05-29 11:02:59浏览次数:30  
标签:工程 迭代 iter 步长 实验 alpha 数学 x1 grad

代码

function [xopt, fopt, iter] = grad_descent(x0, f, g, eps, alpha)

 

% x0: 初始搜索点

% f: 目标函数

% g: 梯度函数

% eps: 迭代收敛的精度

% alpha: 步长

 

iter = 1; % 迭代计数器

max_iter = 10000; % 最大迭代次数

x = x0;

 

while iter <= max_iter

    

    % 计算梯度

    grad = g(x);

    

    % 计算下降方向

    d = -grad;

    

    % 计算步长

    t = backtracking_line_search(x, d, f, grad, alpha);

    

    % 更新搜索点

    x1 = x + t * d;

    

    % 计算函数变化量

    df = f(x1) - f(x);

    

    % 判断停止条件

    if abs(df) < eps

        xopt = x1;

        fopt = f(x1);

        return;

    else

        % 继续迭代

        x = x1;

        iter = iter + 1;

    end

 

end

 

% 达到最大迭代次数仍未收敛

xopt = x;

fopt = f(x);

 

end

 

% 回溯线性搜索

function t = backtracking_line_search(x, d, f, grad, alpha)

 

c = 0.5;

rho = 0.5;

t = alpha;

 

while f(x+t*d) > f(x) + c*t*grad'*d

    t = rho*t;

end

 

end   

  1. 结果

 

初始点

迭代次数

最优解

最优值

[-1.2,1]

1798

[-0.9995, 0.999]**

4.0187

[-0.3, 1]

3847

[0.9993, 0.9986]**

3.2615

[1.2,1]

1518

[1.0000, 1.0000]

0

[1.2,-1]

10000

由于步长alpha选取不当,程序未能收敛

不适用

[2, 2]

9978

由于步长alpha选取不当,程序未能收敛

不适用

 

四、心得体会

可以发现,与实验一中的结果相比,最速下降法的迭代次数更多,但在这个问题上仍旧表现不错。同时,我们也发现,步长alpha的选取在最优值的求解过程中极其关键,在实现中需要仔细调整。最终,我们得到了代表最优解的点,以及该点对应的最优值。

标签:工程,迭代,iter,步长,实验,alpha,数学,x1,grad
From: https://www.cnblogs.com/yunbianshangdadun/p/17439835.html

相关文章

  • 工程数学实验二
    实验二:最速下降法程序设计一、实验目的通过最速下降法的程序设计,为今后的约束优化方法的学习和编程奠定基础;掌握负梯度方向的定义和最速下降法的迭代公式;通过此次实验,进一步巩固最速下降法的基本原理和思想。 二、实验内容(1)求解无约束优化问题:(2)终止准则取;(3)完成最速下降法(......
  • 工程数学实验三
     实验三:Newton法程序设计一、实验目的掌握Hesse矩阵的计算方法和Newton法的基本思想及其迭代步骤;学会运用MATLAB编程实现常用优化算法;能够正确处理实验数据和分析实验结果及调试程序。 二、实验内容 (1)求解无约束优化问题;() (2)终止准则取; (3)完成Newton法(牛顿法)的MATLAB......
  • 工程数学实验4
    实验四:共轭梯度法程序设计一、实验目的掌握共轭梯度法的基本思想及其迭代步骤;学会运用MATLAB编程实现常用优化算法;能够正确处理实验数据和分析实验结果及调试程序。 二、实验内容 (1)求解无约束优化问题:; (2)终止准则取,搜索方法采用非精确搜索Armijo; (3)完成FR共轭梯度法的......
  • 工程数学实验3
     1.算法步骤       2.function[xopt,fopt,iter]=newton(x0,f,g,H,eps) %x0:初始搜索点%f:目标函数%g:梯度函数%H:Hesse矩阵函数%eps:迭代收敛的精度 iter=1;%迭代计数器max_iter=1000;%最大迭代次数 whileiter<=max_iter......
  • 工程数学实验一
    实验一:一维寻优法(0.618法)程序设计一、实验目的通过一维寻优黄金分割法的程序设计,培养学生计算机的应用能力,并为今后无约束优化方法的学习和编程,奠定基础;掌握缩小寻优区间的黄金分割法。二、实验内容(1)请用0.618法求解优化问题: 在区间[0,1]上的极小点和极小值;(2)根据0.618法算......
  • 最佳实践:基于vite3的monorepo前端工程搭建
    一、技术栈选择1.代码库管理方式-Monorepo:将多个项目存放在同一个代码库中▪选择理由1:多个应用(可以按业务线产品粒度划分)在同一个repo管理,便于统一管理代码规范、共享工作流▪选择理由2:解决跨项目/应用之间物理层面的代码复用,不用通过发布/安装npm包解决共享问题2.依赖管理-......
  • 实验6
    task4程序源码#include<stdio.h>#include<string.h>#defineN100typedefstruct{charnum[10];//学号ints1;//期末成绩ints2;//平时成绩doublesum;//总评charlevel[10];//等级}......
  • 工程数学实验1
    源码%定义目标函数f=@(x)x^2-sin(x); %设置搜索区间a=0;b=1; %定义收敛精度epsilon=1e-6; %定义黄金分割比例r=(sqrt(5)-1)/2; %初始化中间点al=a+r*(b-a);ak=b-r*(b-a); %初始化迭代计数器k=1; %迭代过程whileab......
  • vivado2019.2新建工程点灯
    官方视频教程地址但是看b站的黑金视频更快些最后是靠这个教程点出来的new一个工程点next设置工程名字和路径,注意不要有中文和空格选择创建RTL工程点灯不需要添加外部的ip等文件,所以不用选,直接next先不加约束,点next用的是依元素公司的EES303开发板,芯片型号是XC7A35T-1CSG324C......
  • 【华为HCIP | 高级网络工程师】刷题日记(10)
    个人名片:......