本篇介绍求解最优化问题的一种数值算法-- 梯度下降算法。
在微积分中我们学过,沿着梯度grad(f)方向,函数f的方向导数有最大值。...此例中二元函数为:
z(x,y)= x**2 + 2*y**2 +2*x*y +4*x - 16*y +10
下面我们先利用python的符号计算模块sympy来计算它的理论最小值:
from sympy...import *
x, y = symbols("x y")#创建符号变量x和y
z = x**2 + 2*y**2 +2*x*y +4*x - 16*y +10
print("z对x的一阶偏导数:"...,diff(z,x))
print("z对x的二阶偏导数:",diff(z,x,2))
print("z对y的一阶偏导数:",diff(z,y))
print("z对y的二阶偏导数:",diff(z,y...,end ="\n\n")
结果如下:
z对x的一阶偏导数: 2*x + 2*y + 4
z对x的二阶偏导数: 2
z对y的一阶偏导数: 2*x + 4*y - 16
z对y的二阶偏导数: 4
两个二阶偏导数都为正