利用最小二乘法求解拟合曲线

利用最小二乘法求解拟合曲线
利用最小二乘法求解拟合曲线

实验三函数逼近

1. 掌握数据多项式拟合的最小二乘法。

2. 会求函数的插值三角多项式。

二、实验问题

(1)由实验得到下列数据

(2)求函数f x =X2COSX在区间[-甌二]上的插值三角多项式。

三、实验要求

1. 利用最小二乘法求问题(1)所给数据的3次、4次拟合多项式,画出拟合曲线。

2

2. 求函数f X =X COSX在区间[-二,二]上的16次插值三角多项式,并画出插值多项式的图形,与f X的图形比较。

2

3. 对函数f X i = X COSX,在区间[-M,二]上的取若干点,将函数值作为数据进行适当

次数的最小二乘多项式拟合,并计算误差,与上题中的16次插值三角多项式的结果进行比较。

《数值分析》实验报告

【实验课题】

利用最小二乘法求上述问题所给数据的 2次,

3次、4次拟合多项式,画出拟合曲线

【实验目标】

(1) 加深对用最小二乘法求拟合多项式的理解 (2) 学会编写最小二乘法的数值计算的程序;

在函数的最佳平方逼近中f (X )?二C[a,b],如果f (X )只在一组离散点集

{xj =0,1, ,m}上给出,这就是科学实验中经常见到的实验数据

{(X j ,yj,i = 0,1,…,m}的

曲线拟合,这里y j=f(xji = 0,1; m,,要求一个函数y=S(x)与所给数据 T

{(X y ),= 0厂 1,m 拟合,若记误差 5i =S (xj — %(i =0,1,…,m) ,3 =?,d ,,酩),

设 0(x), 1(x),…,

n

(x)是 C[a,b]上的线性无关函数族,在

=span[ - 0(x), :1(x),…,::n (x)}中找一个函数S*(x),使误差平方和

这里

|S(x)二 a 。0(x) a [(x 「 a . :

n (x)(n :: m)

这就是一般的最小二乘逼近,用几何语言说,就称为曲线拟合的最小二乘法。 通常在最小二乘法中考虑加权平方和有

m

(J)八、(x):j

(x)匚(X ),

i=0 m

(f, :

k )八’(X i )f (X i ) l(x)二 d k ,k =0,1,…,n

i =e

上式可改写为

' (\, \)a^d k ,k =0,1,…,n 。

j :0

这个线性方程组称为法方程,可将其写成矩阵形式

Ga = d,

m

m

||、||;八、i 2 = <: [S (xj - y i ]

i =Q

i=0

PM :

[S(G-y i ]

=0

其中a -(a。?,…,aJ T,d =(doa,…,dJ T

伫0,%),(%严1),…,(%宀厂

伴,%),(%,%),…,(化巴)

G = ‘

*

1件卑),(咒,申1),…,(%,即』

求出a o,a i,…,a n

则拟合函数S* (x) = a。yx ? a2x2「…■■- a n x n

a=in v(G)*d

【实验问题】

利用最小二乘法求所给数据的2次、3次、4次拟合多项式,画出拟合曲线。【实验过程与结果】

编写程序后运行,n=2?3?4分别计算,得出结果和图像

(1)n=2 时

x=[0.0 0.1 0.2 0.3 0.5 0.8 1.0]'

y=[1.0 0.41 0.50 0.61 0.91 2.02 2.46]' n=2

p=leastsq(x,y,n)

I=lsp(p,t) 回车得到结果

0.7356

-1.2400

3.1316

所以拟合多项式为I =t*((18733*t)/5982 - 74179/59820) +

73337/99700

(2)n=3 时

x=[0.0 0.1 0.2 0.3 0.5 0.8 1.0]'

y=[1.0 0.41 0.50 0.61 0.91 2.02 2.46]' n=3

Apleastsq(x,y,n)

I=lsp(p,t) 回车得到结果

0.9266

-4.6591

12.8147

-6.6221

所以拟合多项式为I=0.9266 -4.6591t+3 12.8147

t A2+ -6.6221t A3;

(3)n=4 时

x=[0.0 0.1 0.2 0.3 0.5 0.8 1.0]'

y=[1.0 0.41 0.50 0.61 0.91 2.02 2.46]' n=4

p=leastsg(x,y,n)

I=lsq(p,t) 回车得到结果

A=

0.9427

-5.2987

16.2747

-12.3348

2.8853

附程序

1.Main

x=[0.0 0.1 0.2 0.3 0.5 0.8 1.0]'

y=[1.0 0.41 0.50 0.61 0.91 2.02 2.46]' syms t

n=2

p=leastsq(x,y,n) c=lsp(p,t) plot(x,y,'*')

2.

function p=leastsq(x,y,n) m=length(x);

G=zeros(n+1,n+1); b=zeros(n+1,1);

for i=0:n

for j=0:n

G(i+1,j+1)=(x.Ai)'*(x.Aj);

end

end

for k=0:n b(k+1,1)=(x.A k)'*y;

end

p=inv(G)*b;

3.

function I=lsp(p,t) m=length(p)-1; I=p(m+1);

for j=m:-1:1

I=I.*t+p(j);

end

相关主题
相关文档
最新文档