梯度下降法matlab代码
时间: 2023-09-04 18:13:07 浏览: 108
以下是一个简单的梯度下降法的MATLAB代码示例:
```matlab
% 定义目标函数
f = @(x) x^2 + 2*x + 1;
% 定义目标函数的梯度
df = @(x) 2*x + 2;
% 初始点
x0 = 0;
% 学习率
alpha = 0.1;
% 迭代次数
max_iter = 100;
% 初始化迭代变量
x = x0;
iter = 0;
% 迭代更新
while iter < max_iter
% 计算梯度
grad = df(x);
% 更新参数
x = x - alpha * grad;
% 更新迭代次数
iter = iter + 1;
end
% 输出结果
fprintf('最终迭代次数:%d\n', iter);
fprintf('最优解:%f\n', x);
fprintf('目标函数最小值:%f\n', f(x));
```
这是一个简单的一元二次函数的例子,可以根据需要进行修改。
相关问题
梯度下降算法matlab代码
以下是一个简单的梯度下降算法的 Matlab 代码示例:
```matlab
% 初始化变量
theta = zeros(2,1); % 参数向量
alpha = 0.01; % 学习速率
num_iters = 1500; % 迭代次数
% 加载数据
data = load('ex1data1.txt');
X = data(:, 1); % 特征向量
y = data(:, 2); % 目标值向量
m = length(y); % 样本数量
% 梯度下降算法
for iter = 1:num_iters
% 计算假设函数的预测值
h = X * theta;
% 计算误差
error = h - y;
% 更新参数向量
theta = theta - (alpha / m) * X' * error;
end
% 显示结果
fprintf('最终的参数向量为:\n');
fprintf('%f\n', theta);
```
在这个示例中,我们使用梯度下降算法来拟合一个线性回归模型。我们首先加载数据,然后初始化参数向量、学习速率和迭代次数。在每次迭代中,我们计算假设函数的预测值,计算误差,并使用误差来更新参数向量。最后,我们输出最终的参数向量。
梯度下降法MATLAB代码
梯度下降法是一种常见的优化算法,用于最小化一个函数。它的思想是沿着函数下降最快的方向来搜索最优解。以下是梯度下降法的MATLAB代码示例:
```matlab
% 设定初始点
x0 = [1; 2];
% 设定学习率
alpha = 0.1;
% 设定迭代次数
max_iter = 1000;
% 定义函数
f = @(x) x(1)^2 + x(2)^2;
% 定义梯度函数
grad_f = @(x) [2*x(1); 2*x(2)];
% 初始化参数
x = x0;
iter = 0;
grad_norm = Inf;
% 开始迭代
while iter < max_iter && grad_norm > 1e-6
% 计算梯度
grad = grad_f(x);
% 更新参数
x = x - alpha * grad;
% 计算梯度范数
grad_norm = norm(grad);
% 迭代次数加1
iter = iter + 1;
end
% 输出最优解和最小值
fprintf('最优解为 (%f, %f)\n', x(1), x(2));
fprintf('最小值为 %f\n', f(x));
```
此代码中,我们设定了初始点、学习率、迭代次数、函数以及梯度函数,并进行了初始化操作。然后,在每一次迭代中,我们计算梯度、更新参数、计算梯度范数,并进行迭代操作,直到达到最大迭代次数或者梯度范数小于一定阈值为止。最后输出最优解和最小值。
阅读全文