内容发布更新时间 : 2024/11/8 10:58:35星期一 下面是文章的全部内容请认真阅读。
实用标准文档
Matlab实现数值分析插值及积分
摘要:
数值分析(numerical analysis)是研究分析用计算机求解数学计算问题的数值计算方法及其理论的学科,是数学的一个分支,它以数字计算机求解数学问题的理论和方法为研究对象。在实际生产实践中,常常将实际问题转化为数学模型来解决,这个过程就是数学建模。学习数值分析这门课程可以让我们学到很多的数学建模方法。
分别运用matlab数学软件编程来解决插值问题和数值积分问题。题目中的要求是计算差值和积分,对于问题一,可以分别利用朗格朗日插值公式,牛顿插值公式,埃特金逐次线性插值公式来进行编程求解,具体matlab代码见正文。编程求解出来的结果为:=+。 其中Aitken插值计算的结果图如下:
对于问题二,可以分别利用复化梯形公式,复化的辛卜生公式,复化的柯特斯公式编写程序来进行求解,具体matlab代码见正文。编程求解出来的结果为: 0.6932 其中复化梯形公式计算的结果图如下:
文案大全
实用标准文档
问题重述
问题一:已知列表函数
表格 1
0 1 1 2 2 17 3 82 4 257
分别用拉格朗日,牛顿,埃特金插值方法计算。
问题二:用复化的梯形公式,复化的辛卜生公式,复化的柯特斯公式计算积分,使精度小于5。
问题解决
问题一:插值方法
对于问题一,用三种差值方法:拉格朗日,牛顿,埃特金差值方法来解决。
一、拉格朗日插值法:
拉格朗日插值多项式如下:
首先构造n?1个插值节点x0,x1,?,xn上的n插值基函数,对任一点xi所对应的插值基函数
li(x),由于在所有xj(j?0,1,?,i?1,i?1,?,n)取零值,因此li(x)有因子
(x?x0)?(x?xi?1)(x?xi?1)?(x?xn)。又因li(x)是一个次数不超过n的多项式,所以只
可能相差一个常数因子,固li(x)可表示成:
li(x)?A(x?x0)?(x?xi?1)(x?xi?1)?(x?xn)
利用li(xi)?1得:
文案大全
实用标准文档
A? 于是
1
(xi?x0)?(xi?xi?1)(xi?xi?1)?(xi?xn)li(x)?
(x?x0)?(x?xi?1)(x?xi?1)?(x?xn)(xi?x0)?(xi?xi?1)(xi?xi?1)?(xi?xn)(i?0,1,2,?,n)
因此满足Ln(xi)?yi (i?0,1,2?,n)的插值多项式可表示为:
Ln(x)??yjlj(x)
j?0n
从而n次拉格朗日插值多项式为:
nLn(xi)??yjlj(xi)j?0(i?0,1,2,?,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
文案大全