解析法最小化二次函数的实现方法咨询
解析法最小化二次函数的实现方法咨询
别慌!我来一步步给你拆解怎么用解析法求二次函数的最小值,其实核心就是利用代数或者微积分的基本性质,一点都不复杂~
一、先从最简单的一元二次函数说起
标准形式是 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




