最速梯度下降算法matlab
时间: 2024-01-07 07:21:29 浏览: 123
最速梯度下降算法是一种优化算法,用于在多元函数中寻找最小值。以下是一个简单的Matlab实现:
```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;
tol = 1e-6;
max_iter = 1000;
% 最速梯度下降算法
for i = 1:max_iter
% 计算梯度
g = grad_f(x0);
% 计算步长
alpha = (g'*g)/(g'*grad_f(x0-alpha*g));
% 更新参数
x1 = x0 - alpha*g;
% 判断是否收敛
if norm(x1-x0) < tol
break;
end
% 更新参数
x0 = x1;
end
% 输出结果
fprintf('Minimum value: %f\n', f(x0));
fprintf('Optimal point: (%f, %f)\n', x0(1), x0(2));
```
该程序定义了一个目标函数和梯度函数,并使用最速梯度下降算法来寻找最小值。程序中的alpha是步长,tol是收敛容差,max_iter是最大迭代次数。程序输出最小值和最优点。
阅读全文