梯度下降法matlab
时间: 2023-10-16 16:18:49 浏览: 76
MATLAB梯度下降法
5星 · 资源好评率100%
梯度下降法是一种常用的优化算法,可以用于求解函数的最小值。在 MATLAB 中,可以使用以下代码实现梯度下降法:
```
% 定义目标函数
f = @(x) x(1)^2 + 2*x(2)^2;
% 定义梯度函数
grad_f = @(x) [2*x(1); 4*x(2)];
% 初始点
x0 = [1; 1];
% 学习率
alpha = 0.1;
% 迭代次数
n_iter = 100;
% 梯度下降算法
x = x0;
for i = 1:n_iter
x = x - alpha * grad_f(x);
end
% 输出结果
disp(['最小值点为:(', num2str(x(1)), ', ', num2str(x(2)), ')']);
disp(['最小值为:', num2str(f(x))]);
```
在上述代码中,首先定义了目标函数 f 和梯度函数 grad_f。然后,设置初始点 x0、学习率 alpha 和迭代次数 n_iter。接着,使用 for 循环进行迭代,每次更新 x 的值。最后输出最小值点和最小值。
需要注意的是,梯度下降法的成功与否取决于学习率的选择,如果学习率过大或者过小都会导致算法的不稳定和收敛速度慢。因此,需要根据具体问题进行调整。
阅读全文