梯度下降算法matlab
时间: 2023-06-12 16:06:23 浏览: 104
gradient_demo.m.tar.gz_梯度matlab_梯度下降_梯度下降 MATLAB_梯度下降算法_梯度算法
以下是一个简单的梯度下降算法的 MATLAB 实现,假设我们要最小化一个函数 f(x):
```matlab
function [x, fval] = gradient_descent(f, x0, alpha, epsilon, max_iter)
% 梯度下降算法
%
% 输入参数:
% f: 目标函数句柄
% x0: 初始点
% alpha: 步长
% epsilon: 收敛精度
% max_iter: 最大迭代次数
%
% 输出参数:
% x: 最优解
% fval: 最优解的函数值
x = x0;
iter = 0;
while iter < max_iter
fx = f(x);
grad = (f(x + epsilon) - fx) / epsilon; % 计算梯度
x = x - alpha * grad; % 更新变量
iter = iter + 1;
end
fval = f(x);
end
```
在使用时,需要定义一个目标函数句柄,例如:
```matlab
f = @(x) x^2 + 2*x + 1;
[x, fval] = gradient_descent(f, 1, 0.1, 1e-6, 1000);
```
上面的代码将使用梯度下降算法求解函数 f(x) = x^2 + 2x + 1 的最小值,初始点为 1,步长为 0.1,收敛精度为 1e-6,最大迭代次数为 1000。最终得到的最优解 x 和函数值 fval 将作为输出返回。
阅读全文