梯度下降法求解最小值matlab
时间: 2023-10-24 12:32:49 浏览: 140
MATLAB梯度下降法
在Matlab中,可以使用梯度下降法求解一个函数的最小值。下面是一个简单的示例代码:
```matlab
% 定义目标函数
f = @(x) x^2 + 2*x + 1;
% 定义目标函数的导数
df = @(x) 2*x + 2;
% 初始化参数
x0 = 0; % 初始值
lr = 0.1; % 学习率
max_iter = 100; % 最大迭代次数
% 梯度下降法迭代
for i = 1:max_iter
% 计算梯度
gradient = df(x0);
% 更新参数
x0 = x0 - lr * gradient;
% 判断是否收敛
if abs(gradient) < 1e-6
break;
end
end
% 输出最小值和最优解
min_value = f(x0);
optimal_solution = x0;
disp(['最小值:', num2str(min_value)]);
disp(['最优解:', num2str(optimal_solution)]);
```
在这个例子中,我们定义了一个目标函数f(x) = x^2 + 2x + 1,并且给出了其导数df(x) = 2x + 2。然后我们使用梯度下降法迭代更新参数x,直到梯度的绝对值小于某个阈值。最后输出最小值和对应的最优解。
请注意,这只是一个简单的示例代码,实际应用中可能需要根据具体问题进行调整和更多的优化。
阅读全文