用MATLAB写最小乘二法求形如y=a+b/x的多项式
时间: 2023-06-19 20:05:06 浏览: 109
最小乘二法(OLS)是一种线性回归方法,可以用来拟合形如y=a+b/x的多项式。具体步骤如下:
1.构造数据矩阵X和响应向量y,其中X的第一列全为1,第二列为x的倒数,其余列为x的幂。
2.计算OLS估计值b=(X'X)^(-1)X'y。
3.根据估计值b,构造多项式模型y=a+b(1)/x+b(2)x^(-2)+...+b(n)x^(-n)。
以下是MATLAB代码实现:
```matlab
% 生成数据
x = 1:10;
y = [1.8, 1.1, 0.7, 0.5, 0.35, 0.25, 0.2, 0.15, 0.1, 0.05];
% 构造数据矩阵X和响应向量y
X = [ones(length(x), 1), 1./x', 1./x'.^2, 1./x'.^3];
y = y';
% 计算OLS估计值b
b = inv(X'*X)*X'*y;
% 构造多项式模型
a = b(1);
b1 = b(2);
b2 = b(3);
b3 = b(4);
xx = 1:0.1:10;
yy = a + b1./xx + b2./xx.^2 + b3./xx.^3;
% 绘图
plot(x, y, 'o', xx, yy);
xlabel('x');
ylabel('y');
title('Multiple Polynomial Regression using OLS');
legend('Data', 'Model');
```
这段代码可以生成一条拟合曲线,拟合效果如下所示:
![OLS](https://img-blog.csdnimg.cn/20210515164010506.png)
阅读全文