【最优化方法】无约束非线性函数

2023-11-02 11:58

本文主要是介绍【最优化方法】无约束非线性函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

向量投影证明

b 1 = d ∗ a 1 ∣ a 1 ∣ d = ∣ a 2 ∣ ∗ c o s θ c o s = ( a 2 , a 1 ) ∣ a 2 ∣ ∣ a 1 ∣ b_1 = d * \frac{a_1}{|a_1|} \\ d = |a_2| * cos\theta \\ cos = \frac{(a_2,a_1)}{|a_2||a_1|} b1=da1a1d=a2cosθcos=a2a1(a2,a1)
由上面3个式子最终得到
b 1 = ( a 2 , a 1 ) ( a 1 , a 1 ) a 1 b1 = \frac{(a_2,a_1)}{(a_1,a_1) } a_1 b1=(a1,a1)(a2,a1)a1

施密特正交化


我们想要构造正交的基坐标系,我们希望各个坐标最好是能够互相正交的,我们让
b 1 = a 1 b_1 = a_1 b1=a1
另一个坐标应该是 b 2 b_2 b2,这个坐标可以根据向量的运算得到
b 2 = a 2 − b 1 b 1 = a 2 , b 1 ( b 1 , b 1 ) b 1 b_2 = a_2 - b_1 \\ b_1 = \frac{a_2,b_1}{(b_1,b_1)} b1 b2=a2b1b1=(b1,b1)a2,b1b1
拓展到高维度也是同样道理,具体可以参考施密特正交化高维度的方法。

最速下降法

二次型

二次型是一个从向量到标量的函数:
f ( x ) = 1 2 x T A x − b x + c f(x) = \frac{1}{2} x^{T} A x - bx + c f(x)=21xTAxbx+c
它的导数是:
A x − b = 0 A x = b Ax-b = 0 \\ Ax = b Axb=0Ax=b
我们可以将计算 A x = b Ax= b Ax=b转为计算二次型的最值问题。
在这里插入图片描述
上图为不同的 A 对 f(x) 的图像的影响。(a)正定矩阵的二次型;(b)负定矩阵的二次型;©奇异矩 阵和非正定矩阵的二次型;(d)不定矩阵的二次型:此时解是一个鞍点,梯度法和 CG 均无法处理该问题。

下降方向

最速下降法也就是梯度法,其中梯度是函数值变化最大的方向。最终通过求导的方式来确定步长。
d = − ∇ f ( x ) x i + 1 = x i + α d d = - \nabla f(\bold x) \\ x_{i+1} = x_i + \alpha d \\ d=f(x)xi+1=xi+αd

证明垂直和最佳步长

现在我们已经确定了下降方向,接下来我们要确定下降的步长 α \alpha α, 步长我们我们使用精准的公式法进行计算。我们令函数为关于
ψ ( α ) = f ( x i + 1 ) ∇ ψ ( α ) = ∂ f ( x i + 1 ) ∂ α = ∂ f ( x i + 1 ) ∂ x i + 1 ∂ x i + 1 ∂ α = ( A x i + 1 − b ) d i = d i + 1 d i = 0 \psi(\alpha) = f(x_{i+1}) \\ \\ \nabla \psi(\alpha)=\frac{\partial f(x_{i+1})}{\partial \alpha} = \frac{\partial f(x_{i+1})}{\partial x_{i+1}} \frac{\partial x_{i+1}}{\partial \alpha} = (A\bold x_{i+1} -b) \bold d_i = d_{i+1} d_i = 0 ψ(α)=f(xi+1)ψ(α)=αf(xi+1)=xi+1f(xi+1)αxi+1=(Axi+1b)di=di+1di=0
所以证明了两次的搜索方向是互相垂直的。下面将计算出 α \alpha α的具体数值:
d i + 1 d i = ( A x i + 1 − b ) T d = ( A ( x i + α d ) − b ) T d i = ( A x i + α A d i − b ) T d i = ( A x i − b + α A d i ) T d i = ( − d i + α A d i ) T d i = − d i T d i + α d i T A d i = 0 \bold d_{i+1} \bold d_i \\ = (A\bold x_{i+1} - b)^T \bold d \\ = (A(x_i + \alpha d) - b)^T d_i \\ = (Ax_i + \alpha A d_i -b)^T d_i \\ = (Ax_i -b + \alpha A d_i)^Td_i \\ = ( -d_i + \alpha A d_i)^T d_i \\= -d_i ^T d_i + \alpha d^T_i A d_{i} =0 di+1di=(Axi+1b)Td=(A(xi+αd)b)Tdi=(Axi+αAdib)Tdi=(Axib+αAdi)Tdi=(di+αAdi)Tdi=diTdi+αdiTAdi=0
化简得到

α = d i T d i d i T A d i \alpha = \frac{d_i^Td_i}{d_i^TAd_i} α=diTAdidiTdi

共轭梯度下降

###

这篇关于【最优化方法】无约束非线性函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/330431

相关文章

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

MySQL count()聚合函数详解

《MySQLcount()聚合函数详解》MySQL中的COUNT()函数,它是SQL中最常用的聚合函数之一,用于计算表中符合特定条件的行数,本文给大家介绍MySQLcount()聚合函数,感兴趣的朋... 目录核心功能语法形式重要特性与行为如何选择使用哪种形式?总结深入剖析一下 mysql 中的 COUNT

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

MySQL 中 ROW_NUMBER() 函数最佳实践

《MySQL中ROW_NUMBER()函数最佳实践》MySQL中ROW_NUMBER()函数,作为窗口函数为每行分配唯一连续序号,区别于RANK()和DENSE_RANK(),特别适合分页、去重... 目录mysql 中 ROW_NUMBER() 函数详解一、基础语法二、核心特点三、典型应用场景1. 数据分

在Golang中实现定时任务的几种高效方法

《在Golang中实现定时任务的几种高效方法》本文将详细介绍在Golang中实现定时任务的几种高效方法,包括time包中的Ticker和Timer、第三方库cron的使用,以及基于channel和go... 目录背景介绍目的和范围预期读者文档结构概述术语表核心概念与联系故事引入核心概念解释核心概念之间的关系

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN