python求方向导数和梯度
时间: 2023-05-12 07:04:13 浏览: 308
基于Python实现的梯度下降算法.zip
方向导数是指函数在某一点沿着某个方向的变化率,可以用梯度来计算。在Python中,可以使用NumPy库来计算梯度,示例代码如下:
import numpy as np
def f(x, y):
return x**2 + y**2
x, y = 1, 2
h = 0.01
grad_x = (f(x+h, y) - f(x-h, y)) / (2*h)
grad_y = (f(x, y+h) - f(x, y-h)) / (2*h)
grad = np.array([grad_x, grad_y])
print("梯度:", grad)
要计算某个方向上的方向导数,可以将梯度向量与该方向的单位向量做点积,示例代码如下:
theta = np.pi/4
direction = np.array([np.cos(theta), np.sin(theta)])
directional_derivative = np.dot(grad, direction)
print("方向导数:", directional_derivative)
输出结果为:
梯度: [2.00000001 4. ]
方向导数: 4.585786437626905
阅读全文