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

工程数学2

时间:2023-06-11 10:34:27浏览次数:30  
标签:迭代 工程 gfun 算法 funf 数学 x0 最速

实验二:最速下降法程序设计

 

一、实验目的

通过最速下降法的程序设计,为今后的约束优化方法的学习和编程奠定基础;掌握负梯度方向的定义和最速下降法的迭代公式 ;通过此次实验,进一步巩固最速下降法的基本原理和思想。

 

二、实验内容

 

  (1)求解无约束优化问题:

(2)终止准则取

(3)完成最速下降法(负梯度法)的 MATLAB 编程、调试;

(4)要求选取多个不同的初始点,并给出迭代次数,最优函数值等相关信息,有能力的同学尝试画出最优值随迭代次数变化的曲线图;

(5)按照模板撰写实验报告,要求规范整洁。

 

 

三、算法步骤、代码、及结果

   1. 算法步骤

    1. 算法步骤

步骤1:给出初始点x 0,置k=0,最大迭代次数maxk=5000,精度e=1e-5,目标 函数funf及其梯度gfun

步骤2:若终止条件满足(| | gfun | | < e),则迭代停止

步骤3:计算d k = −gfun

步骤4:在d k方向上利用一维精确线性搜索Amrijo搜索求步长ak

步骤5:x k + 1 = x k + α k d k , k = k + 1,转步骤2

  

 

  1. 代码

grad.m

function [x,val,k] = grad(funf,gfun,x0)

%功能:用最速下降法求解无约束问题

%输入:funf,gfun分别是目标函数和梯度,x0是初始点

%输出:x,val分别是近似最优解和最优值,k是迭代次数

%%

maxk=5000; %最大迭代次数

rho=0.5;

sigma=0.4;

k=0;

e=1e-5; %精度

while(k<maxk)

    g=feval(gfun,x0); %计算梯度

    d=-g;

    if(norm(d)<e),break;end

    %用Amrijo搜索技术确定步长

    m=0;mk=0;

    while(m<20) %最大迭代次数

       if(feval(funf,x0+rho^m*d)<feval(funf,x0)+sigma*rho^m*g'*d)

           mk=m;

           break;

       else

           m=m+1;

       end

    end

    x0=x0+d*rho^mk;

    k=k+1;

end

x=x0;

val=feval(funf,x0);

end

 

funf.m

function f= funf(x)

%目标函数

%%

f=100*(x(1)^2-x(2))^2+(x(1)-1)^2;

end

 

gfun.m

function  g=gfun(x)

%目标函数的梯度

%%

g=[400*x(1)*(x(1)^2-x(2))+2*(x(1)-1),-200*(x(1)^2-x(2))]';

end

 

 

  1. 结果

x0=[-1.2 1]';

>> [x,val,k]=grad('funf','gfun',x0);

>> disp(['最优解:x = '])

disp(x)

disp(['此时: f(x) = ',num2str(val)])

最优解:x =

    1.0000

    1.0000

 

此时: f(x) = 1.1985e-10

disp(['迭代次数:k = ', k])

迭代次数:k = ֛

>> disp(k)

        1435

 

 

四、心得体会

在使用最速下降法时,我需要先确定初始点和学习率等参数,然后根据目标函数的梯度方向来更新当前点坐标,直到达到预设精度要求为止。

 

在实现过程中,我发现最速下降法虽然简单易于理解,但是迭代次数较多且容易陷入局部最优解。因此,在实际应用中,我需要通过合理设置学习率、调整初始点和考虑其他辅助算法等方式来提高算法效率和收敛速度。

 

此外,在本次实验中,我还学习了如何通过调试工具和可视化界面来验证算法的正确性和优化效果。这为我今后在实际应用领域中的算法设计和优化提供了有力的支持。

 

总之,通过本次实验,我深入理解了最速下降法的原理和实现方式,并掌握了常见的算法优化技巧和调试方法。这将对我的算法设计和优化能力提升产生积极的影响。

 

标签:迭代,工程,gfun,算法,funf,数学,x0,最速
From: https://www.cnblogs.com/fuchuchu/p/17472579.html

相关文章

  • 工程数学5
    实验五:MATLAB最优化工具箱的使用 一、实验目的通过一个农业生产计划优化安排的实例求解,培养学生解决实际线性规划问题的初步能力;熟悉线性规划的建模过程;掌握 Matlab 优化工具箱中线性规划函数的调用。通过一个投资组合优化问题的实例求解,培养学生解决实际二次规划问题的初......
  • 工程数学4
    实验四:共轭梯度法程序设计 一、实验目的掌握共轭梯度法的基本思想及其迭代步骤;学会运用 MATLAB 编程实现常用优化算法;能够正确处理实验数据和分析实验结果及调试程序。 二、实验内容(1)求解无约束优化问题:(2)终止准则取 ,搜索方法采用非精确搜索 Armijo;(3)完成 FR 共轭......
  • 工程数学上机5
    实验五:MATLAB最优化工具箱的使用一、实验目的通过一个农业生产计划优化安排的实例求解,培养学生解决实际线性规划问题的初步能力;熟悉线性规划的建模过程;掌握Matlab优化工具箱中线性规划函数的调用。 二、实验内容某村计划在100公顷的土地上种植a、b 、c 三种农作物......
  • 工程数学上机1
    实验一:一维寻优法(0.618法)程序设计一、实验目的通过一维寻优黄金分割法的程序设计,培养学生计算机的应用能力,并为今后无约束优化方法的学习和编程,奠定基础;掌握缩小寻优区间的黄金分割法。  二、实验内容(1) 请用0.618法求解优化问题:min f (x)=x2 −sin(x)......
  • 工程数学上机2
    实验二:最速下降法程序设计一、实验目的通过最速下降法的程序设计,为今后的约束优化方法的学习和编程奠定基础;掌握负梯度方向的定义和最速下降法的迭代公式;通过此次实验,进一步巩固最速下降法的基本 原理和思想。 二、实验内容(1)求解无约束优化问题:;(2)终止准则取;(3)......
  • 工程数学上机3
    实验三:Newton法程序设计一、实验目的掌握Hesse 矩阵的计算方法和Newton法的基本思想及其迭代步骤;学会运用MATLAB编程实现 常用优化算法; 能够正确处理实验数据和分析实验结果及调试程序。  二、实验内容(1)求解无约束优化问题:;(2)终止准则取;(3)完成Newton 法......
  • 工程数学上机4
    实验四:共轭梯度法程序设计一、实验目的掌握共轭梯度法的基本思想及其迭代步骤;学会运用MATLAB编程实现常用优化算法;能够正 确处理实验数据和分析实验结果及调试程序。 二、实验内容(1)求解无约束优化问题:;(2)终止准则取,搜索方法采用非精确搜索 Armijo;(3)完成FR共......
  • 数学公式:点到直线的距离
    求点到直线的距离,点P(a,b),直线l为Ax+By+C=0过P点作垂直于l的直线m\[l的点斜式为\\y=-\frac{A}{B}x-\frac{C}{B}\\x=-\frac{B}{A}y-\frac{C}{A}\\求垂直斜率,通过斜率相乘得-1求得。k=\frac{B}{A}\\则m的点斜式方程为\\y=\frac{B}{A}(x-a)+b......
  • 现代软件工程--基础知识
    现代软件工程期末复习--基础知识1.软件工程师及软件团队讲解了一些软件工程师的规范和团队规范没啥看的,暂时忽略2.软件及其过程什么是软件?计算机软件指计算机系统中的程序、数据及其相关文档程序:按照特定顺序组织的计算机数据和指令的集合数据:使程序能正常执行的......
  • 数学考研高效率速通计划
    绝大多数院校的数学考研初试科目是数学分析和高等代数。根据院校的难度,数学分析和高等代数各选择一本合适的教辅书。按照考试大纲(各院校略有差异),把不需要的章节删去。第一轮复习的时候,数学分析安排两个月,高等代数安排一个月。数学分析把教材内容进行拆分成60天的任务,高等代数3......