当前位置: 首页 > news >正文

【运筹学】前言:基础知识

💞💞 前言

hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹
在这里插入图片描述

💥个人主页:大耳朵土土垚的博客
💥 所属专栏:运筹学基础
这里将会不定期更新有关运筹学的内容,希望大家多多点赞关注收藏💖💖

线性代数是通过一系列的手段去”折腾“方程组,提取其系统信息;
而运筹学要解决一般视角下的最优化问题,寻求最好的解决办法,也就是寻找一般函数的最大最小值问题。
关于寻求最优解我们要记住两步:
第一步我们要数学建模,第二步求解这个数学模型

在学习运筹学之前我们先要储备一些高数相关知识,比如极值最值,通过拉格朗日乘数法求解极值等。

高数基础

1.最值和极值

最值:整体性
极值:局部性
设f(x)在 x 0 x_0 x0的邻域(附近),若存在ɛ,使得在区间( x 0 x_0 x0-ɛ, x 0 x_0 x0+ɛ)上f(x)>=f( x 0 x_0 x0)(或者f(x)=<f( x 0 x_0 x0)),则f( x 0 x_0 x0)为极小值(或者极大值)

2.费马定理

这里定义是自己理解得出并不代表标准的定义:

f( x 0 x_0 x0)是极值并且f(x)在 x 0 x_0 x0处可导,则f’( x 0 x_0 x0) = 0;

注意这里不能反推:
例如f(x) = x 3 x^3 x3 在x=0处f’(0) = 0,但是f(0)并不是极值

3.利用费马定理求最值

条件

f(x)定义域[a,b],连续可导

解决思路

找出所有极值点,在加上边界点a,b,代入f(x),最后一起比较出最值

而找出所有极值点就可以利用费马定理,通过找出导数为0的点来规避求极值,先不管求出来的是不是极值点,反正最后和边界点一起代入原函数,找出最大最小值就行。
例题
f ( x ) = 3 x 2 − 6 x + 7 f(x) = 3x^2 - 6x +7 f(x)=3x26x+7 定义域[-10,50]

第一步:求导

①f’(x) = 6x-6

第二步:求导数为0时x值

f’(x) = 6x-6=0
②x=1

第三步将x=1和边界点-10和50带入f(x)中,求出最值

③f(1) = 4
④f(-10) = 367
⑤f(50) = 7207

最值为7207,这样就规避了先求极值再求最值

如果定义域为[10,20]就不需要求f(1)了,直接比较边界点就行

4.多元函数的极值与最值

✨拉格朗日乘数法

引例: 求最值

目标函数:

w = f ( x , y , z ) = 3 x 2 + 2 y 2 − 4 z 2 w=f(x,y,z)=3x^2+2y^2-4z^2 w=f(x,y,z)=3x2+2y24z2

约束条件:

g 1 : 3 x + 4 y − z = 0 g_1 : 3x+4y-z=0 g1:3x+4yz=0
g 2 : 6 x 2 + y − z 2 = 0 g_2 : 6x^2+y-z^2=0 g2:6x2+yz2=0

拉格朗日乘数法求解

(1)构造新函数

几个约束条件就引入几个拉格朗日乘子,这里有两个约束条件 g 1 g_1 g1 g 2 g_2 g2,就引入两个拉格朗日乘子 ʎ 1 ʎ_1 ʎ1 ʎ 2 ʎ_2 ʎ2来构造一个新函数 F ( x , y , z , ʎ 1 , ʎ 2 ) = f ( x , y , z ) + ʎ 1 ∗ g 1 + ʎ 2 ∗ g 2 F(x,y,z,ʎ_1,ʎ_2) = f(x,y,z) + ʎ_1*g_1 +ʎ_2*g_2 F(x,y,z,ʎ1,ʎ2)=f(x,y,z)+ʎ1g1+ʎ2g2

(2)求偏导,并令偏导等于0

{ ə F ə x = 6 x + 3 ʎ 1 x + 12 ʎ 2 x = 0 ə F ə y = 0 ə F ə z = 0 ə F ə ʎ 1 = 0 ə F ə ʎ 2 = 0 \begin{cases} \frac{əF}{əx} = 6x +3ʎ_1x + 12ʎ_2x = 0\\ \frac{əF}{əy} = 0\\ \frac{əF}{əz} = 0\\ \frac{əF}{əʎ_1} = 0\\ \frac{əF}{əʎ_2} = 0 \end{cases} əxəF=6x+3ʎ1x+12ʎ2x=0əyəF=0əzəF=0əʎ1əF=0əʎ2əF=0

求出偏导将其等于0,求出解,代入原函数f(x,y,z)中,求出最值

以上就是拉格朗日乘数法的使用,接下来我们做一道例题巩固一遍

例题:
在抛物面 z = ( x + 2 ) 2 + 1 4 y 2 z=(x+2)^2 + \frac{1}{4}y^2 z=(x+2)2+41y2上求到点(3,0,-1)的最近距离

(1)建模

通过读题,我们发现最近距离题目中没给出,我们需要自己写,此外在抛物面 z = ( x + 2 ) 2 + 1 4 y 2 z=(x+2)^2 + \frac{1}{4}y^2 z=(x+2)2+41y2上这是一个约束条件所以建模如下:

目标函数

距离 d = f ( x , y , z ) = ( x − 3 ) 2 + ( y − 0 ) 2 + ( z + 1 ) 2 d = f(x,y,z) = \sqrt{(x-3)^2 + (y-0)^2 + (z+1)^2} d=f(x,y,z)=(x3)2+(y0)2+(z+1)2

约束条件

g 1 : z = ( x + 2 ) 2 + 1 4 y 2 g_1:z=(x+2)^2 + \frac{1}{4}y^2 g1:z=(x+2)2+41y2

这里需要转换成一边等于0的形式:

g 1 : ( x + 2 ) 2 + 1 4 y 2 − z = 0 g_1:(x+2)^2 + \frac{1}{4}y^2 - z =0 g1:(x+2)2+41y2z=0

(2)引入拉格朗日乘子ʎ_1,构建新函数 F ( x , y , z , ʎ 1 ) F(x,y,z,ʎ_1) F(x,y,z,ʎ1)

F ( x , y , z , ʎ 1 ) = f ( x , y , z ) + ʎ 1 g 1 F(x,y,z,ʎ_1) = f(x,y,z) + ʎ_1g_1 F(x,y,z,ʎ1)=f(x,y,z)+ʎ1g1

= ( x − 3 ) 2 + ( y − 0 ) 2 + ( z + 1 ) 2 + ʎ 1 [ ( x + 2 ) 2 + 1 4 y 2 − z ] \sqrt{(x-3)^2 + (y-0)^2 + (z+1)^2} + ʎ_1[(x+2)^2 + \frac{1}{4}y^2 - z] (x3)2+(y0)2+(z+1)2 +ʎ1[(x+2)2+41y2z]

(3)求偏导

我们发现这里有根号求导不是很简单所以我们可以换个方法,求最小的距离和求最小距离的平方本质上都可以得出解,所以我们就可以将F变一下再求偏导:
F ′ = ( x − 3 ) 2 + ( y − 0 ) 2 + ( z + 1 ) 2 + ʎ 1 [ ( x + 2 ) 2 + 1 4 y 2 − z ] F' = (x-3)^2 + (y-0)^2 + (z+1)^2 + ʎ_1[(x+2)^2 + \frac{1}{4}y^2 - z] F=(x3)2+(y0)2+(z+1)2+ʎ1[(x+2)2+41y2z]

{ ə F ə x = 6 x + 3 ʎ 1 x + 12 ʎ 2 x = 0 ə F ə y = 2 y + ʎ 1 2 y = 0 ə F ə z = 2 ( z + 1 ) − ʎ 1 = 0 ə F ə ʎ 1 = ( x + 2 ) 2 + 1 4 y 2 − z = 0 \begin{cases} \frac{əF}{əx} = 6x +3ʎ_1x + 12ʎ_2x = 0\\ \frac{əF}{əy} = 2y + \frac{ʎ_1}{2}y = 0\\ \frac{əF}{əz} = 2(z+1) - ʎ_1 = 0\\ \frac{əF}{əʎ_1} = (x+2)^2 + \frac{1}{4}y^2 - z = 0 \end{cases} əxəF=6x+3ʎ1x+12ʎ2x=0əyəF=2y+2ʎ1y=0əzəF=2(z+1)ʎ1=0əʎ1əF=(x+2)2+41y2z=0

(4)求解

有唯一解x = -1,y =0;z = 1,ʎ_1=4

说明:拉格朗日乘数法只适用于强约束条件,也就是约束条件是=的情况,而弱约束条件<=或者>=则可以使用KKT定理

5.求极值

✨海森(Hessian)矩阵

对于n元 f ( x 1 , x 2 . . . x n ) f(x_1,x_2...x_n) f(x1,x2...xn)在点 M 0 ( a 1 , a 2 . . . a n ) M_0(a_1,a_2...a_n) M0(a1,a2...an)的领域内有二阶连续偏导,若 ə F ə x i ∣ M 0 ( a 1 , a 2 . . . a n ) = 0 \frac{əF}{əx_i}|_{M_0(a_1,a_2...a_n)} = 0 əxiəFM0(a1,a2...an)=0
矩阵 A M 0 = [ ə 2 F ə x 1 2 ə 2 F ə x 1 ə x 2 ⋯ ə 2 F ə x 1 ə x n ə 2 F ə x 2 ə x 1 ə 2 F ə x 2 ə x 2 ⋯ ə 2 F ə x 2 ə x n ⋮ ⋮ ⋱ ⋮ ə 2 F ə x n ə x 1 ə 2 F ə x n ə x 2 ⋯ ə 2 F ə x n ə x n ] ∣ M 0 ( a 1 , a 2 . . . a n ) A_{M_0}=\begin{bmatrix} {\frac{ə^2F}{əx_1^2}}&{\frac{ə^2F}{əx_1əx_2}}&{\cdots}& {\frac{ə^2F}{əx_1əx_n}}\\ {\frac{ə^2F}{əx_2əx_1}}&{\frac{ə^2F}{əx_2əx_2}}&{\cdots}& {\frac{ə^2F}{əx_2əx_n}}\\ {\vdots}&{\vdots}&{\ddots}&{\vdots}\\ {\frac{ə^2F}{əx_nəx_1}}&{\frac{ə^2F}{əx_nəx_2}}&{\cdots}& {\frac{ə^2F}{əx_nəx_n}} \end{bmatrix}|M_0(a_1,a_2...a_n) AM0= əx12ə2Fəx2əx1ə2Fəxnəx1ə2Fəx1əx2ə2Fəx2əx2ə2Fəxnəx2ə2Fəx1əxnə2Fəx2əxnə2Fəxnəxnə2F M0(a1,a2...an)

并将点 M 0 M_0 M0代入该矩阵中

ə 2 F ə x n ə x 1 \frac{ə^2F}{əx_nəx_1} əxnəx1ə2F表示F先对 x n x_n xn求偏导,然后再对 x 1 x_1 x1求偏导

如果矩阵 A M 0 A_{M_0} AM0是正定的,则F在 M 0 M_0 M0处取得极小值.
如果矩阵 A M 0 A_{M_0} AM0是负定的,则F在 M 0 M_0 M0处取得极大值.
如果矩阵 A M 0 A_{M_0} AM0都不是,则 M 0 M_0 M0不是极值点.
如果矩阵 A M 0 A_{M_0} AM0是半正(负)定,则 M 0 M_0 M0是可疑点(该法失效,另寻他法).

这里了解一下就行:正定矩阵是指一个矩阵的所有特征值都为正数的方阵。换句话说,对于一个n阶方阵A,如果所有特征值λi都满足λi > 0,则A是正定矩阵。
更具体地说,对于一个n阶实对称矩阵A,如果对于任意非零向量x,都有x^T * A * x > 0,则A是正定矩阵。在这种情况下,A的所有特征值都是正数。
正定矩阵具有很多重要的性质和应用。例如,在优化问题中,正定矩阵可以保证目标函数的二次型部分是凸函数,从而保证最优解的存在性和唯一性。在数值计算中,正定矩阵也可以用于解线性方程组和最小二乘问题,提高计算的稳定性和效率。

解题方法

对于n元 f ( x 1 , x 2 . . . x n ) f(x_1,x_2...x_n) f(x1,x2...xn),直接求每一个的偏导然后得出若干个点,对于每个点求其海森矩阵,进行判断

例题

f ( x , y ) = 2 x 2 + 6 x y + y 2 f(x,y) = 2x^2 + 6xy +y^2 f(x,y)=2x2+6xy+y2 在自然定义域内,求极值点
①求偏导
{ ə F ə x = 4 x + 6 y ə F ə y = 2 y + 6 x \begin{cases} \frac{əF}{əx} = 4x+6y\\ \frac{əF}{əy} = 2y+6x \end{cases} {əxəF=4x+6yəyəF=2y+6x
②令偏导为0
{ 4 x + 6 y = 0 2 y + 6 x = 0 \begin{cases} 4x+6y = 0\\ 2y+6x=0 \end{cases} {4x+6y=02y+6x=0
求出点M(0,0)
③求二次偏导得出海森矩阵

{ ə 2 F ə x 2 = 4 ə 2 F ə x ə y = 6 ə 2 F ə y ə x = 6 ə 2 F ə y 2 = 2 \begin{cases} \frac{ə^2F}{əx^2} = 4\\ \frac{ə^2F}{əxəy} = 6\\ \frac{ə^2F}{əyəx} = 6\\ \frac{ə^2F}{əy^2} = 2 \end{cases} əx2ə2F=4əxəyə2F=6əyəxə2F=6əy2ə2F=2

A m = [ 4 6 6 2 ] A_m= \begin{bmatrix} {4}&{6}\\ {6}&{2} \end{bmatrix} Am=[4662]
④判断是否为极值点

矩阵 A m A_m Am是正定矩阵所以在 M 0 M_0 M0处取得极小值

相关文章:

  • 【MATLAB】数字滤波器的设计
  • 详解Java ThreadLocal
  • vi和vim有什么不同?
  • android-mvp模式
  • GPT-4 与 GPT-4 Turbo有什么区别?
  • 记一次重定向问题(浏览器安全)解决
  • Java基础——Optional
  • Vue框架-路由
  • vuejs路由和组件系统
  • 算法-可完成的最大任务数
  • Linux防火墙(以iptables为例)
  • 十种常用数据分析模型
  • 万界星空科技定制化MES系统帮助实现数字化生产
  • 自建公式,VBA在Excel中解一元一次方程
  • docker命令总结
  • JavaScript新鲜事·第5期
  • Java教程_软件开发基础
  • jQuery(一)
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • SpringBoot几种定时任务的实现方式
  • 大快搜索数据爬虫技术实例安装教学篇
  • 基于 Babel 的 npm 包最小化设置
  • 全栈开发——Linux
  • 如何胜任知名企业的商业数据分析师?
  • 新手搭建网站的主要流程
  • Java总结 - String - 这篇请使劲喷我
  • ​插件化DPI在商用WIFI中的价值
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • ###C语言程序设计-----C语言学习(6)#
  • #数据结构 笔记三
  • (23)Linux的软硬连接
  • (分享)自己整理的一些简单awk实用语句
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (十三)Flask之特殊装饰器详解
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (四)软件性能测试
  • (算法)N皇后问题
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • ******之网络***——物理***
  • *算法训练(leetcode)第四十天 | 647. 回文子串、516. 最长回文子序列
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .NET CLR Hosting 简介
  • .Net Core中的内存缓存实现——Redis及MemoryCache(2个可选)方案的实现
  • .net mvc 获取url中controller和action
  • .NET成年了,然后呢?
  • .Net接口调试与案例
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • @Bean, @Component, @Configuration简析
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • @Validated和@Valid校验参数区别
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)
  • [ vulhub漏洞复现篇 ] Jetty WEB-INF 文件读取复现CVE-2021-34429
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...