You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

解析法最小化二次函数的实现方法咨询

解析法最小化二次函数的实现方法咨询

别慌!我来一步步给你拆解怎么用解析法求二次函数的最小值,其实核心就是利用代数或者微积分的基本性质,一点都不复杂~

一、先从最简单的一元二次函数说起

标准形式是 f(x) = ax² + bx + c,首先要确认a>0(函数开口向上),这样才有最小值;如果a<0,函数开口向下,只有最大值没有最小值哦。

方法1:代数配方法

把原式配成完全平方的形式:

f(x) = a(x + b/(2a))² + (c - b²/(4a))

因为平方项(x + b/(2a))²永远是非负的,所以当这个平方项等于0的时候,函数取得最小值。也就是当 x = -b/(2a) 时,最小值为 c - b²/(4a)

举个例子:比如 f(x)=2x²+4x+1,配完方是 2(x+1)² -1,所以当x=-1时,最小值是-1。

方法2:微积分求导法

对函数求一阶导数:

f’(x) = 2ax + b

极值点的必要条件是一阶导数为0,令f’(x)=0,解出 x = -b/(2a)。再验证二阶导数f''(x)=2a>0,说明这个点是极小值点,而因为一元二次函数是凸函数,这个极小值点就是整个定义域的最小值点,代入原式就能得到最小值。

二、多元二次函数(二次型)的情况

如果是多元的,比如二元甚至更高维度的二次函数,通常写成矩阵形式:f(x) = (1/2)xᵀAx + bᵀx + c,这里A必须是对称正定矩阵(保证函数是凸函数,存在全局最小值)。

步骤如下:

  • 第一步:对向量x求梯度,梯度结果是 ∇f(x) = Ax + b
  • 第二步:令梯度等于零向量,解线性方程组 Ax + b = 0,得到最小值点 x = -A⁻¹b(A⁻¹是矩阵A的逆矩阵)
  • 第三步:把这个最小值点代入原函数,就能算出最小值:f_min = c - (1/2)bᵀA⁻¹b

比如二元函数f(x₁,x₂)=x₁² + 2x₂² + 2x₁x₂ + 2x₁ + 4x₂ + 1,写成矩阵形式后A是正定矩阵,按上面步骤解就能得到最小值点和对应的最小值。

备注:内容来源于stack exchange,提问作者Michael

火山引擎 最新活动