matlab梯度下降法拟合二次多项式
时间: 2023-07-13 07:35:28 浏览: 218
使用梯度下降法拟合二次多项式可以通过以下步骤实现:
1. 定义损失函数,例如均方误差(MSE)。
2. 初始化模型参数,例如用随机数初始化权重。
3. 对于每个训练样本,计算损失函数对于每个模型参数的偏导数,即梯度。
4. 更新模型参数,例如使用学习率乘以梯度来更新权重。
5. 重复步骤3和4,直到达到收敛条件。
下面是一个使用梯度下降法拟合二次多项式的MATLAB示例代码:
```matlab
% 生成数据
x = linspace(0, 1, 100)';
y = 2*x.^2 -3*x + 1 + 0.5*randn(100, 1);
% 定义模型参数和损失函数
w = randn(3, 1);
loss = @(w) mean((w(1)*x.^2 + w(2)*x + w(3) - y).^2);
% 梯度下降
lr = 0.1;
for i = 1:1000
% 计算梯度
grad = [mean(2*(w(1)*x.^2 + w(2)*x + w(3) - y).*x.^2);
mean(2*(w(1)*x.^2 + w(2)*x + w(3) - y).*x);
mean(2*(w(1)*x.^2 + w(2)*x + w(3) - y))];
% 更新权重
w = w - lr*grad;
% 打印损失
disp(loss(w));
end
% 绘制拟合曲线
plot(x, y, 'o');
hold on;
plot(x, w(1)*x.^2 + w(2)*x + w(3), 'r');
```
在这个例子中,我们使用一个二次多项式模型拟合二次函数,并使用随机梯度下降法更新模型参数。
阅读全文