最优化第六讲练习题

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

def f(vec):
    x1,x2=vec[0],vec[1]
    return x1*x1/2+2*x2*x2

def 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@-res
    tmp=x1
    x1=x1+d1
    x0=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*x2

def 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)/2
    else:
        return -(2+x2+2*x1)/2
    
x0=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=None
    var1=None
    cons2=None
    var2=None

def poly_weifen(vec,x):
    vec.cons1*=2
    vec.cons1+=x[1]
    vec.cons1+=2
    vec.var1*=2

    vec.cons2*=2
    vec.cons2+=x[0]
    vec.cons2-=3
    vec.var2*=2
    return vec

def 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=x1
    x1=x1+alpha*d1
    x0=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*x2

def 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)/2
    else:
        return (2*x2-8)*x1/(8-2*x2)

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

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

    vec.cons2*=2
    vec.cons2-=x[0]*x[0]
    vec.var2*=2
    return 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)无法收敛

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何让表格标题栏具有粘性?

让表格标题栏具有粘性 什么意思呢? 就是当表格的内容(行数)比较多的时候, 滚动屏幕,看下面的内容的时候, 表格标题栏可以一直显示在屏幕最上方, 以前呢, 我会通过JSCSS 的 pos…

ffmpeg音视频开发从入门到精通——ffmpeg实现音频抽取

文章目录 FFmpeg 实现音频流抽取1. 包含FFmpeg头文件与命名空间声明2. 主函数与参数处理3. 打开输入文件4. 获取文件信息5. 查找音频流6. 分配输出文件上下文7. 猜测输出文件格式8. 创建新的音频流9. 打开输出文件10. 写入文件头信息11. 读取并写入音频数据12. 写入文件尾部信息…

STM32读取芯片内部温度

基于stm32f103cbt6这款芯片,原理部分请参考其他文章,此文章为快速上手得到结果,以结果为导向。 1.基础配置 打开stm32cubemx只需要勾选中 ADC1 Temperature Sensor Channel 2.代码分析 /** 函数名:float GetAdcAnlogValue(voi…

05 - matlab m_map地学绘图工具基础函数 - 设置比例尺指北针

05 - matlab m_map地学绘图工具基础函数 - 设置比例尺指北针 0. 引言1. 关于m_scale2. 关于m_ruler3. 关于m_northarrow4. 结语 0. 引言 本篇介绍下m_map中添加指北针(m_northarrow)、比例尺(m_ruler)和进行比例缩放(m_scale)的函数及其用法 。 1. 关于m_scale m_scale用于图件…

python库离线安装方法(pyqt5离线安装方法)

在某些情况下,我们的计算机是无法联网的。 网上大部分方法: 这些方法都有个问题,就是库是需要依赖其它库的,你不知道它需要依赖什么库,就是提供了依赖库的列表也麻烦,依赖库也是有对应版本要求的&#xf…

C++程序设计基础实践:学生信息管理系统

目录 1 系统介绍 2 系统设计 3 设计结果 4 源代码 近来有空闲,把前几个学期做的实验上传上来。如有错误的地方欢迎大佬批评指正,有更好的方法也期待您的分享~ 实验要求 本课程要完成一个学生信息管理系统的设计与实现,可实现对于学生信息…

kafka(五)spring-kafka(2)详解与demo

一、简单的收发消息demo 父工程pom&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&qu…

Android面试题:App性能优化之Java和Kotlin常见的数据结构

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 Java常见数据结构特点 ArrayList ArrayList底层是基于数组实现add、删除元素需要进行元素位移耗性能&#xff0c;但查找和修改块适合不需要频…

全面国产化信创适配改造方案说明

一、概叙 系统的全面国产化适配改造需要从多个方面进行考虑&#xff0c;改造前需要进行充分的论证&#xff0c;在满足具体业务场景的前提下&#xff0c;以确保系统的稳定性和安全性&#xff0c;同时还要考虑技术的发展&#xff0c;不断优化和更新。因此全面国产化适配改造也面临…

沙奇里再造世界波,容声注定与经典结缘

足球的世界&#xff0c;就像人生一样&#xff0c;包罗万象&#xff0c;千人千面。有人天生就是王者&#xff0c;有人怎么努力也碌碌无为&#xff0c;而有的人&#xff0c;平时看似没有那么闪耀&#xff0c;却注定为大场面而生。 比如瑞士国脚沙奇里。在对阵苏格兰的欧洲杯小组…

【CT】LeetCode手撕—415. 字符串相加

目录 题目1- 思路2- 实现⭐415. 字符串相加——题解思路 3- ACM 实现 题目 原题连接&#xff1a;415. 字符串相加 1- 思路 模式识别&#xff1a;字符串相加 逆向遍历过程模拟 数据结构 ① String res &#xff1a;记录res 、② carry 记录进位值① 定义两个整数遍历 nums1 …

【第一性原理】邓巴数字

这里写自定义目录标题 什么是邓巴数字邓巴数背后的科学历史上各个组织的人数与邓巴数字的关系在人类进化中的意义现代社会中邓巴数字的体现邓巴数字的意义其他与沟通相关的数据注意事项结论参考 罗宾邓巴教授生于1947年&#xff0c;进化心理学家&#xff0c;牛津大学教授&#…

【SkiaSharp绘图09】SKBitmap属性详解

文章目录 SKBitmap与Bitmap性能对比对比结果 构造函数SKBitmap()SKBitmap(SKImageInfo)SKBitmap(Int32, Int32, SKColorType, SKAlphaType, SKColorSpace) SKBitmap属性AlphaTypeByteCountBytesBytesPerPixelColorSpaceColorTypeDrawsNothingInfoIsEmptyIsImmutableIsNullPixel…

投资者回归理性?美股去年备受追捧的AI概念股,今年超过一半在下跌

喊两句AI就能圈钱的日子一去不复返了&#xff0c;未来企业要用实打实的业绩说话。 正文 去年备受追捧的AI概念股中&#xff0c;今年绝大多数已经开始下跌。面对越来越谨慎的投资者&#xff0c; 上市公司或许很难再打着AI的旗号圈钱。 今年&#xff0c;标普500指数中有60%的股…

动态规划:基本概念

Dynamic Programming 动态规划&#xff08;Dynamic Programming, DP&#xff09; 是一种算法设计技巧&#xff0c;通常用来解决具有重叠子问题和最优子结构性质的问题。它通过将问题分解为更小的子问题&#xff0c;逐步解决这些子问题并将结果存储起来&#xff0c;以避免重复计…

U-Net for Image Segmentation

1.Unet for Image Segmentation 笔记来源&#xff1a;使用Pytorch搭建U-Net网络并基于DRIVE数据集训练(语义分割) 1.1 DoubleConv (Conv2dBatchNorm2dReLU) import torch import torch.nn as nn import torch.nn.functional as F# nn.Sequential 按照类定义的顺序去执行模型&…

win10/11磁盘管理

win10/11磁盘管理 合并磁盘分区的前提是你的两个磁盘区域是相邻的&#xff0c;比如如下&#xff1a; 如果需要吧这个磁盘进行分解&#xff0c;你可以选择压缩一部分磁盘或者是直接删除卷 我这里的话&#xff0c;因为压缩出来的卷和C盘好像是不相邻的&#xff08;我之前做过&…

【SpringCloud-Seata源码分析2】

文章目录 分支事务注册-客户端分支事务服务端的执行 分支事务注册-客户端 第一篇我们将全局事务启动&#xff0c;以及开启源码分析完成了&#xff0c;现在我们需要看一下分支事务注册。 我们分支事务的开始需要从PreparedStatementProxy#executeUpdate中去看。 public class…

GPT-4o一夜被赶超,Claude 3.5一夜封王|快手可灵大模型推出图生视频功能|“纯血”鸿蒙大战苹果AI|智谱AI“钱途”黯淡|月之暗面被曝进军美国

快手可灵大模型推出图生视频功能“纯血”鸿蒙大战苹果AI&#xff0c;华为成败在此一举大模型低价火拼间&#xff0c;智谱AI“钱途”黯淡手握新“王者”&#xff0c;腾讯又跟渠道干上了“美食荒漠”杭州&#xff0c;走出一个餐饮IPOGPT-4o一夜被赶超&#xff0c;Anthropic推出Cl…

Rocky Linux archive下载地址

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