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

工程数学3

时间:2023-06-11 10:34:38浏览次数:31  
标签:xk 工程 optimization 数学 fxk var x0 最优

实验三:Newton 法程序设计

 

一、实验目的

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

二、实验内容

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

(2)终止准则取

(3)完成 Newton 法(牛顿法)的 MATLAB 编程、调试

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

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

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

   1. 算法步骤

     步骤1:给定初始点 x0,及精度e 令

步骤2:若梯度的范数<e ,停止,极小点为xk ,否则转【3】;

步骤3:计算负梯度,海森矩阵,令 dk=负梯度*海森矩阵的逆

步骤4:令 xk+1 = xk + dk,k=k+1,转【2】。

  1. 代码

function [x_optimization,f_optimization,k] = Multi_Newton_Method(f,x0,var_x,epsilon)

format long;

%   f:目标函数

%   x0:初始点

%   var_x:自变量

%   epsilon:精度

%   x_optimization:最优解

%   f_optimization:最优值

%%

if nargin == 3

    epsilon = 1.0e-5;

end

x0 = transpose(x0);

var_x = transpose(var_x);

gradf = jacobian(f,var_x);

grad2f = jacobian(gradf,var_x);

grad_fxk = 1;

k = 0;

xk = x0;

 

while norm(grad_fxk) > epsilon

    grad_fxk  = subs(gradf,var_x,xk);

    grad2_fxk = subs(grad2f,var_x,xk);

    pk = -inv(grad2_fxk)*transpose(grad_fxk);   

    pk = double(pk);

    xk_next = xk + pk;

    xk = xk_next;

    k = k + 1;

end

 

x_optimization = xk_next;

f_optimization = subs(f,var_x,x_optimization);

format short;

 

 

   3. 结果

clear;

>> syms x1 x2;

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

[x_optimization,f_optimization,k] = Multi_Newton_Method(f,[-1.2 1],[x1 x2],0.0001);

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

最优解: x =

>> disp(x_optimization)

    1.0000

    1.0000

 

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

迭代次数: k =

>> disp(k)

 

三、心得体会

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

 

标签:xk,工程,optimization,数学,fxk,var,x0,最优
From: https://www.cnblogs.com/fuchuchu/p/17472580.html

相关文章

  • 工程数学2
    实验二:最速下降法程序设计 一、实验目的通过最速下降法的程序设计,为今后的约束优化方法的学习和编程奠定基础;掌握负梯度方向的定义和最速下降法的迭代公式 ;通过此次实验,进一步巩固最速下降法的基本原理和思想。 二、实验内容   (1)求解无约束优化问题:(2)终止准则取(3)完......
  • 工程数学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.软件及其过程什么是软件?计算机软件指计算机系统中的程序、数据及其相关文档程序:按照特定顺序组织的计算机数据和指令的集合数据:使程序能正常执行的......