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

人工智能与机器学习原理精解【6】

文章目录

  • 数值优化
    • 基础
    • 理论
      • 凹凸性定义在国外与国内存在不同
      • 国内定义
      • 国外定义
      • 总结
        • 示例与说明
        • 注意事项
      • 国内凹凸性二阶定义的例子
        • 凹函数例子
        • 凸函数例子
      • 凸函数(convex function)的开口方向
      • 凸函数的二阶导数
      • 凸函数的二阶定义
        • 单变量函数的二阶定义
        • 多变量函数的二阶定义
        • 凸函数的应用
      • 凸函数
        • 正式定义
        • 凸函数的例子
      • 凹函数
        • 正式定义
        • 凹函数的例子
      • 函数的凹凸性
        • 凸函数(Convex Function)
        • 凹函数(Concave Function)
        • 拟凸函数(Quasiconvex Function)
        • 拟凹函数(Quasiconcave Function)
        • 伪凸函数(Pseudoconvex Function)
        • 伪凹函数(Pseudoconcave Function)
  • 参考文献

数值优化

基础

  • 凸函数的所有驻点都是全局极小点
  • 凸函数是一个定义在某个向量空间的凸子集C上的实值函数
    在这里插入图片描述
  • f ′ ′ ( a ) ≥ 0 < = > 凸函数 f''(a) \ge 0 <=>凸函数 f′′(a)0<=>凸函数
  • f ′ ′ ( a ) ≤ 0 < = > 凹函数 f''(a) \le 0 <=>凹函数 f′′(a)0<=>凹函数

在这里插入图片描述

  • ∇ 2 f ( a ) 特征值分析 \nabla^2 f(a)特征值分析 2f(a)特征值分析
    1.点a处的海森矩阵特征值非负=>凸
    2.点a处的海森矩阵特征值非正=>凹

  • 关于凸函数的二阶导数,有一个重要的性质:如果一个函数在其定义域内是二阶可导的,并且其二阶导数在该定义域内非负(即 f ′ ′ ( x ) ≥ 0 f''(x) \geq 0 f′′(x)0),则该函数是凸函数,在每一点都是凸的。这是判断凸函数的一个充分条件 (但不一定是必要条件,因为有些凸函数可能在其定义域内的某些点上不可导)

  • ∇ 2 f ( w ) 特征值总是非负的,则 ∇ 2 f ( w ) \nabla^2 f(w)特征值总是非负的,则\nabla^2 f(w) 2f(w)特征值总是非负的,则2f(w)是凸的

  • 凸函数与凹函数与函数图像的开口方向没关系,是的!完全没关系,
    它是基于函数图像上任意两点之间的线段(割线)与函数图像本身的位置关系,而不是基于函数图像的整体形状或“开口”方向。
    凸函数在几何上表现为函数图像在其定义域内的任意两点之间的线段总是在函数图像的下方或与之相切。

  • 国外定义
    在这里插入图片描述- 国内定义
    在这里插入图片描述

  • 国外定义与我们直觉相反

  • 应称为向下凹或向上凹更科学,具体叫作判断凹性
    向上凹:曲线弧位于每一点处切线的上方, f ′ ′ ( x ) > 0 f''(x)>0 f′′(x)>0
    在这里插入图片描述

向下凹:曲线弧位于每一点处切线的下方, f ′ ′ ( x ) < 0 f''(x)<0 f′′(x)<0
在这里插入图片描述

  • f ( w ) = w 3 + w 2 + w 是凸函数吗? f(w)=w^3+w^2+w是凸函数吗? f(w)=w3+w2+w是凸函数吗?
    f ′ ( w ) = 3 w 2 + 2 w + 1 f ′ ′ ( w ) = 6 w + 2 f ′ ′ ( w ) 不能总是保证非负性,所以不是凸函数 w ≥ 0 = > 凸函数 w ≤ 0 = > 凹函数 f'(w)=3w^2+2w+1 \\f''(w)=6w+2 \\f''(w)不能总是保证非负性,所以不是凸函数 \\w \ge 0=>凸函数 \\w \le 0=>凹函数 f(w)=3w2+2w+1f′′(w)=6w+2f′′(w)不能总是保证非负性,所以不是凸函数w0=>凸函数w0=>凹函数

理论

下面是文心一言的自动生成

凹凸性定义在国外与国内存在不同

凹凸性定义在国内外确实存在不同,这主要体现在数学领域,特别是在函数的图像描述上。

国内定义

在中国大陆的数学界,特别是高等数学教材中,对于函数凹凸性的定义通常遵循以下规则:

  • 凹函数:如果对于函数f(x)在区间I上的任意两点x1和x2,以及任意λ∈(0,1),都有 f ( λ x 1 + ( 1 − λ ) x 2 ) ≤ λ f ( x 1 ) + ( 1 − λ ) f ( x 2 ) f(λx_1+(1-λ)x_2)≤λf(x1)+(1-λ)f(x2) f(λx1+(1λ)x2)λf(x1)+(1λ)f(x2),则称f(x)是I上的凹函数。直观上看,凹函数的图像在这两点之间的部分总在连接这两点的线段的下方。
  • 凸函数:若上述不等式中的“≤”改为“≥”,即 f ( λ x 1 + ( 1 − λ ) x 2 ) ≥ λ f ( x 1 ) + ( 1 − λ ) f ( x 2 ) f(λx_1+(1-λ)x_2)≥λf(x_1)+(1-λ)f(x_2) f(λx1+(1λ)x2)λf(x1)+(1λ)f(x2),则称f(x)是I上的凸函数。直观上看,凸函数的图像在这两点之间的部分总在连接这两点的线段的上方

此外,如果函数f(x)在区间I上二阶可导,则f(x)在区间I上是凹函数的充要条件是 f ′ ′ ( x ) ≥ 0 f''(x)≥0 f′′(x)0;f(x)在区间I上是凸函数的充要条件是 f ′ ′ ( x ) ≤ 0 f''(x)≤0 f′′(x)0

国外定义

在国外,特别是英语国家的数学教材中,对于函数凹凸性的定义往往与国内相反:

  • 凸函数(Convex Function):通常定义为函数图像在其上方形成一个凸集,即如果对于任意两点x1和x2,以及任意λ∈(0,1),都有 f ( λ x 1 + ( 1 − λ ) x 2 ) ≤ λ f ( x 1 ) + ( 1 − λ ) f ( x 2 ) f(λx_1+(1-λ)x_2)≤λf(x1)+(1-λ)f(x2) f(λx1+(1λ)x2)λf(x1)+(1λ)f(x2),则该函数被视为凸函数。这与国内定义的凹函数相似。如果函数图像在两点之间的部分总在连接这两点线段的下方,则该函数被称为凸函数。
  • 凹函数(Concave Function):则相应地,如果上述不等式反向,即 f ( λ x 1 + ( 1 − λ ) x 2 ) ≥ λ f ( x 1 ) + ( 1 − λ ) f ( x 2 ) f(λx_1+(1-λ)x_2)\geλf(x1)+(1-λ)f(x2) f(λx1+(1λ)x2)λf(x1)+(1λ)f(x2),则该函数被视为凹函数。这与国内定义的凸函数相似。即函数图像在两点之间的部分总在连接这两点线段的上方。

总结

因此,可以看出国内外在函数凹凸性的定义上存在明显的差异。这种差异主要源于不同的数学传统和教材体系。在涉及跨国学术交流或阅读国外数学文献时,需要特别注意这一点,以避免混淆和误解。同时,也应注意到,在经济学等其他学科中,凹凸性的提法可能与数学教材中的定义一致或相反,具体应以该学科领域内的权威教材或规范为准。

示例与说明

以二次函数 y = x 2 y=x^2 y=x2为例:

  • 在国内:由于其二阶导数f’'(x)=2>0,因此该函数在实数域上是凹函数。其图像是一个开口向上的抛物线,但按照国内的凹凸性定义,它被认为是凹的,因为图像位于其任意两点间连线的下方。
  • 在国外:同样考虑这个函数,由于其图像是向上突出的抛物线,因此按照国际上的定义,它被认为是凸函数。
注意事项

需要注意的是,这种定义上的差异主要存在于数学领域,特别是在函数图像的凹凸性描述上。在其他学科或领域(如经济学、物理学等)中,关于凹凸性的定义可能会根据具体情况而有所不同。因此,在涉及凹凸性概念时,需要明确所处的学科背景和具体的定义方式。

此外,随着国际交流的加深和学术规范的统一,未来国内关于函数凹凸性的定义也有可能与国际接轨,但目前来说,这种差异仍然是存在的。

国内凹凸性二阶定义的例子

注意了!这一节的定义就是在中国大陆的数学界,关于函数凹凸性的定义与国外的定义是相反的
也就是说本节的凹函数是国际的定义,是国内的凸函数,凸函数是国际的定义,是国内的凹函数
凹凸性二阶定义主要基于函数的二阶导数来判断函数的凹凸性。具体来说,如果一个函数在某区间上的二阶导数大于0,则该函数在该区间内为凹函数;反之,如果二阶导数小于0,则该函数在该区间内为凸函数。以下是一些具体的例子来说明这一定义:

凹函数例子
  1. 二次函数:考虑函数 f ( x ) = a x 2 + b x + c f(x) = ax^2 + bx + c f(x)=ax2+bx+c,其中 a > 0 a > 0 a>0。该函数的二阶导数为 f ′ ′ ( x ) = 2 a f''(x) = 2a f′′(x)=2a,由于 a > 0 a > 0 a>0,所以 f ′ ′ ( x ) > 0 f''(x) > 0 f′′(x)>0,因此该函数在整个实数域上都是凹函数。

  2. 对数函数:函数 f ( x ) = ln ⁡ x f(x) = \ln x f(x)=lnx(在 x > 0 x > 0 x>0的区间内)。其二阶导数为 f ′ ′ ( x ) = − 1 x 2 f''(x) = -\frac{1}{x^2} f′′(x)=x21,但注意这里有一个负号,不过由于我们只关心二阶导数的符号来判断凹凸性,而在 x > 0 x > 0 x>0的区间内, − 1 x 2 -\frac{1}{x^2} x21始终小于0的相反情况(即绝对值大于0)实际上意味着函数图像是向上凹的(即凹函数)。然而,更准确地说,对于对数函数,我们通常直接通过其一阶导数或图像来判断其凹凸性,因为其二阶导数在定义域内始终为负,但这并不直接违背凹函数的定义(只是表述上需要注意)。实际上,对数函数在 ( 0 , + ∞ ) (0, +\infty) (0,+)上是凹函数,这是基于其图像或一阶导数的性质得出的。

    注意:上述对数函数的二阶导数例子在直接判断凹凸性时可能会产生混淆,因为通常我们不会直接通过二阶导数小于0来判断一个函数为凹函数(尽管在数学上这是正确的,但习惯上我们更关注二阶导数大于0的情况作为凹函数的标志)。对于对数函数,更直观的方法是观察其图像或利用一阶导数的性质。

  3. 其他凹函数:如指数函数 f ( x ) = e x f(x) = e^x f(x)=ex(在实数域上),其二阶导数 f ′ ′ ( x ) = e x > 0 f''(x) = e^x > 0 f′′(x)=ex>0,因此该函数在整个实数域上都是凹函数。

凸函数例子
  1. 二次函数:考虑函数 f ( x ) = a x 2 + b x + c f(x) = ax^2 + bx + c f(x)=ax2+bx+c,其中 a < 0 a < 0 a<0。该函数的二阶导数为 f ′ ′ ( x ) = 2 a f''(x) = 2a f′′(x)=2a,由于 a < 0 a < 0 a<0,所以 f ′ ′ ( x ) < 0 f''(x) < 0 f′′(x)<0,因此该函数在整个实数域上都是凸函数。

  2. 幂函数:函数 f ( x ) = x 3 f(x) = x^3 f(x)=x3(在实数域上)。其二阶导数为 f ′ ′ ( x ) = 6 x f''(x) = 6x f′′(x)=6x。在 x < 0 x < 0 x<0的区间内, f ′ ′ ( x ) < 0 f''(x) < 0 f′′(x)<0,因此该函数在 ( − ∞ , 0 ) (-\infty, 0) (,0)上是凸函数;而在 x > 0 x > 0 x>0的区间内, f ′ ′ ( x ) > 0 f''(x) > 0 f′′(x)>0,但这里我们只关注凸函数的例子,所以主要提及 x < 0 x < 0 x<0的情况。

  3. 其他凸函数:如绝对值函数 f ( x ) = ∣ x ∣ f(x) = |x| f(x)=x(在 x ≠ 0 x \neq 0 x=0的区间内,考虑其分段定义),虽然其二阶导数在 x = 0 x=0 x=0处不存在,但通过观察图像或利用一阶导数的性质可以判断该函数在 ( − ∞ , 0 ) (-\infty, 0) (,0) ( 0 , + ∞ ) (0, +\infty) (0,+)上都是凸函数(注意在 x = 0 x=0 x=0处需要单独考虑)。

凸函数(convex function)的开口方向

实际上,凸函数(convex function)的“开口”方向并不是传统意义上的一次函数或二次函数的“开口向上”或“开口向下”这样的直观描述所能准确涵盖的。凸函数的定义是基于函数图像上任意两点之间的线段(割线)与函数图像本身的位置关系,而不是基于函数图像的整体形状或“开口”方向。

然而,如果我们尝试用类比的方式来解释,可能会产生一些误解。在单变量函数的情况下,一个常见的误解是将凸函数与开口向上的抛物线(如 f ( x ) = x 2 f(x) = x^2 f(x)=x2)联系起来,而将凹函数(concave function)与开口向下的抛物线(如 f ( x ) = − x 2 f(x) = -x^2 f(x)=x2)联系起来。但这种类比并不完全准确,因为凸函数和凹函数的定义并不依赖于函数图像是否“开口”以及“开口”的方向。

实际上,凸函数和凹函数的定义是相对的,并且与函数图像上任意两点之间的线段(割线)相对于函数图像的位置有关。具体来说:

  • 凸函数:对于函数 f ( x ) f(x) f(x)的定义域内的任意两点 x 1 x_1 x1 x 2 x_2 x2 x 1 ≠ x 2 x_1 \neq x_2 x1=x2)以及任意的实数 λ ∈ ( 0 , 1 ) \lambda \in (0,1) λ(0,1),都有

f ( λ x 1 + ( 1 − λ ) x 2 ) ≤ λ f ( x 1 ) + ( 1 − λ ) f ( x 2 ) f(\lambda x_1 + (1-\lambda)x_2) \leq \lambda f(x_1) + (1-\lambda)f(x_2) f(λx1+(1λ)x2)λf(x1)+(1λ)f(x2)

这意味着函数图像上任意两点之间的线段(割线)始终位于函数图像的上方或与其相切(但不相交于两点之间除端点外的其他点)。

  • 凹函数:与凸函数相反,凹函数满足上述不等式的反向形式,即函数图像上任意两点之间的线段(割线)始终位于函数图像的下方或与其相切。

需要注意的是,这里的“上方”和“下方”是相对于函数图像而言的,而不是基于一个固定的水平轴或垂直轴来判断的。因此,说凸函数“开口向下”是不准确的,因为凸函数的定义并不涉及这样的“开口”方向。

另外,值得注意的是,在二次函数(如 f ( x ) = a x 2 + b x + c f(x) = ax^2 + bx + c f(x)=ax2+bx+c)中,当 a > 0 a > 0 a>0时,函数图像是开口向上的抛物线,并且这个函数是凸函数;而当 a < 0 a < 0 a<0时,函数图像是开口向下的抛物线,但这个函数是凹函数。但这只是二次函数这一特殊情况下的表现,不能推广到所有凸函数或凹函数。

凸函数的二阶导数

凸函数是数学中另一种重要的函数类型,与凹函数相对。凸函数的定义是:对于函数 f ( x ) f(x) f(x)的定义域内的任意两点 x 1 x_1 x1 x 2 x_2 x2 x 1 ≠ x 2 x_1 \neq x_2 x1=x2)以及任意的实数 λ ∈ ( 0 , 1 ) \lambda \in (0,1) λ(0,1),都有

f ( λ x 1 + ( 1 − λ ) x 2 ) ≤ λ f ( x 1 ) + ( 1 − λ ) f ( x 2 ) f(\lambda x_1 + (1-\lambda)x_2) \leq \lambda f(x_1) + (1-\lambda)f(x_2) f(λx1+(1λ)x2)λf(x1)+(1λ)f(x2)

这样的函数被称为凸函数。

关于凸函数的二阶导数,有一个重要的性质:如果一个函数在其定义域内是二阶可导的,并且其二阶导数在该定义域内非负(即 f ′ ′ ( x ) ≥ 0 f''(x) \geq 0 f′′(x)0),则该函数是凸函数。这是判断凸函数的一个充分条件(但不一定是必要条件,因为有些凸函数可能在其定义域内的某些点上不可导)。

然而,需要注意的是,即使一个函数在某点处二阶导数为0,这并不意味着该函数在该点不是凸的。凸函数的定义是基于函数值与其上割线(或切线,在可导点)的比较,而不是基于二阶导数的具体值。

此外,如果函数在其定义域内二阶可导且二阶导数大于0(即 f ′ ′ ( x ) > 0 f''(x) > 0 f′′(x)>0),则该函数被称为严格凸函数。

举一个凸函数的例子:函数 f ( x ) = x 2 f(x) = x^2 f(x)=x2是一个典型的凸函数。其二阶导数 f ′ ′ ( x ) = 2 f''(x) = 2 f′′(x)=2,在实数域上恒大于0,因此它是严格凸的。

再举一个例子:函数 f ( x ) = log ⁡ x f(x) = \log x f(x)=logx(在 ( 0 , + ∞ ) (0, +\infty) (0,+)上)也是凸的,尽管它的二阶导数 f ′ ′ ( x ) = − 1 x 2 f''(x) = -\frac{1}{x^2} f′′(x)=x21在该区间内是负的。但这里我们直接通过凸函数的定义或利用一阶导数(如果可导)的单调性来判断其凸性,而不是依赖二阶导数。然而,对于这个函数,我们注意到它的一阶导数 f ′ ( x ) = 1 x f'(x) = \frac{1}{x} f(x)=x1 ( 0 , + ∞ ) (0, +\infty) (0,+)上是单调递减的,这也是凸函数的一个性质(但不是充分条件)。

总之,凸函数的二阶导数在其定义域内非负是判断凸函数的一个充分条件,但不是必要条件。凸函数的定义更加广泛,可以通过比较函数值与其上割线(或切线)来判断。

凸函数的二阶定义

凸函数的二阶定义主要关注于函数的二阶导数或Hessian矩阵(对于多变量函数)的性质。以下是对凸性二阶定义的详细解释:

单变量函数的二阶定义

对于单变量函数 f ( x ) f(x) f(x),如果其在定义域内二阶可导,并且其二阶导数 f ′ ′ ( x ) f''(x) f′′(x)在定义域上非负(即 f ′ ′ ( x ) ≥ 0 f''(x) \geq 0 f′′(x)0),则该函数是凸函数。具体来说:

  • f ′ ′ ( x ) > 0 f''(x) > 0 f′′(x)>0时,表示函数在该点处具有正的曲率,即函数图像在该点处是上凸的(或称为下凹的,但数学上通常使用“凸”来描述这种性质)。
  • f ′ ′ ( x ) = 0 f''(x) = 0 f′′(x)=0时,虽然二阶导数为零,但根据凸函数的定义,只要在整个定义域上满足 f ′ ′ ( x ) ≥ 0 f''(x) \geq 0 f′′(x)0,函数仍然是凸的。不过,这种情况下函数在该点处可能不是严格凸的。
多变量函数的二阶定义

对于多变量函数 f ( x 1 , x 2 , . . . , x n ) f(x_1, x_2, ..., x_n) f(x1,x2,...,xn),其凸性的二阶定义涉及Hessian矩阵。Hessian矩阵是一个由函数二阶偏导数组成的方块矩阵,其中第 i , j i,j i,j项为 ∂ 2 f ∂ x i ∂ x j \frac{\partial^2 f}{\partial x_i \partial x_j} xixj2f

  • 如果函数 f f f在其定义域内二阶可微,并且其Hessian矩阵在定义域内是半正定的(即对于所有 x ∈ dom f x \in \text{dom} f xdomf,都有 ∇ 2 f ( x ) ⪰ 0 \nabla^2 f(x) \succeq 0 2f(x)0),则该函数是凸函数。
  • 需要注意的是,即使Hessian矩阵在某些点上不是正定的(即存在零特征值),只要它是半正定的,函数仍然是凸的。然而,如果Hessian矩阵在定义域内始终正定(即所有特征值均大于零),则函数是严格凸的。
凸函数的应用

凸函数的凸性质在优化问题和经济学中有广泛的应用。在优化问题中,凸优化是指在约束条件下寻找凸函数的全局最小值的问题。由于凸函数的最优解一定在定义域的边界上,这使得凸优化问题相对容易求解。在经济学中,凸性质可以用来描述效用函数、生产函数和成本函数的特性,一些重要的经济学原理和结论依赖于凸函数的性质。

综上所述,凸函数的二阶定义通过函数的二阶导数或Hessian矩阵的性质来刻画函数的凸性,这一定义在数学、优化问题和经济学等领域都具有重要的应用价值。

凸函数

凸函数(Convex Function)是数学中一个非常重要的概念,尤其在优化理论和经济学中有着广泛的应用。凸函数在几何上表现为函数图像在其定义域内的任意两点之间的线段总是在函数图像的下方或与之相切。

正式定义

设函数 f ( x ) f(x) f(x)的定义域为凸集 D D D(即对于任意 x 1 , x 2 ∈ D x_1, x_2 \in D x1,x2D和任意 λ ∈ [ 0 , 1 ] \lambda \in [0, 1] λ[0,1],都有 λ x 1 + ( 1 − λ ) x 2 ∈ D \lambda x_1 + (1-\lambda)x_2 \in D λx1+(1λ)x2D),如果对任意 x 1 , x 2 ∈ D x_1, x_2 \in D x1,x2D和任意 λ ∈ [ 0 , 1 ] \lambda \in [0, 1] λ[0,1],都有

f ( λ x 1 + ( 1 − λ ) x 2 ) ≤ λ f ( x 1 ) + ( 1 − λ ) f ( x 2 ) f(\lambda x_1 + (1-\lambda)x_2) \leq \lambda f(x_1) + (1-\lambda)f(x_2) f(λx1+(1λ)x2)λf(x1)+(1λ)f(x2)

则称 f ( x ) f(x) f(x) D D D上的凸函数。

这里的不等式表示,函数在任意两点之间的线性插值总是大于或等于函数在这两点上的实际值。换句话说,函数图像上的任意两点之间的线段(称为割线)总是在函数图像的下方或与之相切。
凸函数是数学中一个重要的概念,它指的是在函数图像上任意两点之间的线段都位于函数图像上方的函数。换句话说,对于定义域内的任意两点 x 1 x_1 x1 x 2 x_2 x2 x 1 ≠ x 2 x_1 \neq x_2 x1=x2)以及任意的 λ ∈ ( 0 , 1 ) \lambda \in (0,1) λ(0,1),都有:

f ( λ x 1 + ( 1 − λ ) x 2 ) ≤ λ f ( x 1 ) + ( 1 − λ ) f ( x 2 ) f(\lambda x_1 + (1-\lambda)x_2) \leq \lambda f(x_1) + (1-\lambda)f(x_2) f(λx1+(1λ)x2)λf(x1)+(1λ)f(x2)

凸函数的例子
  1. 线性函数 f ( x ) = a x + b f(x) = ax + b f(x)=ax+b(其中 a , b a, b a,b为常数,且 a ≠ 0 a \neq 0 a=0)。线性函数是最简单的凸函数,因为它满足上述凸函数的定义。

  2. 二次函数(开口向上的抛物线) f ( x ) = a x 2 + b x + c f(x) = ax^2 + bx + c f(x)=ax2+bx+c(其中 a > 0 a > 0 a>0)。这类函数在实数范围内是凸的,因为对于任意的 x 1 x_1 x1 x 2 x_2 x2,以及任意的 λ ∈ ( 0 , 1 ) \lambda \in (0,1) λ(0,1),都有:

    f ( λ x 1 + ( 1 − λ ) x 2 ) = a ( λ x 1 + ( 1 − λ ) x 2 ) 2 + b ( λ x 1 + ( 1 − λ ) x 2 ) + c f(\lambda x_1 + (1-\lambda)x_2) = a(\lambda x_1 + (1-\lambda)x_2)^2 + b(\lambda x_1 + (1-\lambda)x_2) + c f(λx1+(1λ)x2)=a(λx1+(1λ)x2)2+b(λx1+(1λ)x2)+c

    经过展开和整理,可以证明它满足凸函数的定义。

  3. 指数函数 f ( x ) = e x f(x) = e^x f(x)=ex。对于任意的 x 1 x_1 x1 x 2 x_2 x2,以及任意的 λ ∈ ( 0 , 1 ) \lambda \in (0,1) λ(0,1),有:

    f ( λ x 1 + ( 1 − λ ) x 2 ) = e λ x 1 + ( 1 − λ ) x 2 f(\lambda x_1 + (1-\lambda)x_2) = e^{\lambda x_1 + (1-\lambda)x_2} f(λx1+(1λ)x2)=eλx1+(1λ)x2

    利用指数函数的性质(特别是 e a + b = e a ⋅ e b e^{a+b} = e^a \cdot e^b ea+b=eaeb e λ a ≤ λ e a + ( 1 − λ ) e b e^{\lambda a} \leq \lambda e^a + (1-\lambda)e^b eλaλea+(1λ)eb,当 0 ≤ λ ≤ 1 0 \leq \lambda \leq 1 0λ1 a ≤ b a \leq b ab时),可以证明它是凸的。

  4. 对数函数(在其定义域内):虽然对数函数在其整个定义域内不是凸的,但在 ( 0 , + ∞ ) (0, +\infty) (0,+)上是凹的,但我们可以说它在某些受限的区间(如 [ a , + ∞ ) [a, +\infty) [a,+),其中 a > 0 a > 0 a>0)上是凸的(尽管这在实际中不常见,因为通常我们关注对数函数在 ( 0 , + ∞ ) (0, +\infty) (0,+)上的凹性)。然而,为了符合题目要求,我们更常将指数函数视为凸函数的例子。

  5. 绝对值函数 f ( x ) = ∣ x ∣ f(x) = |x| f(x)=x。这个函数在 x = 0 x=0 x=0处不可导,但它仍然是凸的。可以通过直接验证凸函数的定义来证明这一点。

以上是一些凸函数的例子。需要注意的是,凸函数的定义和性质在优化理论、经济学、统计学等多个领域都有广泛的应用。

直观理解

  • 如果我们在凸函数的图像上选择任意两点,并连接这两点形成一条线段(割线),那么这条线段将始终位于函数图像的下方或与之相切。
  • 凸函数的这种性质使得它在优化问题中非常有用,因为局部最小值也是全局最小值(在凸函数的无约束优化问题中)。

凸函数有许多重要的性质,例如:

  • 一阶条件:如果 f ( x ) f(x) f(x)是可微的凸函数,那么对于定义域内的任意 x , y x, y x,y,都有 f ( y ) ≥ f ( x ) + ∇ f ( x ) T ( y − x ) f(y) \geq f(x) + \nabla f(x)^T(y-x) f(y)f(x)+f(x)T(yx)
  • 二阶条件:如果 f ( x ) f(x) f(x)是二阶可微的凸函数,那么它的Hessian矩阵(二阶导数矩阵)在定义域内是半正定的。
  • 下界性质:凸函数的全局最小值可以通过求解其一阶导数为零的点(如果存在)或考虑其定义域的边界点来找到。

凸函数在优化理论中非常有用,因为许多非凸优化问题可以通过一系列凸优化问题来近似求解。此外,凸函数还与凸集、凸规划等概念紧密相连,在经济学、工程学、统计学等领域有着广泛的应用。

凹函数

凹函数(Concave Function)是数学优化理论中的一个重要概念,与凸函数相对应。凹函数在几何上表现为函数图像在其定义域内的任意两点之间的线段总是在函数图像的上方或与之相切。

正式定义

设函数 f ( x ) f(x) f(x)的定义域为凸集 D D D,如果对任意 x 1 , x 2 ∈ D x_1, x_2 \in D x1,x2D和任意 λ ∈ [ 0 , 1 ] \lambda \in [0, 1] λ[0,1],都有

f ( λ x 1 + ( 1 − λ ) x 2 ) ≥ λ f ( x 1 ) + ( 1 − λ ) f ( x 2 ) f(\lambda x_1 + (1-\lambda)x_2) \geq \lambda f(x_1) + (1-\lambda)f(x_2) f(λx1+(1λ)x2)λf(x1)+(1λ)f(x2)

则称 f ( x ) f(x) f(x) D D D上的凹函数。

这里, λ x 1 + ( 1 − λ ) x 2 \lambda x_1 + (1-\lambda)x_2 λx1+(1λ)x2表示 x 1 x_1 x1 x 2 x_2 x2之间的线性插值,而 λ f ( x 1 ) + ( 1 − λ ) f ( x 2 ) \lambda f(x_1) + (1-\lambda)f(x_2) λf(x1)+(1λ)f(x2)则表示 f ( x 1 ) f(x_1) f(x1) f ( x 2 ) f(x_2) f(x2)之间的线性插值。凹函数的定义要求函数值在任意两点之间的线性插值总是小于或等于函数在这两点上的实际值。

直观理解

  • 如果我们在凹函数的图像上选择任意两点,并连接这两点形成一条线段,那么这条线段将始终位于函数图像的上方或与之相切。
  • 与凸函数相反,凸函数的图像在其定义域内的任意两点之间的线段总是在函数图像的下方或与之相切。

凹函数在优化问题中扮演着重要角色,尽管它们可能不像凸函数那样具有所有理想的优化性质(如全局最优解的唯一性),但在某些情况下,凹函数仍然可以被有效地优化。此外,凹函数与凸函数之间存在紧密的联系,例如,一个函数的负值如果是凸的,则该函数本身是凹的。

需要注意的是,凹函数的定义有时会根据上下文的不同而有所变化。在某些情况下,凹函数可能被定义为满足上述不等式条件但定义域不一定是凸集的函数。然而,在优化理论中,我们通常要求定义域是凸集,以确保优化问题的良好性质。
凹函数(也称为上凸函数)是数学中一种重要的函数类型,其定义是:对于函数 f ( x ) f(x) f(x)的定义域内的任意两点 x 1 x_1 x1 x 2 x_2 x2 x 1 ≠ x 2 x_1 \neq x_2 x1=x2)以及任意的实数 λ ∈ ( 0 , 1 ) \lambda \in (0,1) λ(0,1),都有

f ( λ x 1 + ( 1 − λ ) x 2 ) ≥ λ f ( x 1 ) + ( 1 − λ ) f ( x 2 ) f(\lambda x_1 + (1-\lambda)x_2) \geq \lambda f(x_1) + (1-\lambda)f(x_2) f(λx1+(1λ)x2)λf(x1)+(1λ)f(x2)

这样的函数被称为凹函数。

凹函数的例子
  1. 线性函数:虽然线性函数(如 f ( x ) = a x + b f(x) = ax + b f(x)=ax+b,其中 a a a b b b是常数)在严格意义上既不是凹函数也不是凸函数(它们被称为仿射函数),但我们可以认为它们是“平”的,即既不凹也不凸。然而,为了给出凹函数的直观例子,我们可以稍微修改它,比如考虑一个向下倾斜的线性函数(斜率为负),在局部小范围内,它可以被视为凹函数的一部分,尽管在整个定义域上它不是。但更典型的凹函数例子如下。

  2. 二次函数(开口向下的):函数 f ( x ) = − x 2 f(x) = -x^2 f(x)=x2是一个典型的凹函数。对于任意的 x 1 x_1 x1 x 2 x_2 x2以及 λ ∈ ( 0 , 1 ) \lambda \in (0,1) λ(0,1),我们有

f ( λ x 1 + ( 1 − λ ) x 2 ) = − ( λ x 1 + ( 1 − λ ) x 2 ) 2 f(\lambda x_1 + (1-\lambda)x_2) = -(\lambda x_1 + (1-\lambda)x_2)^2 f(λx1+(1λ)x2)=(λx1+(1λ)x2)2

= − λ 2 x 1 2 − 2 λ ( 1 − λ ) x 1 x 2 − ( 1 − λ ) 2 x 2 2 = -\lambda^2 x_1^2 - 2\lambda(1-\lambda)x_1x_2 - (1-\lambda)^2 x_2^2 =λ2x122λ(1λ)x1x2(1λ)2x22

≥ − λ x 1 2 − ( 1 − λ ) x 2 2 \geq -\lambda x_1^2 - (1-\lambda)x_2^2 λx12(1λ)x22

= λ f ( x 1 ) + ( 1 − λ ) f ( x 2 ) = \lambda f(x_1) + (1-\lambda)f(x_2) =λf(x1)+(1λ)f(x2)

这里的不等式成立是因为我们加上了额外的非正项 − 2 λ ( 1 − λ ) x 1 x 2 -2\lambda(1-\lambda)x_1x_2 2λ(1λ)x1x2(当且仅当 x 1 = x 2 x_1 = x_2 x1=x2时取0)。

  1. 对数函数(在某些区间内):虽然对数函数(如 f ( x ) = log ⁡ x f(x) = \log x f(x)=logx)在其整个定义域 ( 0 , + ∞ ) (0, +\infty) (0,+)上不是凹函数,但在任何有限区间 ( a , b ) (a, b) (a,b)(其中 0 < a < b 0 < a < b 0<a<b)上,它是凹的。这是因为对数函数的二阶导数在该区间内是负的。

  2. 负指数函数:函数 f ( x ) = e − x f(x) = e^{-x} f(x)=ex是一个在整个实数域上都是凹的函数。其二阶导数 f ′ ′ ( x ) = e − x f''(x) = e^{-x} f′′(x)=ex总是正的(但注意这里我们说的是“负的指数函数”,即底数为正但指数为负的指数函数,它与通常说的“指数增长”函数相反)。然而,这里的描述可能有些误导,因为“负指数函数”通常指的是形如 f ( x ) = a − x f(x) = a^{-x} f(x)=ax(其中 a > 1 a > 1 a>1)的函数,这类函数在 ( − ∞ , + ∞ ) (-\infty, +\infty) (,+)上也是凹的。但更标准的例子是 f ( x ) = e − x f(x) = e^{-x} f(x)=ex

综上所述,凹函数的例子包括但不限于开口向下的二次函数、在有限区间内的对数函数以及负指数函数(如 f ( x ) = e − x f(x) = e^{-x} f(x)=ex)。

函数的凹凸性

凸函数是数学中的一个重要概念,尤其在优化理论和经济学中有着广泛的应用。下面,我们将详细解释凸函数的定义、性质以及判断方法。

在优化理论中,函数的凹凸性是一个重要的概念,它决定了函数在特定区间上的行为以及优化问题的性质。下面我们将分别解释凸函数、凹函数、拟凸(凹)函数和伪凸(凹)函数的概念。

凸函数(Convex Function)

定义:设函数 f ( x ) f(x) f(x)的定义域为凸集 D D D,如果对任意 x 1 , x 2 ∈ D x_1, x_2 \in D x1,x2D和任意 λ ∈ [ 0 , 1 ] \lambda \in [0, 1] λ[0,1],都有

f ( λ x 1 + ( 1 − λ ) x 2 ) ≤ λ f ( x 1 ) + ( 1 − λ ) f ( x 2 ) f(\lambda x_1 + (1-\lambda)x_2) \leq \lambda f(x_1) + (1-\lambda)f(x_2) f(λx1+(1λ)x2)λf(x1)+(1λ)f(x2)

则称 f ( x ) f(x) f(x) D D D上的凸函数。

直观理解:在凸函数上任意两点之间的线段总是在函数图像之上或与之相切。

凹函数(Concave Function)

定义:凹函数是凸函数的相反概念。设函数 f ( x ) f(x) f(x)的定义域为凸集 D D D,如果对任意 x 1 , x 2 ∈ D x_1, x_2 \in D x1,x2D和任意 λ ∈ [ 0 , 1 ] \lambda \in [0, 1] λ[0,1],都有

f ( λ x 1 + ( 1 − λ ) x 2 ) ≥ λ f ( x 1 ) + ( 1 − λ ) f ( x 2 ) f(\lambda x_1 + (1-\lambda)x_2) \geq \lambda f(x_1) + (1-\lambda)f(x_2) f(λx1+(1λ)x2)λf(x1)+(1λ)f(x2)

则称 f ( x ) f(x) f(x) D D D上的凹函数。

直观理解:在凹函数上任意两点之间的线段总是在函数图像之下或与之相切。

拟凸函数(Quasiconvex Function)

定义:设函数 f ( x ) f(x) f(x)的定义域为凸集 D D D,如果对任意 x 1 , x 2 ∈ D x_1, x_2 \in D x1,x2D和任意 λ ∈ ( 0 , 1 ) \lambda \in (0, 1) λ(0,1),只要 f ( x 1 ) ≤ f ( x 2 ) f(x_1) \leq f(x_2) f(x1)f(x2),就有

f ( λ x 1 + ( 1 − λ ) x 2 ) ≤ f ( x 2 ) f(\lambda x_1 + (1-\lambda)x_2) \leq f(x_2) f(λx1+(1λ)x2)f(x2)

则称 f ( x ) f(x) f(x) D D D上的拟凸函数。

直观理解:拟凸函数在任意方向上都是“单调不减”的,即如果函数在某一点取得较小值,则在该点与任何其他点的连线上的所有点都不会取得更小的值。

拟凹函数(Quasiconcave Function)

拟凹函数是拟凸函数的相反概念,即如果 f ( x ) f(x) f(x)是拟凸的,那么 − f ( x ) -f(x) f(x)就是拟凹的。

伪凸函数(Pseudoconvex Function)

定义:设函数 f ( x ) f(x) f(x)的定义域为凸集 D D D,如果对任意 x 1 , x 2 ∈ D x_1, x_2 \in D x1,x2D,只要 f ( x 1 ) < f ( x 2 ) f(x_1) < f(x_2) f(x1)<f(x2),就存在某个向量 d d d使得

f ( x 1 + α d ) < f ( x 1 ) 对所有 α > 0 且 x 1 + α d ∈ D f(x_1 + \alpha d) < f(x_1) \quad \text{对所有} \quad \alpha > 0 \quad \text{且} \quad x_1 + \alpha d \in D f(x1+αd)<f(x1)对所有α>0x1+αdD

f ( x 2 ) T d ≤ 0 f(x_2)^T d \leq 0 f(x2)Td0

则称 f ( x ) f(x) f(x) D D D上的伪凸函数。

注意:伪凸函数的定义可能因文献而异,上述定义是一种较为常见的形式。伪凸函数在优化中具有一定的应用,但其性质比凸函数更为复杂。

伪凹函数(Pseudoconcave Function)

伪凹函数是伪凸函数的相反概念,即如果 f ( x ) f(x) f(x)是伪凸的,那么 − f ( x ) -f(x) f(x)就是伪凹的。

总结来说,凸函数和凹函数是优化理论中最为基础和重要的概念,它们具有良好的性质,使得许多优化问题可以转化为凸优化问题来求解。拟凸函数和伪凸函数则是对凸函数概念的推广,它们在更广泛的函数类中仍然保持了一定的优化性质。

参考文献

  • 《机器学习精讲 基础、算法与应用》
  • 文心一言

相关文章:

人工智能与机器学习原理精解【6】

文章目录 数值优化基础理论凹凸性定义在国外与国内存在不同国内定义国外定义总结示例与说明注意事项 国内凹凸性二阶定义的例子凹函数例子凸函数例子 凸函数&#xff08;convex function&#xff09;的开口方向凸函数的二阶导数凸函数的二阶定义单变量函数的二阶定义多变量函数…...

JDK、JRE、JVM之间的关系

JDK是Java的开发环境&#xff0c;用JDK开发了JAVA程序后&#xff0c;通过JDK中的编译程序&#xff08;javac&#xff09;将java文件编译成字节码文件&#xff0c;作为运行环境的JRE&#xff0c;字节码文件在JRE上运行&#xff0c;作为虚拟机的JVM解析这些字节码&#xff0c;映射…...

redis构建集群时,一直Waiting for the cluster to join

redis构建集群时&#xff0c;一直Waiting for the cluster to join 前置条件参考 前置条件 这是我搭建的集群相关信息&#xff0c;三台虚拟机&#xff0c;分别是一主一从。在将所有虚拟机中redis服务器用到的tcp端口都打开之后&#xff0c;进行构建集群。但是出现上面的情况。 …...

C++之类与对象(2)

前言 今天将步入学习类的默认成员函数&#xff0c;本节讲解其中的构造函数和析构函数。 1.类的默认成员函数 在 C 中&#xff0c;如果一个类没有显式定义某些成员函数&#xff0c;编译器会自动为该类生成默认的成员函数。以下是编译器可能会生成的默认成员函数&#xff1a; 默…...

「树形结构」基于 Antd 实现一个动态增加子节点+可拖拽的树

效果 如图所示 实现 import { createRoot } from react-dom/client; import React, { useState } from react; import { Tree, Input, Button } from antd; import { PlusOutlined } from ant-design/icons;const { TreeNode } Tree; const { Search } Input;const ini…...

ubuntu那些ppa源在哪

Ubuntu中的 PPA 终极指南 - UBUNTU粉丝之家 什么是PPA PPA 代表个人包存档。 PPA 允许应用程序开发人员和 Linux 用户创建自己的存储库来分发软件。 使用 PPA&#xff0c;您可以轻松获取较新的软件版本或官方 Ubuntu 存储库无法提供的软件。 为什么使用PPA&#xff1f; 正如…...

20240724-然后用idea创建一个Java项目/配置maven环境/本地仓储配置

1.创建一个java项目 &#xff08;1&#xff09;点击页面的create project&#xff0c;然后next &#xff08;2&#xff09;不勾选&#xff0c;继续next &#xff08;3&#xff09;选择新项目名称&#xff0c;新项目路径&#xff0c;然后Finsh&#xff0c;在新打开的页面选择…...

PaddleOCR-PP-OCRv4推理详解及部署实现(下)

目录 前言1. 检测模型1.1 预处理1.2 后处理1.3 推理 2. 方向分类器模型2.1 预处理2.2 后处理2.3 推理 3. 识别模型3.1 预处理3.2 后处理3.3 推理 4. PP-OCRv4部署4.1 源码下载4.2 环境配置4.2.1 配置CMakeLists.txt4.2.2 配置Makefile 4.3 ONNX导出4.4 engine生成4.4.1 检测模型…...

【Golang 面试基础题】每日 5 题(二)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…...

状态模式与订单状态机的实现

状态模式 状态模式&#xff08;State Design Pattern&#xff09;是一种行为设计模式&#xff0c;用于在对象的内部状态改变时改变其行为。这种模式可以将状态的变化封装在状态对象中&#xff0c;使得对象在状态变化时不会影响到其他代码&#xff0c;提升了代码的灵活性和可维…...

【MSP430】MSP430是什么?与STM32对比哪个性能更佳?

一、MSP430是什么&#xff1f; MSP430F5529LP是一款由德州仪器&#xff08;TI&#xff09;推出的16位微控制器单元&#xff08;MCU&#xff09;开发板&#xff0c;具有USB功能&#xff0c;内存配置为128KB闪存和8KB RAM&#xff0c;工作频率高达25MHz。 这款MCU以其高性能和多…...

Win11 操作(四)g502鼠标连接电脑不亮灯无反应

罗技鼠标连接电脑不亮灯无反应 前言 罗技技术&#x1f4a9;中&#x1f4a9;&#xff0c;贴吧技术神中神&#xff01; 最近买了一个g502&#xff0c;结果买回来直接插上电脑连灯都不亮&#xff0c;问了一下客服。客服简单的让我换接口&#xff0c;又是下载ghub之类的&#xf…...

自定义QDialog使用详解

自定义QDialog使用详解 一、创建 QDialog 对象二、QDialog设置布局三、QDialog控制模态行为3.1 模态和非模态区别3.2 QDialog的模态使用四、使用 QDialogButtonBox五、处理对话框的结果六、使用 QDialog 的信号和槽QDialog是Qt框架中用于创建对话框窗口的基本类。对话框窗口通常…...

Pytorch使用教学2-Tensor的维度

在PyTorch使用的过程中&#xff0c;维度转换一定少不了。而PyTorch中有多种维度形变的方法&#xff0c;我们该在什么场景下使用什么方法呢&#xff1f; 本小节我们使用的张量如下&#xff1a; # 一维向量 t1 torch.tensor((1, 2)) # 二维向量 t2 torch.tensor([[1, 2, 3], …...

Interesting bug caused by getattr

题意&#xff1a;由 getattr 引起的有趣的 bug 问题背景&#xff1a; I try to train 8 CNN models with the same structures simultaneously. After training a model on a batch, I need to synchronize the weights of the feature extraction layers in other 7 models. …...

获取后端返回的图形验证码

如果后端返回的直接就是一个图形&#xff0c;有以下几种方式展示 一、直接在img标签里面的src里面调用接口 <img :src"dialogSrc" class"photo" alt"验证码图片" click"changeDialog">let orgUrl "/api/captcha" …...

奇怪的Excel单元格字体颜色格式

使用VBA代码修改单元格全部字符字体颜色是个很简单的任务&#xff0c;例如设置A1单元格字体颜色为红色。 Range("A1").Font.Color RGB(255, 0, 0)有时需要修改部分字符的颜色&#xff0c;如下图所示&#xff0c;将红色字符字体颜色修改为蓝色。代码将会稍许复杂&am…...

浅谈芯片验证中的仿真运行之 timescale (五)提防陷阱

一 仿真单位 timeunit 我们知道,当我们的代码中写清楚延时语句时,若不指定时间单位,则使用此单位; 例如: `timescale 1ns/1ps 则 #15 语句表示delay15ns; 例:如下代码,module a 的timescale是1ns/1ps, module b 是1ps/1ps; module b中的clk,频率是由输入参…...

uniapp 重置表单数据

场景 例如有数据如下 data(){return {queryForm:{value1:undefined,}} } 点击重置时候想重置form的数据&#xff0c; 操作 Object.assign(this.$data.queryForm, this.$options.data().queryForm); 就可以重置数据...

自学YOLO前置知识

YOLO前置知识 学习YOLO&#xff08;You Only Look Once&#xff09;之前&#xff0c;掌握一些前置知识会帮助你更好地理解和应用该技术。以下是一些推荐的前置知识领域&#xff1a; 计算机视觉基础&#xff1a; 图像处理&#xff1a;了解图像的基本处理技术&#xff0c;如滤波…...

Ubuntu18.04 编译报错: Could NOT find JNI

一、问题描述 Ubuntu18.04 编译报错 OpenCV 时&#xff0c;出现以下错误&#xff1a; Could NOT find JNI (missing: JAVA_INCLUDE_PATH JAVA_INCLUDE_PATH2 JAVA_AWT_INCLUDE_PATH)二、解决方法 先执行以下指令&#xff0c; export JAVA_HOME/usr/lib/jvm/java-8-openjdk-am…...

SQL labs-SQL注入(五,使用sqlmap进行cookie注入)

本文仅作为学习参考使用&#xff0c;本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 引言&#xff1a; Cookie 是一些数据, 存储于你电脑上的文本文件中。当 web 服务器向浏览器发送 web 页面时&#xff0c;在连接关闭后&#xff0c;服务端不会记录用户的信息。Cookie…...

C语言——内存管理

目录 前言 一、内存分类 1. 栈区&#xff08;Stack&#xff09; 2. 堆区&#xff08;Heap&#xff09; 3. 数据段&#xff08;Data Segment&#xff09; 4. 代码段&#xff08;Code Segment&#xff09; 二、内存分配方式 1、静态内存分配 2、栈内分配 3、动态内存分配 &#x…...

Unity UGUI 之 Image和Rawimage

本文仅作学习笔记与交流&#xff0c;不作任何商业用途 本文包括但不限于unity官方手册&#xff0c;唐老狮&#xff0c;麦扣教程知识&#xff0c;引用会标记&#xff0c;如有不足还请斧正 1.Image是什么 Unity - 手册&#xff1a;图像 精灵格式是什么&#xff1f; 1.2重要参数 …...

Lua 语法学习笔记

Lua 语法学习笔记 安装(windows) 官网&#xff1a;https://www.lua.org/ 下载SDK 解压&修改名称&#xff08;去除版本号&#xff09; 将lua后面的版本号去掉&#xff0c;如lua54.exe->lua.ext 配置环境变量 数据类型 数据类型描述nil这个最简单&#xff0c;只有值n…...

Prometheus配置alertmanager告警

1、拉取镜像并运行 1、配置docker镜像源 [rootlocalhost ~]# vim /etc/docker/daemon.json {"registry-mirrors": ["https://dfaad.mirror.aliyuncs.com"] } [rootlocalhost ~]# systemctl daemon-reload [rootlocalhost ~]# systemctl restart docker2、…...

.net core 外观者设计模式 实现,多种支付选择

1&#xff0c;接口 /// <summary>/// Web页面支付/// </summary>public interface IWebPagePay{public WebPagePayResult CreatePay(string productName, string orderSn, string totalPrice);}2&#xff0c;实现接口 实现阿里支付 public class AliPagePay : IWe…...

Matlab 命令行窗口默认输出(异常)

目录 前言Matlab 先验知识1 异常输出的代码2 正常输出的代码 前言 在单独调试 Matlab 写的函数时出现不想出现的异常打印值&#xff0c;逐个注释排查才找到是 if elseif else 代码块的问题&#xff0c;会默认打印输出 else 部分第一个返回值的值&#xff08;下方代码中的 P值&…...

LeetCode/NowCoder-二叉树OJ练习

励志冰檗&#xff1a;形容在清苦的生活环境中激励自己的意志。&#x1f493;&#x1f493;&#x1f493; 目录 说在前面 题目一&#xff1a;单值二叉树 题目二&#xff1a;相同的树 题目三&#xff1a;对称二叉树 题目四&#xff1a;二叉树的前序遍历 题目五&#xff1a;另…...

PSINS工具箱函数介绍——insplot

insplot是一个绘图命令,用于将avp数据绘制出来 本文所述的代码需要基于PSINS工具箱,工具箱的讲解: PSINS初学指导基于PSINS的相关程序设计(付费专题)使用方法 此函数使用起来也很简单,直接后面加avp即可,如: insplot(avp);其中,avp为: 每行表示一个时间1~3列为姿态…...

Docker简单快速入门

1. 安装Docker 基于 Ubuntu 24.04 LTS 安装Docker 。 # 更新包索引并安装依赖包 sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common# 添加Docker的官方GPG密钥并存储在正确的位置 curl -fsSL https://mirror…...

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 图像物体的边界(200分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…...

【无人机】低空经济中5G RedCap芯片的技术分析报告

1. 引言 图一. 新基建&#xff1a;低空经济 低空经济作为一种新兴的经济形态&#xff0c;涵盖了无人机、电动垂直起降飞行器&#xff08;eVTOL&#xff09;、低空物流、空中交通管理等多个领域。随着5G网络的普及和演进&#xff0c;5G RedCap&#xff08;Reduced Capability&a…...

MongoDB教程(二十一):MongoDB大文件存储GridFS

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、GridFS…...

vue 搜索框

效果 创建搜索组件&#xff1a; 在Vue项目中&#xff0c;首先需要创建一个搜索组件。这个组件通常包含一个输入框和一个搜索按钮。使用v-model指令将输入框与组件的数据属性&#xff08;如searchKeyword&#xff09;进行双向绑定&#xff0c;以便获取用户输入的关键词。处理搜索…...

国科大作业考试资料-人工智能原理与算法-2024新编-第五次作业整理

1、本题以井字棋(圈与十字游戏)为例练习博弈中的基本概念。定义X_n为恰好有n个X而没有O 的行、列或者对角线的数目。同样O_n为正好有n 个O的行、列或者对角线的数目。效用函数给 X_3=1的棋局+1, 给O_3=1的棋局-1。所有其他终止状态效用值为0。对于非终止状态,使用线性的 …...

C++五子棋(未做完,但能玩,而且还不错)

代码放下面了&#xff0c;关于步骤介绍的我以后再完善一下。 #include<bits/stdc.h> #include<cstdio> #include<cstdlib> #include<ctime> #include<windows.h> #include<stdlib.h> #include<time.h> #define random(x) (rand()%x…...

二分查找代码详解

二分查找代码实现 以下是完整的代码和解释&#xff1a; #include <stdio.h>int binarySearch(int arr[], int length, int target) {int left 0;int right length - 1;while (left < right) {int mid left (right - left) / 2; // 防止溢出if (arr[mid] target…...

uniapp的h5,读取本地txt带标签的文件

效果图 使用的回显的标签是u-parse&#xff0c;下面的网址讲了这个标签的相关 https://www.cnblogs.com/huihuihero/p/12978903.html 导入此插件 https://ext.dcloud.net.cn/plugin?id364 使用 uni.request({// 本地文件url: "/static/互联网医院医师端用户协议.txt…...

韦东山嵌入式linux系列-具体单板的按键驱动程序(查询方式)

1 GPIO 操作回顾 &#xff08;1&#xff09;使能模块&#xff1b; &#xff08;2&#xff09;设置引脚的模式&#xff08;工作于GPIO模式&#xff09;&#xff1b; &#xff08;3&#xff09;设置GPIO本身&#xff08;输入/输出&#xff09;&#xff1b; &#xff08;4&…...

如何使用 API list 极狐GitLab 群组中的镜像仓库?

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab &#xff1a;https://gitlab.cn/install?channelcontent&utm_sourcecsdn 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署…...

PHP设计模式-简单工厂模式

核心&#xff1a; 一、定义一个接口类里面写规定好的方法。 interface Message{public function send(array $params);public function getMessage(array $params);public function getCode(array $params);} 二、定义产品类 、产品类继承接口类 class AlliYunSms implements …...

C语言航空售票系统

以下是系统部分页面 以下是部分源码&#xff0c;需要源码的私信 #include<stdio.h> #include<stdlib.h> #include<string.h> #define max_user 100 typedef struct ft {char name[50];//名字char start_place[50];//出发地char end_place[50];//目的地char …...

Oracle 19c打Datapatch数据补丁报错处理

Oracle 19c打Datapatch数据补丁报错处理 错误分析重新编译补丁验证安装完数据库补丁后,在数据补丁的步骤收到以下报错: Connecting to database...OK Gathering database info...done Bootstrapping registry and package to current versions...done Determining current s…...

Linux shell编程学习笔记66:ping命令 超详细的选项说明

0 前言 网络信息是电脑网络信息安全检查中的一块重要内容&#xff0c;Linux和基于Linux的操作系统&#xff0c;提供了很多的网络命令&#xff0c;今天我们研究最常用的ping命令。 1 ping命令 的功能、格式和选项说明 1.1 ping命令 的功能 简单来说&#xff0c; ping 命令 会…...

SSL/TLS和SSL VPN

1、SSL/TLS SSL安全套接字层&#xff1a;是一种加密协议&#xff0c;用于在网络通信中建立安全连接。它在应用层和传输层&#xff08;TCP/IP&#xff09;之间提供数据加密、服务器身份验证以及信息完整性验证 SSL只保护TCP流量&#xff0c;不保护UDP协议 TLS&#xff1a;传输层…...

浅谈WebSerice

一. 什么是WebService Web Service也称为web服务&#xff0c;它是一种跨编程语言和操作系统平台的远程调用技术。Web Service采用标准的SOAP协议传输&#xff08;SOAP&#xff1a;Simple Object Access Protocol简单对象访问协议&#xff0c;soap属于w3c标准。并且soap协议是基…...

linux快速入门-学习笔记

linux快速入门-学习笔记 第一章&#xff1a;Linux系统概念及命令学习Linux系统基本概念命令终端介绍命令格式介绍Linux系统辨别目录与文件的方法通过文件详细属性辨别ls 查看目录/文件命令Linux 系统下的归属关系命令行编辑技巧Linux 基本权限的类别课后练习 第二章&#xff1a…...

科普文:5种Linux下软件部署方式说明

在Linux世界里&#xff0c;高效、灵活地安装和管理软件是每个系统管理员和开发者的基本功。从传统的RPM包管理&#xff0c;到便捷的YUM软件仓库&#xff0c;再到颠覆性的Docker容器技术&#xff0c;Snap&#xff0c;源码安装&#xff0c;每一种方法都有其独到之处&#xff0c;适…...

Redisson中的RBlockingQueue的使用场景及例子

Redisson 的 RBlockingQueue 是一个实现了 Java BlockingQueue 接口的分布式队列&#xff0c;它可以用于在分布式系统中实现生产者-消费者模式。RBlockingQueue 提供了线程安全的阻塞队列操作&#xff0c;允许生产者在队列满时阻塞&#xff0c;消费者在队列空时阻塞&#xff0c…...