曲线拟合例题
1、关于y=f(x )有一些观测数据
x=-2*pi:0.1*pi:2*pi,则
对应的函数值为
y=[ 0.0000.87261.38031.38761.0490.6667.4612 ]
0.43650.42930.2848-0.0000-0.2848-0.4293-0.4365
- 0.4612-0.6667-1.0490-1.3876-1.3803-0.8726
0.87261.38031.38761.0490.66670.46120.4365
0.42930.28480.0000-0.2848-0.4293-0.4365-0.4612
- 0.6667-1.0490-1.3876-1.3803-0.8726-0.0000;
2、用plot(x,y )绘图
x=-2*pi:0.1*pi:2*pi;
y=[ 0.0000.87261.38031.38761.0490.6667.4612 ] .
0.43650.42930.2848-0.0000-0.2848-0.4293-0.4365 .
- 0.4612-0.6667-1.0490-1.3876-1.3803-0.8726 .
0.87261.38031.38761.0490.66670.46120.4365 .
0.42930.28480.0000-0.2848-0.4293-0.4365-0.4612 .
- 0.6667-1.0490-1.3876-1.3803-0.8726-0.0000;
plot(x,y,' ')
霍尔德on
打印(x,y,' g ' ) ) )。
3、观察图形,发现了类似sin、cos的周期振动函数
请尝试选择拟合函数f(x )=c1*sin(x ) x ) C2 * sin (2* x ) C3 * sin (3* x )
希望使合适的c1、c2、c3、S.T.=(F(Xi )-yi ) 2最小。
请注意,这里的x、y都是由已知数构成的向量; c1、c2、c3尚未确定。
即=(f ) Xi )-yi )2=g ) C1、c2、c3 )。
拟合问题被转换为求min{=g(C1,c2,c3 ) }
4、=g(c1、c2、c3 )是C1、c2、c3的元函数,因此能够求出偏导数
'c1、'c2、'c3,以及
'c1=0
'c2=0
c3=0,联立求解c1、c2、C3。
5、使用Matlab求解
步骤1 :创建m文件
函数p=stu (c,x ) )。
p=c(1) sin ) x ) c )2) sin )2*x ) c )3) sin )3*x );
步骤2 :在工作区中,输入c1、c2和c3的估计值。 范例
c=[1 1 1]
第三步:调用
p=lsqcurvefit('stu ',c,x,y ) ) ) ) )。
第四步:绘制拟合函数和观测数据的贴近度进行验证
plot(x,y,' r ',x,p(1) sin ) x ) p )2) sin )2*x ) p )3) sin )3*x ),' g ) )
业务支持用户
2016-12-06
通报