数值分析实验报告3

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验名称 平方逼近与最小二乘法

实验目的

(1)学习并熟练掌握MA TLAB 语言的编程; (2)学习最小二乘法及程序设计算法。 实验原理:

1,由题意决定span(1,x,x^2,…),即决定拟合多项式.

2.分别计算1

(,)(,)n

i j i

j

m k k k k ==

∑,1

(,)(,)n

i

i

j

m k y k y -

==∑

3.用(,)i j k k 组成方阵A,用(,)i k y -

组成矩阵B. 4, 利用A/B 求出该多项式的系数,再利用

1

(())^2n

i

i

i f x y =-∑求出平方误差.

实验题目

1,对于给函数f(x)=

2

1

125x

+在区间【-1,1】上取i x =-1+0.2i (i=0,1…10),试求3次曲线拟合,试画出你和曲线并打印出方程。 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

试求3次,4次多项式的曲线拟合,再根据数据曲线形状,求一个另外函数的拟合曲线,用图示数据曲线及相应的三种拟合曲线。 3,给定数据点(i x i y )如表所示。

i x 0 0.5 0.6 0.7 0.8 0.9 1.0 i y

1.75

1.96

2.19

2.44

2.71

3.00

用最小二乘法求拟合数据的二次多项式,并求平方误差。 实验结果

1.

i = 0:10;

x = -1+0.2*i; y = 1./(1+25*x.^2); p=polyfit(x,y,3); s=vpa(poly2sym(p)) f = polyval(p,x);

plot( x, f, x, y, 'o ')

s =

0.000000000000000018136579684810800950071230066733*x^3 - 0.57518273581808898597955703735352*x^2 -

0.00000000000000021309598658452197357889078781603*x +

0.48412492484890667920893747577793

2,

x=[0 0.1 0.2 0.3 0.5 0.8 1];

y=[1 0.41 0.5 0.61 0.91 2.02 2.46];

p1=polyfit(x,y,3)%三次多项式拟合

p2=polyfit(x,y,4)%四次多项式拟合

y1=polyval(p1,x);

y2=polyval(p2,x);%多项式求值

plot(x,y,'c--',x,y1,'r:',x,y2,'y-.')

p3=polyfit(x,y,2)% 观察图像,类似于抛物线,用二次多项拟合

y3=polyval(p3,x);

plot(x,y,'c--',x,y1,'r:',x,y2,'y-.',x,y3,'k--')%画出四种拟合曲线

p1 =

-6.6221 12.8147 -4.6591 0.9266

p2 =

2.8853 -12.3348 16.2747 -5.2987 0.9427

p3 =

3.1316 -1.2400 0.7356

3,

function []=zuixiaoercinihe2(x,y)

n=length(x);

k00=0;

for i=1:n

k00=k00+1;

end

k01=0;

for i=1:n

k01=k01+x(i);

end

k02=0;

for i=1:n

k02=k02+x(i)*x(i);

end

k11=0;

for i=1:n

k11=k11+x(i)*x(i);

end

k12=0;

for i=1:n

k12=k12+x(i)*x(i)*x(i);

end

k22=0;

for i=1:n

k22=k22+x(i)*x(i)*x(i)*x(i);

end

k0y=0;

for i=1:n

k0y=k0y+y(i);

end

k1y=0;

for i=1:n

k1y=k1y+x(i)*y(i);

end

k2y=0;

for i=1:n

k2y=k2y+x(i)*x(i)*y(i);

end

A=[k00 k01 k02;k01 k11 k12;k02 k12 k22];

B=[k0y;k1y;k2y];

C=A\B;

p=C(1);

q=C(2);

r=C(3);

syms m;

'拟合的二次函数为:'

f=p+q*m+r*m*m

l=0;

for i=1:n

l=l+((p+q*x(i)+r*x(i)*x(i))-y(i))*((p+q*x(i)+r*x(i)*x(i))-y(i)); end

'该拟合函数的平方误差为:'

l

拟合的二次函数为:

f =

1+m+9007199254740963/9007199254740992*m^2

ans =

该拟合函数的平方误差为:

l =

5.8178e-030

相关文档
最新文档