求方向导数的python代码
时间: 2023-11-12 20:59:15 浏览: 147
基于Python实现的梯度下降算法.zip
方向导数是一个向量在某一方向上的变化率,可以通过计算向量在该方向上的投影来得到。下面是一个简单的 Python 代码示例:
```python
import numpy as np
def directional_derivative(f, grad_f, p, v):
"""
计算函数 f 在点 p 沿向量 v 的方向导数
f: 函数
grad_f: 函数 f 的梯度向量
p: 点
v: 方向向量
"""
v = v / np.linalg.norm(v) # 将方向向量归一化
return np.dot(grad_f(p), v) # 计算梯度向量和方向向量的点积
# 示例:计算函数 f(x,y) = x^2 + y^2 在点 (1,1) 沿 (1,1) 方向的方向导数
f = lambda x: x[0]**2 + x[1]**2 # 定义函数
grad_f = lambda x: np.array([2*x[0], 2*x[1]]) # 定义梯度向量
p = np.array([1, 1]) # 设置点
v = np.array([1, 1]) # 设置方向向量
dd = directional_derivative(f, grad_f, p, v) # 计算方向导数
print(dd) # 输出结果
```
输出结果为 2.0,表示函数在点 (1,1) 沿 (1,1) 方向的方向导数为 2.0。
阅读全文