python求多元函数梯度算法举例
时间: 2023-07-30 16:10:43 浏览: 123
下面以一个简单的例子来说明在 Python 中如何求解多元函数的梯度。
假设有一个二元函数 $f(x, y) = x^2 + xy + y^2$,我们想要求解在点 $(1, 2)$ 处的梯度。
首先,我们需要导入 SymPy 库,并定义自变量 $x$ 和 $y$:
```python
import sympy as sp
x, y = sp.symbols('x y')
```
然后,我们可以定义函数 $f(x, y)$ 并求解其梯度:
```python
f = x**2 + x*y + y**2
grad_f = [sp.diff(f, var) for var in [x, y]]
```
这里,`grad_f` 就是函数 $f(x, y)$ 在点 $(1, 2)$ 处的梯度表达式,它是一个包含两个元素的列表,分别表示 $f$ 对 $x$ 和 $y$ 的偏导数。接下来,我们可以将点 $(1, 2)$ 的值替换到梯度表达式中,计算出其数值:
```python
grad_f_values = [grad_f[i].subs([(x, 1), (y, 2)]).evalf() for i in range(len(grad_f))]
```
这里,`subs()` 方法用来将点 $(1, 2)$ 的值替换到梯度表达式中,`evalf()` 方法用来将表达式中的符号变量替换为实数来计算偏导数的数值。最终,`grad_f_values` 就是函数 $f(x, y)$ 在点 $(1, 2)$ 处的梯度值,它是一个包含两个元素的列表,分别表示 $f$ 在点 $(1, 2)$ 处对 $x$ 和 $y$ 的偏导数的数值。
阅读全文