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

工程数学上机3

时间:2023-06-11 09:44:12浏览次数:47  
标签: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】。

 

2. 代码

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)

     6

 

 

四、心得体会

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

 

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

相关文章

  • 工程数学上机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.全微分的定义/性质 ......
  • 五.特征工程之特征降维
    1.什么是特征降维降低的对象为二维数组此处的降维为降低特征的个数降维是指在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关”主变量的过程降维的效果就是使得特征和特征之间不相关如果相关的特征太多的话会造成数据的冗余的正是因为在进行训练的时候,我们都是使......
  • 【数学荟萃】第10期:考研数学常用泰勒公式汇总
    泰勒公式是考研数学中同学必须掌握的一系列公式,在求极限、解答题的中值定理问题上面大有用武之地。但是它的公式太多太杂,为了方便学生学习,下面总结了这些公式。为了方便排版,这里直接发图片。由于比较匆忙,如存在小错误请批评指正。 需要pdf文件的同学,扫描下面二维码关注公众号【......
  • 日报 数学
     工程数学实验 1.算法步骤   黄金分割法也叫0.618法,是一种基于区间收缩的极小值搜索算法。比如以[a,b][a,b][a,b]为区间,产生两个内点x1=a+0.382∗(b−a)x2=a+0.618∗(b−a)x_1=a+0.382*(b-a)\\x_2=a+0.618*(b-a)x1​ =a+......
  • 潘毅 美国医学与生物工程院院士、欧洲科学与艺术院院士、乌克兰国家工程院外籍院士、
    美国医学与生物工程院院士、欧洲科学与艺术院院士、乌克兰国家工程院外籍院士、生物信息学领域专家 潘毅,1960年5月出生于江苏吴江,汉族,生物信息学领域专家,美国医学与生物工程院院士,欧洲科学与艺术院院士,乌克兰国家工程院外籍院士,英国皇家公共卫生学院院士,中国科学院深圳理工大......