利用python编写梯度下降程序 计算z=f(x,y)=x^2+y^2从点(7,8)开始下降,步长为0.01,给出部分中间过程的点的轨迹 画图
时间: 2024-10-13 17:08:10 浏览: 23
Regression.7z
在Python中,我们可以使用`numpy`库来计算函数的梯度,然后利用`matplotlib`库来可视化梯度下降的过程。首先,让我们编写一个简单的梯度下降算法,并绘制部分中间步骤的点的轨迹。
```python
import numpy as np
import matplotlib.pyplot as plt
# 定义目标函数 f(x, y) = x^2 + y^2
def func(x, y):
return x**2 + y**2
# 初始化参数
start_point = np.array([7, 8])
learning_rate = 0.01
num_steps = 50 # 中间点的数量
points = [start_point]
# 梯度下降迭代过程
for _ in range(num_steps):
gradient = 2 * np.array([start_point[0], start_point[1]])
next_point = start_point - learning_rate * gradient
points.append(next_point)
start_point = next_point # 更新当前点
# 绘制路径
plt.figure(figsize=(6, 6))
plt.plot(points[:, 0], points[:, 1], 'o-')
plt.title('梯度下降过程')
plt.xlabel('x')
plt.ylabel('y')
plt.grid(True)
plt.show()
```
这个脚本会从点(7, 8)开始,按照每次步长0.01的方向更新位置,直到达到一定次数(这里是50次)。每次迭代后的点会被添加到列表中,最后绘制出这些点构成的路径。注意,由于这是一个简单的一维优化问题的二维可视化,实际应用中可能会更复杂,涉及多维度的数据和高维空间的降维展示。
阅读全文