最优化第六讲练习题

在这里插入图片描述
使用牛顿法

def f(vec):x1,x2=vec[0],vec[1]return x1*x1/2+2*x2*x2def first_order(vec):x1,x2=vec[0],vec[1]return np.array((x1,4*x2))x0=np.array((2,1)) #初始点
sec=np.array([[1,0],[0,4]]) #二阶导
try:inv=np.linalg.inv(sec)
except:print("矩阵不存在逆矩阵")
res=first_order(x0) #微分
d0=inv@-res
x1=x0+d0
tmp=None
while abs(f(x1)-f(x0))>1e-3: #函数res=first_order(x1) #微分d1=inv@-restmp=x1x1=x1+d1x0=tmp

最小值为0
在这里插入图片描述
1.1 坐标轴交替下降
x i = x i − 1 + α i e i x_i=x_{i-1}+\alpha_ie_i xi=xi1+αiei,其中 α i = a r g min ⁡ f ( x i − 1 + α e i ) \alpha_i=arg\min f(x_{i-1}+\alpha e_i) αi=argminf(xi1+αei)

def f(vec):x1,x2=vec[0],vec[1]return x1*x1+x2*x2+x1*x2+2*x1-3*x2def first_order(vec):x1,x2=vec[0],vec[1]return np.array((2*x1+x2+2,2*x2+x1-3))def calc_alpha(vec,idx):x1,x2=vec[0],vec[1]if idx:return (3-x1-2*x2)/2else:return -(2+x2+2*x1)/2x0=np.array((0,0))
tmp=x0.copy()
x0[0]+=calc_alpha(x0,0)
n=1
while abs(f(x0)-f(tmp))>1e-3:tmp=x0.copy()x0[n]+=calc_alpha(x0,n)n=1-n

最小值为-6
1.2 最速下降法
d k = − ∇ f ( x k ) d_k=-\nabla f(x^k) dk=f(xk)

class Poly:cons1=Nonevar1=Nonecons2=Nonevar2=Nonedef poly_weifen(vec,x):vec.cons1*=2vec.cons1+=x[1]vec.cons1+=2vec.var1*=2vec.cons2*=2vec.cons2+=x[0]vec.cons2-=3vec.var2*=2return vecdef calc_alpha(vec,d):vec.cons1*=d[0]vec.var1*=d[0]vec.cons2*=d[1]vec.var2*=d[1]return -(vec.cons1+vec.cons2)/(vec.var1+vec.var2)x0=np.array((0,0)) #初始点
d0=-first_order(x0) #微分
x2=Poly()
x2.cons1=x0[0]
x2.var1=d0[0]
x2.cons2=x0[1]
x2.var2=d0[1]
vec=poly_weifen(x2,x0) #多项式微分
alpha=calc_alpha(vec,d0)
x1=x0+alpha*d0
tmp=None
while abs(f(x1)-f(x0))>0.2: #函数定义d1=-first_order(x1) #微分x2=Poly()x2.cons1=x1[0]x2.var1=d1[0]x2.cons2=x1[1]x2.var2=d1[1]vec=poly_weifen(x2,x1) #多项式微分alpha=calc_alpha(vec,d1)tmp=x1x1=x1+alpha*d1x0=tmp

最小值为-6.30859375
1.3 牛顿法
d k = − [ ∇ 2 f ( x k ) ] − 1 ∇ f ( x k ) d^k=-[\nabla^2f(x^k)]^{-1}\nabla f(x^k) dk=[2f(xk)]1f(xk)
最优解 x = x k + d k x=x^k+d^k x=xk+dk

def calc_sec(vec):return np.array([[2,1],[1,2]])

最小值为-6.333333333333332
在这里插入图片描述
2.1 坐标轴交替下降

def f(vec):x1,x2=vec[0],vec[1]return 4*x1*x1+x2*x2-x1*x1*x2def first_order(vec):x1,x2=vec[0],vec[1]return np.array((8*x1-2*x1*x2,2*x2-x1*x1))def calc_alpha(vec,idx):x1,x2=vec[0],vec[1]if idx:return (x1*x1-2*x2)/2else:return (2*x2-8)*x1/(8-2*x2)

3个初始点的情况下最小值都为0
2.2 最速下降法

def poly_weifen(vec,x):vec.cons1*=8vec.cons1-=2*x[0]*x[1]vec.var1*=8vec.var1-=2*x[1]vec.cons2*=2vec.cons2-=x[0]*x[0]vec.var2*=2return vec

初始点(1,1)的最小值为3.1338726246602966e-05,初始点(3,4)无法收敛,初始点(2,0)的最小值为3.5938810907227845e-06
1.3 牛顿法

def calc_sec(vec):x1,x2=vec[0],vec[1]return np.array([[8-2*x2,-2*x1],[-2*x1,2]])

初始点(1,1)的最小值为0.0014071388348340429;初始点(3,4)无法收敛,最小值为16;初始点(2,0)无法收敛

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/32311.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React Native工程运行时下载gradle超时问题

React Native工程在运行Android的时候会下载gradle&#xff0c;但是由于众所周知的问题&#xff0c;总是下载失败&#xff0c;这时可以通过修改 <APP_ROOT>/android/wrapper/gradle-wrapper.properties 文件中 distributionUrl 参数使用国内 gradle 镜像来提高下载速度。…

基于YOLOv5的交通标志检测的设计与实现

简介 在智能交通系统中,交通标志的准确检测与识别对提高道路安全和交通效率至关重要。为了实现这一目标,我们开发了一种基于YOLOv5目标检测模型的交通标志检测系统。本报告将详细介绍该系统的实际应用与实现,包括系统架构、功能实现、使用说明、检测示例、数据集获取与介绍…

Rocky Linux archive下载地址

Index of /vault/rocky/https://dl.rockylinux.org/vault/rocky/

2024年安全员-A证证考试题库及安全员-A证试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年安全员-A证证考试题库及安全员-A证试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大纲随机出的…

ArcGIS arcpy代码工具——批量要素裁剪栅格影像

系列文章目录 ArcGIS arcpy代码工具——批量对MXD文件的页面布局设置修改 ArcGIS arcpy代码工具——数据驱动工具批量导出MXD文档并同步导出图片 ArcGIS arcpy代码工具——将要素属性表字段及要素截图插入word模板 ArcGIS arcpy代码工具——定制属性表字段输出表格 ArcGIS arc…

C++ 79 之 自己写异常类

#include <iostream> #include <string> using namespace std;class MyOutOfRange : public exception{ // 选中exception右键 转到定义 复制一份 virtual const char* what() const _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_NOTHROW 进行函数重写 public: string m_msg;M…

计算机毕设JAVA——学习考试管理系统(基于SpringBoot+Vue前后端分离的项目)

学习考试管理系统 概要系统架构技术运行环境系统功能项目演示图片 概要 网络上许多计算机毕设项目开发前端界面设计复杂、不美观&#xff0c;而且功能结构十分单一&#xff0c;存在很多雷同的项目&#xff1a;页面基本上就是套用固定模板&#xff0c;换个颜色、改个文字&#…

实战电商大数据项目搭建||电商大数据采集||电商API接口

我会提供给你大概1亿条真实的互联网用户上网数据&#xff0c;至于来源&#xff0c;我先不告诉你&#xff0c;绝对是你在网络上无法找到的宝贵数据源。 此外&#xff0c;还会给你提供一个基于当前数据特点而设计的大数据处理方案。 当然&#xff0c;为了防止用户的隐私部分被泄露…

Yarn的安装与使用详细教程

一、引言 Yarn是一个快速、可靠、安全的JavaScript包管理器&#xff0c;用于管理项目的依赖项。与npm&#xff08;Node.js的包管理器&#xff09;类似&#xff0c;Yarn具有许多优点&#xff0c;包括更快的安装速度、更简洁的输出以及更安全的依赖解析。在本教程中&#xff0c;…

nuscenes 数据集学习笔记

目录 这个讲的比较细致&#xff1a; 安装&#xff1a; 数据信息类型: Data 传感器 读取数据&#xff1a; boxes3d_to_corners3d 这个讲的比较细致&#xff1a; NuSences 数据集解析以及 nuScenes devkit 的使用_nuscenes-devkit-CSDN博客 安装&#xff1a; pip install…

如何提升外链网站的收录率?

要提高外链网站的收录率&#xff0c;要明确的一点是&#xff0c;被收录的外链才能发挥最大的作用&#xff0c;因此&#xff0c;提升收录率是首要任务。一个有效的方法是使用GPC爬虫池&#xff0c;这样可以大幅度提高谷歌蜘蛛对众多外链网站页面的抓取频率 通过GPC爬虫池的引导…

【LeetCode热题 100】螺旋矩阵

leetcode原地址&#xff1a;https://leetcode.cn/problems/spiral-matrix/description 描述 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8…

【笔记】记录一下git忽略文件.gitignore文件,方便查找

.gitignore文件 常见需要忽略的文件和目录 HELP.md target/ !.mvn/wrapper/maven-wrapper.jar !**/src/main/** !**/src/test/**### STS ### .apt_generated .classpath .factorypath .project .settings .springBeans .sts4-cache### IntelliJ IDEA ### .idea *.iws *.iml *…

使用Scala爬取安居客房产信息并存入CSV文件

使用Scala爬取安居客房产信息并存入CSV文件 本篇博客中&#xff0c;我们将介绍如何使用Scala语言编写一个简单的程序&#xff0c;来爬取安居客&#xff08;Anjuke&#xff09;网站上的房产信息&#xff0c;并将这些信息存储到CSV文件中。这个示例将涵盖HTTP请求、HTML解析、数…

00 - matlab m_map地学绘图工具安装及简单使用教程

00 - matlab m_map地学绘图工具安装及简单使用教程 0. 引言1. m_map工具的获取及配置过程2. 绘图示例3. 结语 0. 引言 m_map是MATLAB中的一个绘图工具包&#xff0c;用于绘制地图和地理数据。它提供了一系列函数&#xff0c;可以用来绘制地理投影、添加地理特征、绘制等值线图等…

用nginx设置缓存

浏览器缓存 首先明白http的几个字段&#xff0c; 但expire不一定有用&#xff0c;火狐依然每次304&#xff0c; 谷歌即使没有expire也一样用浏览器缓存&#xff0c;不发送请求。难道expire没有 谷歌就认为永久&#xff1f;expire有就遵守时间&#xff1f; Chrome中的from me…

「漏洞复现」真内控国产化开发平台 preview 任意文件读取漏洞

0x01 免责声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;作者不为此承担任何责任。工具来自网络&#xff0c;安全性自测&#xff0c;如有侵权请联系删…

[SAP ABAP] 运算符与操作符

1.算数运算符 算术运算符描述加法-减法*乘法/除法MOD取余 示例1 输出结果: 输出结果: 2.比较运算符 比较运算符描述示例 等于 A B A EQ B <> 不等于 A <> B A NE B >大于 A > B A GT B <小于 A < B A LT B >大于或等于 A > B A GE B <小…

AI都那么发达了,我还有必要学习编程吗

尽管 AI 技术在不断发展&#xff0c;但学习编程仍然具有重要的意义和价值。 以下是一些原因&#xff1a; 培养逻辑思维和解决问题的能力&#xff1a;编程需要你思考问题、设计算法和解决难题。通过学习编程&#xff0c;你可以锻炼自己的逻辑思维能力&#xff0c;提高分析和解决…

用Python实现抖音新作品监控助手,实时获取博主动态

声明&#xff1a; 本文以教学为基准、本文提供的可操作性不得用于任何商业用途和违法违规场景。本人对任何原因在使用本人中提供的代码和策略时可能对用户自己或他人造成的任何形式的损失和伤害不承担责任。包含关注&#xff0c;点赞等 该项目的主要功能是通过Python代码&…