首页 > 其他分享 >2023-07-07 《数值优化方法》-庞丽萍,肖现涛-无约束最优化(三).md

2023-07-07 《数值优化方法》-庞丽萍,肖现涛-无约束最优化(三).md

时间:2023-07-07 19:55:19浏览次数:34  
标签:epsil md 07 xk 肖现 抛物线 diff x0

2023-07-07 《数值优化方法》-庞丽萍,肖现涛-无约束最优化(三)

数值优化方法Matlab一维线搜索牛顿法抛物线法非精确线搜索

1. 牛顿法

书接上回,对于一维最优化问题, 牛顿法是在迭代点处进行二次泰勒展开来近似原函数,然后求泰勒展开式的极小点,具体如下

为当前迭代点,处的二阶泰勒展开式为


为了求近似函数的最小值,考虑最优性条件, 得到

, 整理可得

牛顿法要求目标函数二阶可导,且根据上述推导可知牛顿法收敛到的点,即可能是极小点也可能是极大点, 只有当初始点和极小点比较接近(至少比到极大点更接近),才能收敛到极小点.

  1. % 一维最优化问题的牛顿法 
  2. % fun 目标函数, 可以是符号函数或函数句柄 
  3. % epsil 指定终止条件(精度) 
  4. % maxIt 最大迭代次数 
  5. function [xk xlog] = OneNewton(f, x0, epsil, maxIt) 
  6. k = 0; 
  7. if isa(f,'function_handle') 
  8. syms x; 
  9. fun(x) = f(x); 
  10. else 
  11. fun = f; 
  12. end 
  13. diff_fun1 = diff(fun); 
  14. diff_fun2 = diff(diff_fun1); 
  15. diff_fun1_h = matlabFunction(diff_fun1); 
  16. diff_fun2_h = matlabFunction(diff_fun2); 
  17. while k <= maxIt 
  18. xk = x0 - diff_fun1_h(x0) / diff_fun2_h(x0); 
  19. if abs(xk- x0) <= epsil 
  20. break; 
  21. end 
  22. k = k + 1; 
  23. x0 = xk; 
  24. xlog(k) = xk; 
  25. end 
  26. end 

测试代码

  1. f = @(x) sin(x); 
  2. epsil = 1e-6; 
  3. maxIt = 1e3; 
  4.  
  5. plot((-10):0.01:10, f((-10):0.01:10)) 
  6. x0 = 1; 
  7. [xk xlog] = OneNewton(f, x0, epsil, maxIt) 
  8. x0 = 0.5; 
  9. [xk xlog] = OneNewton(f, x0, epsil, maxIt) 
  10. x0 = -0.5; 
  11. [xk xlog] = OneNewton(f, x0, epsil, maxIt) 

2. 抛物线法

牛顿法要求目标函数二次可导,而抛物线法则没有此要求,其主要思想是插值一个二次多项式来近似代替目标函数.

给定第次的搜索区间, 任意选取, 然后在上取二次插值多项式


其满足

根据上述方程可以确定近似函数:

由于只需要知道二次函数的最值所在点,因此不需要知道的具体取值,令.

抛物线法有如下缺点
1. 可能不收敛. 如果新的迭代点和当前迭代点充分接近,但是新迭代点并不是目标函数的极小点,则算法不收敛.
2. 选择的需要满足, 但是没有提供一种满足此条件的方法.

抛物线法的原理导致其不能简单改进到适用于所有情况的一维搜索中.

抛物线法
Step 1. 给定初始区间, 选取, 给出误差, 置.
Step 2. 按照上面的公式计算, 然后计算. 若, 停止算法,输出; 否则转下步.
Step 3. 若, 令; 若, 令.

抛物线法的实现只需要带入公式即可,没有特殊之处,这里不给出程序。考虑抛物线法和其他方法的结合或许更有意义.

标签:epsil,md,07,xk,肖现,抛物线,diff,x0
From: https://www.cnblogs.com/NEFPHYS/p/17535926.html

相关文章

  • 「NOIP 模拟赛 20230707」T2 - 涂照片 题解
    题目大意原题有一个\(n+1\timesm+1\)的网格。对于每一行\(i\),都要将左侧的一些格子\((i,1),(i,2),\ldots,(i,x)\)涂黑,其中\(x=k\)的概率为\(a_{i,k}\)。同理对于每一列\(j\),都要将上方的一些格子\((1,j),(2,j),\ldots,(x,j)\)涂黑,其中\(x=k\)的概率为\(b_{k,......
  • Buildroot创建ramdisk、ext4、ubifs镜像,以及mkfs.ext4/mkfs.ubifs/cpio的使用
    通过mkfs.ext4和mkfs.ubifs可以生成ext4和ubi格式的文件系统文件。Buildroot中创建文件系统文件即借助这两个命令。1.mkfs.ext4mkfs.ext4以及mkfs.ext2/mkfs.ext3都指向mke2fs,用于创建ext4格式的文件系统。Usage:mkfs.ext4[-c|-lfilename][-bblock-size][-Ccluster-si......
  • 230707 // 换根复习续
    A.叶子的染色http://222.180.160.110:1024/contest/3824/problem/1不难发现题目非常难以看懂。其实题目的意思是,\(1\simn\)一定是叶子节点(就不能明说吗)。那么问题来了,这是一棵无根树,那么我们所选取的根会对答案造成影响吗?由于\(c_u\)给定的是根节点到\(u\)路径上最后......
  • Day04(2023.07.07)
    行程9:00到达上海城建城市运营有限公司(黄浦区打浦路600号)10:00整理编写文档11:30--13:00吃饭休息13:00学习等保测评基础知识,见《等保测评基础知识》16:30下班......
  • 《Kali渗透基础》07. 弱点扫描(一)
    目录1:漏洞发现1.1:Exploit-DB1.2:searchsploit1.3:nmap2:漏洞管理3:弱点扫描类型4:漏洞基本概念4.1:CVSS4.2:CVE4.3:OVAL4.4:CCE4.5:CPE4.6:CWE4.7:SCAP4.8:NVD5:漏洞管理6:扫描结果分析本系列侧重方法论,各工具只是实现目标的载体。命令与工具只做简单介绍,其使用另见《安全工具录》。本文以......
  • 20230706-NOIP模拟赛
    20230706T1.骰子游戏(dice)题目大意给你两个正整数\(n\)和\(d\),你需要构造\(n\)组数据,每组6个整数满足整数都在\([0,10^6]\)范围内,每组数据中两两不同,在每组数据中分别随机选一个数所得到的异或和为\(d\)的倍数如果能构造出这样的\(n\)组数据,请先输出‘Yes’,随后输......
  • C/C++数据结构与算法课程设计[2023-07-06]
    C/C++数据结构与算法课程设计[2023-07-06]数据结构与算法课程设计一、课程设计的目的、要求和任务 本课程设计是为了配合《数据结构与算法》课程的开设,通过设计完整的程序,使学生掌握数据结构的应用、算法的编写等基本方法。1.课程的目的(1)使学生进一步理解和掌握课堂上所学......
  • C++学生健康信息收集系统[2023-07-06]
    C++学生健康信息收集系统[2023-07-06]学生健康信息收集系统简介一、 问题描述为了应对新型冠状病毒疫情,学校需要开发一个能够每天收集全校学生健康信息的系统,便于学校管理。不同学院以及学校的管理员,需要能方便地查看和导出健康状况异常的学生列表,并能对各类信息进行查看和统计......
  • C/C++学生通讯录管理系统[2023-07-06]
    C/C++学生通讯录管理系统[2023-07-06]一、设计要求1、题目利用C++语言实现一个学生通讯录管理系统,系统中需要实现的功能如下:(1)添加学生信息:向通讯录中添加新人,信息包括(学生姓名、性别、年龄、联系电话、家庭住址等),最多记录100人。(2)显示学生信息:显示通讯录中所有学生信息。(3)删......
  • BZOJ 3073: [Pa2011]Journeys 线段树优化最短路
    3073:[Pa2011]JourneysTimeLimit: 20Sec  MemoryLimit: 512MBSubmit: 243  Solved: 80[Submit][Status][Discuss]DescriptionSeter建造了一个很大的星球,他准备建造N个国家和无数双向道路。N个国家很快建造好了,用1..N编号,但是他发现道路实在太多了,他要一条条......