二次曲线拟合,但不能用到matlab的库函数.x=[0 0.9 1.9 3.0 3.9 5.0] y=[0 10 30 51 80 111] 拟合曲线为y=ax2+bx+c
来源:学生作业帮助网 编辑:六六作业网 时间:2025/01/11 23:18:42
二次曲线拟合,但不能用到matlab的库函数.x=[0 0.9 1.9 3.0 3.9 5.0] y=[0 10 30 51 80 111] 拟合曲线为y=ax2+bx+c
二次曲线拟合,但不能用到matlab的库函数.
x=[0 0.9 1.9 3.0 3.9 5.0] y=[0 10 30 51 80 111] 拟合曲线为y=ax2+bx+c
二次曲线拟合,但不能用到matlab的库函数.x=[0 0.9 1.9 3.0 3.9 5.0] y=[0 10 30 51 80 111] 拟合曲线为y=ax2+bx+c
到我空间看去吧,有个程序完成这个问题,代码里提供了方程组求解和多项式拟合两种方法.
x=[0 0.9 1.9 3.0 3.9 5.0];
y=[0 10 30 51 80 111];
%y=ax2+bx+c
p=polyfit(x,y,2);
a=p(1)
b=p(2)
c=p(3)
%以下几行是看一下拟合的效果
xx=linspace(min(x),max(x),50);
yy=polyv...
全部展开
x=[0 0.9 1.9 3.0 3.9 5.0];
y=[0 10 30 51 80 111];
%y=ax2+bx+c
p=polyfit(x,y,2);
a=p(1)
b=p(2)
c=p(3)
%以下几行是看一下拟合的效果
xx=linspace(min(x),max(x),50);
yy=polyval(p,xx);
plot(x,y,'*',xx,yy,'r')
得到的结果:
a =
2.2684
b =
11.1601
c =
-0.6179
==============不用库函数===============
%你得构造出矩阵A,你好好看矩阵A里面的内部
%然后再想一下A*[a;b;c]是什么样的形式,就知道为什么这样做了
%相当于6个线性方程组,三个未知数
>> x=[0 0.9 1.9 3.0 3.9 5.0];
y=[0 10 30 51 80 111];
A=[(x').^2,x',ones(size(x'))];
cons=A\y';
a=cons(1)
b=cons(2)
c=cons(3)
结果:
a =
2.2684
b =
11.1601
c =
-0.6179
与调用polyfit一致
收起