当x=1时,y=8,x=2时,y=7,x=5时,y=10,x=10时,y=21,如何在matlab中试用最小二乘法求形如y=a+b/x的多项式,进行拟和?
时间: 2023-06-11 09:07:39 浏览: 106
可以用MATLAB中的polyfit函数实现最小二乘拟合。
首先,我们将原始数据点存储为两个向量x和y:
```
x = [1 2 5 10];
y = [8 7 10 21];
```
然后,我们将y值除以x值,得到新的y向量:
```
y_new = y./x;
```
接下来,我们使用polyfit函数拟合y_new向量:
```
p = polyfit(x,y_new,1);
```
其中,第三个参数1表示拟合多项式的次数,这里我们使用一次多项式。
最后,我们可以通过得到的拟合系数计算出a和b:
```
a = p(2);
b = p(1);
```
这里p(2)表示拟合多项式的常数项,p(1)表示拟合多项式的一次项系数。
然后,我们可以用a和b来构造拟合的多项式函数:y_fit = a*b./x。
完整的MATLAB代码如下:
```
x = [1 2 5 10];
y = [8 7 10 21];
y_new = y./x;
p = polyfit(x,y_new,1);
a = p(2);
b = p(1);
y_fit = a*b./x;
plot(x,y,'o',x,y_fit,'-');
legend('原始数据','拟合曲线');
```
阅读全文