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

工程数学4

时间:2023-06-11 10:33:44浏览次数:34  
标签:xk 工程 g1 g0 step 数学 pk 迭代

实验四:共轭梯度法程序设计

 

一、实验目的

掌握共轭梯度法的基本思想及其迭代步骤;学会运用 MATLAB 编程实现常用优化算法;能够正确处理实验数据和分析实验结果及调试程序。

 

二、实验内容

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

(2)终止准则取 ,搜索方法采用非精确搜索 Armijo;

(3)完成 FR 共轭梯度法的 MATLAB 编程、调试;

(4)选取几个与实验二实验三中相同的初始点,并给出相关实验结果的对比及分析(从最优解、 最优值、收敛速度(迭代次数)等方面进行比较);

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

 

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

   1. 算法步骤

    步骤1:初始点x 0, 置k = 0,精度要求e为10^-5

步骤2:若∣∣pk∣∣ ≦ e ,停止迭代

步骤3:计算 b=(g1*g1')/(g0*g0'), pk=-g1+b*pk;

步骤4:Wolfe-Powell 非精确一维搜索得步长a

步骤5:x k+1 = x k + a*pk, k=k+1 ,转步骤 2

 

   2. 代码

function [xk]=FR_Wolfe(e,x)

%step 1

g0=shuzhiweifenfa(x);

pk=-g0;

%没用到k,只存储当前迭代的值。

xk=x;

while 1

    %step 2

    %一维搜索求ak

    a=Wolfe_Powell(xk,pk);

    %step 3

    xk=xk+a*pk;

    g1=shuzhiweifenfa(xk);

    %step 4

    %范数用的是平方和开根号

    if sqrt(sum(g1.^2))<=e

        return;

    end

    %step 5

    b=(g1*g1')/(g0*g0');

    pk=-g1+b*pk;

    %step 6

    %没用到k,只存储当前迭代的值。

    g0=g1;

end

 

function g=shuzhiweifenfa(x)

for i = 1:length(x)

    m=zeros(1,length(x));

    m(i)=(10^-6)/2;

    g(i)=f(x+m)-f(x-m);

end

g=g/10^-6;

 

function a=Wolfe_Powell(x,pk)

%step 1

u=0.1;

b=0.5;

a=1;

n=0;

m=10^100;

%step 2

fx=f(x);

g=shuzhiweifenfa(x);

while 1

    xk=x+a*pk;

    fxk=f(xk);

    gk=shuzhiweifenfa(xk);

    if (fx-fxk)>=(-u*a*g*pk.')%(3-1)

        if (gk*pk.')>=(b*g*pk.')%(3-2)

            return;

        else

            %step 4

            n=a;

            a=min(2*a,(a+m)/2);

        end

    else

        %step 3

        m=a;

        a=(a+n)/2;

    end

end

 

   3. 结果

n=10;

x=[-1.2 1];

>> [x_,k]=FR_Wolfe(10^-5,x);

>> fprintf('x=%f\t%f\n',x_(1),x_(2));

x=1.000199 1.000399

>> fprintf('迭代次数=%d',k);

迭代次数=124

 

二、心得体会

与实验二和实验三进行对比,发现通过共轭梯度法和通过最速下降法以及牛顿法所求得的最优解近似相同,最优值近似相同,最速下降法的迭代次数要远远大于共轭梯度法和牛顿法,共轭梯度法的迭代次数大于牛顿法。

 

标签:xk,工程,g1,g0,step,数学,pk,迭代
From: https://www.cnblogs.com/fuchuchu/p/17472583.html

相关文章

  • 工程数学上机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......
  • 数学老师从没这么教过,乘法竖式中进位可以是多位(附Python实现与测试源码)...
    大概十五年前,曾经写过一个C语言版本的类似代码。核心思想是:在乘法竖式计算过程中,每次的进位实际上是可以超过一位的,虽然老师从来没有这么教过。这样的操作在Python中是没有必要的,因为Python中的数字没有大小限制。但在C语言或其他静态类型语言中,由于整型变量能够表示的范围有限,所以......
  • 数学 多元函数的微分
    <h4>一,二元函数的偏导数与全微分</h4>1.偏导数的定义和几何意义2.全微分的定义/性质 ......