数值分析与matlab实现论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、插值与拟合已知()101
x
f x e x
=+-
(1)求函数在0,0.2,0.4,0.6,0.8,1
x=处的函数值;(先编函数,再求值保存到向量中)
(2)对上述数据进行多项式插值,作出多项式
5()
y P x
=的图像,与原函数图象比较;
(先列出差分表,再用牛顿插值公式编写出多项式函数)
(3)对上述数据做线性拟合,作出多项式
1()
y P x
=的图像;
(先定义内积函数,再列出法方程,然后求解,最后编出多项式函数)(4)构造()
f x在[0,1]区间内的5次切比雪夫多项式5()
T x,并作出图像。
(先生成切比雪夫点,再列出差分表,再插值)
(1)函数代码为%
f u n c t i o n y=P(x)
y=e x p(x)+10*x-1;
函数文件%
x=[0:0.2:1];
y=P(x)
相应点的函数值
结果为y=02.22144.49186.8221
9.225511.7183
(2)差分表代码为%
f u n c t i o n A=f f(x,y)
n=l e n g t h(x);
A=z e r o s(n,n+1);
A(:,1)=x';
A(:,2)=y';
f o r j=3:n
f o r i=j-1:n
A(i,j)=A(i,j-1)-A(i-1,j-1);
end
end
差分表代码
x=[0:0.2:
y=P(x);
A=f f(x,y)
结果为A=
0 0 0 0 0 0 0 0.2000 2.2214 2.2214 0 0 0 0 0.4000 4.4918 2.2704 0.0490 0 0 0 0.6000 6.8221 2.3303 0.0599 0.0109 0 0
0.8000 9.2255 2.4034 0.0731 0.0133 0.0024 0
1.0000 11.7183
2.4927 0.0893 0.0162 0.0029 0
牛顿插值公式代码为 %x =0:0.2:1;y =P (x );C =n e w p o l y (x ,y );
x x =0:0.1:1;y y =p o l y v a l (C ,x x );y y y =p o l y 2s t r (C ,'x ')p l o t (x ,y ,'r o ',x x ,y y )
牛顿插值及相应图像
%function c=new poly(x,y)n=length(x);d=zeros(n,n);d(:,1)=y';for j=2:n for k=j:n
d(k,j)=(d(k,j-1)-d(k-1,j-1))/(x(k)-x(k-j+1)); end end c=d(n,n);for k=(n-1):-1:1 c=conv(c,poly(x(k))); m 牛顿插值法程序=length(c); c(m )=c(m )+d(k,k);end
结果为 5
4
3
2
0.0138540.034866
0.17041
0.4990711.0001
y y y x x x x x
=+
+++
(3)对上述数据做线性拟合,关键在于找出法方程。定义如下的内积函数:
06
0(,)i
i i
w ϕϕ==
∑,0
6
1(,)i i
i i
w x ϕ
ϕ==
∑,6
21
1(,)i i
i i
w x ϕ
ϕ==
∑,6
1
(,)f i
i
i i
w f ϕ
ϕ==
∑,这里取
权重为1,然后再构造如下的法方程,1
(,)k j j k j a d ϕϕ==∑(k=0,1),由法方程得到
线性方程组,从而通过解线性方程组得到线性拟合曲线的系数。
线性拟合程序代码为 (1)
(,,)
();(1,1);(,1)c =a \b ;
c =f l i ;1:1
(:pud(,).
;
*;*;c);
k function c Ispoly x y m n length x b zeros m f zeros n m for k m f k x end a f f b f y -===+=+=+'='=''=
x =0:0.2:1;y =P C =I s p o l y (x ,y ,3);
x x =0:0.1:1;
y y =p o l y v a l (C ,x x );y y y =p o l y 2s t r (C ,'x ')p l o t (x ,y ,'r o ',x x ,y y )
结果为 320.279240.424311.01470.00018852yyy x x x =++-
(4)利用6()T x 的零点作插值节点,构造()f x 在[0,1]区间内的5次多项式。由
于切比雪夫零点是在区间[1,1]-之间,对于一般区间只要利用如下的变换即可。
()/2*cos((2*1)*/2*(1))()/2,0,1....k x b a k pi n a b k n =-++++= 所
以首先要生成切比雪夫点。,利用上述区间变换的公式可得节点:
0124560.98,0.85,0.63,0.37,0.15,0.017
x x x x x x ======,进一步得到差分表,找
出插值函数,并作出相关图像。
代码为 x =[0.98,0.85,0.63,0.37,0.1
y =P (x );A =f f (x ,y )C =n e w p o l y (x ,y );x x =0:0.1:1;
y y =p o l y v a l (C ,x x );
y y y =p o l y 2s t r (C ,'x ')
p l o t (x ,y ,'r o ',x x ,y y )
,
结果为A =
0.9800 11.4645 0 0 0 0 0 0.8500 9.8396 -1.6248 0 0 0 0
0.6300 7.1776 -2.6620 -1.0372 0 0 0 0.3700 4.1477 -3.0299 -0.3678 0.6694 0 0 0.1500 1.6618 -2.4859 0.5440 0.9118 0.2424 0 0.0170 0.1871 -1.4747 1.0112 0.4672 -0.4446 0
5
4
3
2
0.0138540.0349150.170310.4991211.0001 1.0643006
yyy x x x x x e =++++--