数值分析实验(2)word版本

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

数值分析实验(2)

实验二 插值法 P50

专业班级:信计131班 姓名:段雨博 学号:2013014907 一、实验目的

1、熟悉MATLAB 编程;

2、学习插值方法及程序设计算法。 二、实验题目

1、已知函数在下列各点的值为

试用4次牛顿插值多项式()4P x 及三次样条函数()S x (自然边界条件)对数据进行插值用图给出(){},,0.20.08,0,1,11,10i i i x y x i i =+=,()4P x 及()S x 。 2、在区间[]1,1-上分别取10,20n =用两组等距节点对龙格函数()2

1125f x x =

+作多项式插值及三次样条插值,对每个n 值,分别画出插值函数及()f x 的图形。

3、下列数据点的插值

可以得到平方根函数的近似,在区间[]0,64上作图 (1)用这9个点作8次多项式插值()8L x (2)用三次样条(第一边界条件)程序求()S x

从得到结果看在[]0,64上,哪个插值更精确;在区间[]0,1上,两种插值哪个更精确?

三、实验原理与理论基础

1、拉格朗日差值公式

)()(111k k

k k

k k x x x x y y y x L ---+

=++ 点斜式

k

k k

k k k k k

x x x x y x x x x y x L --+--=++++11111)( 两点式

2、n 次插值基函数

....,2,1,0,)()(0n j y x l y x L i j n

k k k j n ===∑=

n k x x x x x x x x x x x x x l n k n k k k k k ,...,1,0,)

()

(...

)

()

(...

)

()

()(1100=------=

--

3、牛顿插值多项式

...))(](,,[)](,[)()(102100100+--+++=x x x x x x x f x x x x f x f x P n ))...(](,...,[100---+n n x x x x x x f

)(],...,,[)()()(10x x x x f x P x f x R n n n n +=-=ω

4、三次样条函数

若函数],,[)(2b a C x S ∈且在每个小区间],[1+j j x x 上是三次多项式,其中,

b x x x a n =<<<=...10是给定节点,则称)(x S 是节点n x x x ,...,,10上的三次样条函数。若在节点j x 上给定函数值),,...,2,1,0)((n j x f y j i ==并成立,,...,2,1,0,)(n j y x S i j ==则称)(x S 为三次样条插值函数。 5、三次样条函数的边界条件

(1)0)()(''''''00''====n n f x S f x S (2)'''00')(,)(n n f x S f x S == 四、实验内容 1、M 文件:

function [p]=Newton_Polyfit(X,Y) format long g r=size(X); n=r(2);

M=ones(n,n); M(:,1)=Y'; for i=2:n

for j=i:n

M(j,i)=(M(j,i-1)-M(j-1,i-1))/(X(j)-X(j-i+1));

end

end

p0=[zeros(1,n-1) M(1,1)];p=p0;

for i=1:n-1

p1=M(i+1,i+1).*poly(X(1:i));

p0=[zeros(1,n-i-1) p1];

p=p+p0;

end

3、M文件:

function f=Language(~,~,~)

%%求已知数据点的拉格朗日插值多项式

%%已知数据点的x坐标向量:x

%%已知数据点的y坐标向量:y

%%插值点的x坐标:x0

%%解得的拉格朗日插值多项式f

x=[0.0 0.4 0.8 1.2 1.6];

y=[0 0.428392 0.722101 0.910314 0.970348];

x0=[0.3 0.5];

syms t l;

if(length(x)==length(y))

n=length(x);

else

disp('x,y维数不一样');

return;

end

p=sym(0);

for i=1:n

l=sym(y(i));

for k=1:i-1

l=l*(t-x(k))/(x(i)-x(k));

end

for k=i+1:n

l=l*(t-x(k))/(x(i)-x(k));

end

p=p+1;

end

simplify(p);

f=subs(p,'t',x0);

f=vpa(f,6);

end

五、实验结果

1、

>> X=[0.2 0.4 0.6 0.8 1.0];

>> Y=[0.98 0.92 0.81 0.64 0.38];

>> [p]=Newton_Polyfit(X,Y);

>> Y2=polyval(p,X);

>> X1=0:0.01;1;

>> Y3=interp1(X,Y,X1,'spline');

>> plot(X,Y,'o',X,Y2,'r',X1,Y3,'g')图像:

2、

>> X=-1:0.01:1;

>> Y=1./(1+25*X.^2);

>> X1=-1:0.2:1;

>> Y1=1./(1+25*X1.^2);

>> Y2=interp1(X1,Y1,X,'linear');

>> Y3=interp1(X1,Y1,X,'spline');

>> subplot(211)

>> plot(X,Y,X,Y2,'r-',X,Y3,'g-')

图像:

相关文档
最新文档