梯度下降算法的matlab实现
时间: 2023-09-15 15:17:59 浏览: 231
gradient_demo.m.tar.gz_梯度matlab_梯度下降_梯度下降 MATLAB_梯度下降算法_梯度算法
以下是一个简单的梯度下降算法的 MATLAB 实现,用于最小化一个函数:
```matlab
% 定义要最小化的函数
f = @(x) x^2 + 2*x + 1;
% 初始值
x0 = 0;
% 学习率
alpha = 0.1;
% 最大迭代次数
max_iter = 100;
% 初始化迭代次数和梯度
iter = 0;
grad = 1;
% 循环迭代
while iter < max_iter && abs(grad) > 1e-6
% 计算梯度
grad = 2*x0 + 2;
% 更新参数
x0 = x0 - alpha * grad;
% 更新迭代次数
iter = iter + 1;
end
% 输出结果
fprintf('最小值: %f\n', f(x0));
fprintf('迭代次数: %d\n', iter);
```
该代码中,我们首先定义了要最小化的函数 `f`,然后设置了初始值 `x0`、学习率 `alpha` 和最大迭代次数 `max_iter`。接下来,我们进入循环迭代,计算当前点的梯度,更新参数,更新迭代次数,直到达到最大迭代次数或梯度小于一定阈值为止。最后输出结果。
请注意,这只是一个简单的梯度下降算法实现,如果您需要更复杂的算法,可能需要进行更多的参数调整和代码优化。
阅读全文