梯度下降法的matlab代码
时间: 2023-06-30 11:12:30 浏览: 44
以下是一个简单的梯度下降法的 Matlab 代码示例:
```
% 定义函数
f = @(x) (x(1)^2 + x(2)^2);
% 定义梯度函数
grad_f = @(x) [2*x(1); 2*x(2)];
% 初始点
x0 = [1; 1];
% 学习率
alpha = 0.1;
% 迭代次数
max_iter = 100;
% 迭代过程
for i=1:max_iter
% 计算梯度
grad = grad_f(x0);
% 更新参数
x0 = x0 - alpha * grad;
% 打印当前迭代结果
fprintf('Iteration %d: x = (%f, %f), f(x) = %f\n', i, x0(1), x0(2), f(x0));
end
```
在这个示例中,我们定义了一个简单的二次函数 $f(x) = x_1^2 + x_2^2$,并使用梯度下降法来最小化这个函数。我们使用初始点 $x_0 = (1, 1)$,学习率 $\alpha = 0.1$,和最大迭代次数为 100。在每次迭代中,我们计算梯度 $\nabla f(x)$,然后更新参数 $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));
```
此代码中,我们设定了初始点、学习率、迭代次数、函数以及梯度函数,并进行了初始化操作。然后,在每一次迭代中,我们计算梯度、更新参数、计算梯度范数,并进行迭代操作,直到达到最大迭代次数或者梯度范数小于一定阈值为止。最后输出最优解和最小值。