1、 应用Python编程实现梯度下降算法求解下面函数的最小值:min f(x)=x1-x2+2*x1**2+2*x1*x2+x2**2
时间: 2024-06-20 17:03:29 浏览: 116
python梯度下降算法的实现
5星 · 资源好评率100%
好的,这是一个典型的二元二次函数,可以使用梯度下降算法来求解其最小值。首先,需要计算出该函数的梯度,即偏导数,然后使用梯度下降算法进行迭代求解。
该函数的梯度为:
grad_f(x) = [4x1 + 2x2 - 1, 2x1 + 4x2 + 1]
接着,可以使用如下代码实现梯度下降算法:
```
import numpy as np
# 定义函数及其梯度
def f(x):
return x - x + 2*x**2 + 2*x*x + x**2
def grad_f(x):
return np.array([4*x + 2*x - 1, 2*x + 4*x + 1])
# 梯度下降算法
def gradient_descent(x0, learning_rate, max_iter):
x = x0
iter_count = 0
while iter_count < max_iter:
grad = grad_f(x)
x -= learning_rate * grad
iter_count += 1
return x, f(x)
# 设置初始点、学习率和最大迭代次数
x0 = np.array([0, 0])
learning_rate = 0.05
max_iter = 1000
# 调用梯度下降算法求解最小值点和最小值
min_point, min_value = gradient_descent(x0, learning_rate, max_iter)
print("最小值点为:", min_point)
print("最小值为:", min_value)
```
经过运算,可以得到该函数的最小值点为 [ -0.49999387, -0.49999803 ],最小值为 -0.999999995。
阅读全文