用python写一个最速下降法的代码
时间: 2023-12-17 17:07:12 浏览: 69
最速下降法代码
以下是一个简单的最速下降法的Python实现:
```python
import numpy as np
def gradient_descent(f, df, x0, learning_rate=0.01, max_iter=1000, tol=1e-6):
"""
最速下降法求解函数f的最小值
f: 目标函数
df: 目标函数的梯度
x0: 初始点
learning_rate: 学习率
max_iter: 最大迭代次数
tol: 收敛条件,当梯度的范数小于tol时认为已经收敛
"""
x = x0
for i in range(max_iter):
grad = df(x)
if np.linalg.norm(grad) < tol:
break
x -= learning_rate * grad
return x, f(x)
# 示例:求解函数f(x) = x^2 + 2x + 1的最小值
f = lambda x: x**2 + 2*x + 1
df = lambda x: 2*x + 2
x0 = 0
x_min, f_min = gradient_descent(f, df, x0)
print("最小值:", f_min)
print("最小值点:", x_min)
```
阅读全文