matlab实现数值分析插值及积分
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab实现数值分析插值及积分
摘要:
数值分析(numerical analysis)是研究分析用计算机求解数学计算问题的数值计算方法及其理论的学科,是数学的一个分支,它以数字计算机求解数学问题的理论和方法为研究对象。在实际生产实践中,常常将实际问题转化为数学模型来解决,这个过程就是数学建模。学习数值分析这门课程可以让我们学到很多的数学建模方法。
分别运用matlab数学软件编程来解决插值问题和数值积分问题。题目中的要计算差值和积分,对于问题一,可以分别利用朗格朗日插值公式,牛顿插值公式,埃特金逐次线性插值公式来进行编程求解,具体matlab代码见正文。编程求解出来的结果为:=+。
其中Aitken插值计算的结果图如下:
对于问题二,可以分别利用复化梯形公式,复化的辛卜生公式,复化的柯特斯公式编写程序来进行求解,具体matlab代码见正文。编程求解出来的结果为: 0.6932
其中复化梯形公式计算的结果图如下:
问题重述
问题一:已知列表函数
表格 1
分别用拉格朗日,牛顿,埃特金插值方法计算。
问题二:用复化的梯形公式,复化的辛卜生公式,复化的柯特斯公式计算积分,使精度小于5。
问题解决
问题一:插值方法
对于问题一,用三种差值方法:拉格朗日,牛顿,埃特金差值方法来解决。
一、拉格朗日插值法:
拉格朗日插值多项式如下:
首先构造1+n 个插值节点n x x x ,,,10 上的n 插值基函数,对任一点i x 所对应的插值基函数
)(x l i ,由于在所有),,1,1,,1,0(n i i j x j +-=取零值,因此)(x l i 有因子
)())(()(110n i i x x x x x x x x ----+- 。又因)(x l i 是一个次数不超过n 的多项式,所以只
可能相差一个常数因子,固)(x l i 可表示成:
)())(()()(110n i i i x x x x x x x x A x l ----=+-
利用1)(=i i x l 得:
)
())(()(1
110n i i i i i i x x x x x x x x A ----=
+-
于是
),,2,1,0()
())(()()())(()()(110110n i x x x x x x x x x x x x x x x x x l n i i i i i i n i i i =--------=
+-+-
因此满足i i n y x L =)( ),2,1,0(n i =的插值多项式可表示为:
∑==n
j j j n x l y x L 0
)()(
从而n 次拉格朗日插值多项式为:
),,2,1,0()
()(0
n i x l y x L n
j i j j i n ==∑=
matlab 编程:
编程思想:主要从上述朗格朗日公式入手:依靠循环,运用poly ()函数和conv ()函数表示拉格朗日公式,其中的poly (i )函数表示以i 作为根的多项式的系数,例如poly (1)表示x-1的系数,输出为1 -1,而poly (poly (1))表示(x-1)*(x-1)=x^2-2*x+1的系数,输出为1 -2 1;而conv ()表示多项式系数乘积的结果,例如conv (poly (1),poly (1))输出为1 -2 1;所以程序最后结果为x^n+x^n-1+……+x^2+x+1(n 的值据结果的长度为准)的对应系数。
在命令窗口输入edit lagran 来建立lagran.m 文件,文件中的程序如下: function [c,l]=lagran(x,y) w=length(x); n=w-1;
l=zeros(w,w); for k=1:n+1 v=1;
for j=1:n+1 if k~=j
v=conv(v,poly(x(j)))/(x(k)-x(j)); end end
l(k,:)=v; end
c=y*l;
输入:>> x=[0 1 2 3 4]; >> y=[1 2 17 82 257]; >> lagran(x,y)
运行结果为 ans =
1.0000 -0.0000 -0.0000 0 1.0000 结果为:=+。 如图表1:
图表 1
二.牛顿插值法
newton 插值多项式的表达式如下:
010011()()()()()n n n N x c c x x c x x x x x x -=+-+⋅⋅⋅+--⋅⋅⋅-
其中每一项的系数ci 的表达式如下:
12011010
[,,,][,,,]
[,,,]i i i i i f x x x f x x x c f x x x x x -⋅⋅⋅-⋅⋅⋅=⋅⋅⋅=
-
即为 f (x)在点01,,,i x x x ⋅⋅⋅处的i 阶差商,([]()i i f x f x =,1,2,
,i n =),由差商
01[,,,]i f x x x ⋅⋅⋅的性质可知:
()
010
01
[,,,]()i
i
i j j k j k k j
f x x x f x x x ==≠⋅⋅⋅=-∑∏
matlab 编程:
编程思想:主要从上述牛顿插值公式入手:依靠循环,运用poly ()函数和conv ()函数
表示拉格朗日公式,其中的poly (i )函数表示以i 作为根的多项式的系数,例如poly (1
)