matlab 梯度下降函数
时间: 2023-10-26 09:05:11 浏览: 139
在 MATLAB 中,你可以使用 `gradientdescent` 函数来实现梯度下降算法。以下是一个示例:
```matlab
% 定义目标函数和其梯度
function [f, df] = targetFunction(x)
f = x^4 - 3*x^3 + 2;
df = 4*x^3 - 9*x^2;
end
% 梯度下降函数
function [x_opt, f_opt] = gradientDescent(x_init, learning_rate, num_iterations)
% 初始化参数
x_opt = x_init;
% 迭代更新
for i = 1:num_iterations
[f, df] = targetFunction(x_opt);
% 更新参数
x_opt = x_opt - learning_rate * df;
end
% 计算最优解和最优值
[f_opt, ~] = targetFunction(x_opt);
end
% 示例使用
x_init = 2; % 初始点
learning_rate = 0.1; % 学习率
num_iterations = 100; % 迭代次数
[x_opt, f_opt] = gradientDescent(x_init, learning_rate, num_iterations);
disp(['Optimal solution: ', num2str(x_opt)]);
disp(['Optimal value: ', num2str(f_opt)]);
```
在上面的示例中,我们首先定义了目标函数 `targetFunction`,并计算其梯度。然后,我们定义了梯度下降函数 `gradientDescent`,它使用给定的初始点、学习率和迭代次数来执行梯度下降算法。最后,我们使用示例参数调用 `gradientDescent` 函数,并输出最优解和最优值。
请注意,这只是一个简单的示例,你可以根据自己的需要修改目标函数和相关参数。
阅读全文