用python编写代码分别使用梯度下降法和牛顿法来求解f(x1,x2)=2x1²+4x2²-4x1x2+5x1-2x2+7函数的最小值
时间: 2024-12-24 07:37:16 浏览: 75
在Python中,我们可以使用`scipy.optimize`库中的`minimize`函数来应用梯度下降法(Gradient Descent)和牛顿法(Newton's Method)。这里是一个简化的例子,我们将分别为这两种优化算法求解给定的二次函数的最小值:
```python
import numpy as np
from scipy.optimize import minimize
# 定义目标函数 f(x1, x2)
def func(x):
return 2 * x[0]**2 + 4 * x[1]**2 - 4 * x[0] * x[1] + 5 * x[0] - 2 * x[1] + 7
# 梯度下降法(使用默认设置)
grad_desc_result = minimize(func, np.array([0, 0]), method='CG') # CG代表 conjugate gradient 法,即有限差分梯度下降的一种加速版本
# 牛顿法
newton_method_result = minimize(func, np.array([0, 0]), method='Newton-CG') # Newton-CG也是牛顿法的变体,使用共轭梯度法估计Hessian矩阵的逆
# 输出结果
print("梯度下降法最小值:", grad_desc_result.x, "函数值:", func(grad_desc_result.x))
print("牛顿法最小值:", newton_method_result.x, "函数值:", func(newton_method_result.x))
阅读全文
相关推荐



















