当前位置:文档之家› 数值分析常用的插值方法

数值分析常用的插值方法

数值分析常用的插值方法
数值分析常用的插值方法

数值分析

报告

班级:

专业:

流水号:

学号:

姓名:

常用的插值方法

序言

在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。

早在6世纪,中国的刘焯已将等距二次插值用于天文计算。17世纪之后,牛顿、拉格朗日分别讨论了等距和非等距的一般插值公式。在近代,插值法仍然是数据处理和编制函数表的常用工具,又是数值积分、数值微分、非线性方程求根和微分方程数值解法的重要基础,许多求解计算公式都是以插值为基础导出的。

插值问题的提法是:假定区间[a,b〕上的实值函数f(x)在该区间上n+1个互不相同点x0,x1……x n处的值是f(x0),……f(x n),要求估算f(x)在[a,b〕中某点的值。其做法是:在事先选定的一个由简单函数构成的有n+1个参数C0,C1,……C n的函数类Φ(C0,C1,……C n)中求出满足条件P(x i)=f(x i)(i=0,1,…… n)的函数P(x),并以P(x)作为f(x)的估值。此处f(x)称为被插值函数,x0,x1,……xn 称为插值结(节)点,Φ(C0,C1,……C n)称为插值函数类,上面等式称为插值条件,Φ(C0,……C n)中满足上式的函数称为插值函数,R(x)=f(x)-P(x)称为插值余项。

求解这类问题,它有很多种插值法,其中以拉格朗日(Lagrange)插值和牛顿(Newton)插值为代表的多项式插值最有特点,常用的插值还有Hermit 插值,分段插值和样条插值。

一.拉格朗日插值

1.问题提出:

已知函数()y f x =在n+1个点01,,

,n x x x 上的函数值01,,,n y y y ,求任意一点

x '的函数值()f x '。

说明:函数()y f x =可能是未知的;也可能是已知的,但它比较复杂,很难计算其函数值()f x '。 2.解决方法:

构造一个n 次代数多项式函数()n P x 来替代未知(或复杂)函数()y f x =,则用()n P x '作为函数值()f x '的近似值。

设()2012n n n P x a a x a x a x =+++

+,构造()n P x 即是确定n+1个多项式的系数

012,,,,n a a a a 。

3.构造()n P x 的依据:

当多项式函数()n P x 也同时过已知的n+1个点时,我们可以认为多项式函数

()n P x 逼近于原来的函数()f x 。根据这个条件,可以写出非齐次线性方程组:

20102000201121112012n n n n n n n n n n

a a x a x a x y a a x a x a x y a a x a x a x y ?+++

+=?++++=???

?+++

+=

?

其系数矩阵的行列式D 为范德萌行列式:

()20

0021110

2

111n n i

j

n i j n

n

n n x x x x x x D x x x x x ≥>≥=

=

-∏

故当n+1个点的横坐标01,,,n x x x 各不相同时,方程组系数矩阵的行列式D 不等于

零,故方程组有唯一解。即有以下结论。 结论:当已知的n+1个点的横坐标01,,

,n x x x 各不相同时,则总能够构造唯一的n

次多项式函数()n P x ,使()n P x 也过这n+1个点。 4.几何意义

5.举例:

已知函数()f x =()115f 。

分析:本题理解为,已知“复杂”函数()f x =x=81,100,121,144时,其对应的函数值为:y=9,10,11,12,当x=115时,求函数值()115f 。

解:

(1)线性插值:过已知的(100,10)和(121,11)两个点,构造1次多项式函数()1P x ,于是有

()1121100

1011100121121100

x x P x --=

?+?--

()()111511510.71428571428572f P ≈=。

(2)抛物插值:构造2次多项式函数()2P x ,使得它过已知的(100,10)、(121,11)和(144,12)三个点。于是有2次拉格朗日插值多项式:

()()()()()()()()()()()()()

2121144100144100121101112100121100144121100121144144100144121x x x x x x P x ------=?+?+?------

则有

()()2115115f P ≈=10.72275550536420 6.拉格朗日n 次插值多项式公式:

()()()

()()()()()()()()()

()()()()()()()

12001020021

10121011011n n n n n n n n n n n x x x x x x P x y x x x x x x x x x x x x y x x x x x x x x x x x x y x x x x x x -----=

------+

---+

---+--

-

()()()()()00110

n

n n n k k k P x l x y l x y l x y l x y ==++

+=∑

其中()k l x 称为基函数(k=0,1,….,n ),每一个基函数都是关于x 的n 次多项式,其表达式为:

()0n

j k j k j

j k

x x l x x x =≠-=-∏

拉格朗日公式特点:

1.把每一点的纵坐标k y 单独组成一项;

2.每一项中的分子是关于x 的n 次多项式,分母是一个常数;

3.每一项的分子和分母的形式非常相似,不同的是: 分子是()x -

,而分母是()k x -

7.误差分析(拉格朗日余项定理)

()()()()()()1

1!n n

n k k f P x f x x x n ξ+=-=-+∏, 其中ξ在01,,,,n x x x x 所界定的范围内。

针对以上例题的线性插值,有

()()()()()11151151151001151212!

f P f ξ''-=

--

函数()f x ''在[100,115]区间绝对值的极大值为()4100 2.510f -''=?, 则有:

()()11151150.011250.05P f -≤<

于是近似值()()111511510.71428571428572f P ≈=有三位有效数字。 针对以上例题的抛物线插值,有

()()()

()()()21151151151001151211151443!

f P f ξ'''-=

--- 函数()f x '''在[100,115]区间绝对值的极大值为()6100 3.7510f -'''=?,则有

()()21151150.00163125<0.005P f -≤

于是近似值()()2115115f P ≈=10.72275550536420有四位有效数字。 8.拉格朗日插值公式的优点

公式有较强的规律性,容易编写程序利用计算机进行数值计算。 9. 拉格朗日插值通用程序 程序流程图如下:

y

文件lagrange.m如下:

%拉格朗日插值

close all

n=input('已知的坐标点数n=?');

x=input('x1,x2,...,xn=?');

y=input('y1,y2,...,yn=?');

xx=input('插值点=?');

syms t %定义t为符号量p=0;

for k=1:n

l=1;

for j=1:k-1

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

end

for j=k+1:n

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

end

p=p+l*y(k);

end

p=inline(p); %把符号算式p变为函数形式fplot(p,[min(min(x),xx)-1,max(max(x),xx)+1]); %画多项式函数

hold on

p(xx) %显示插值点

plot(x,y,'o',xx,p(xx),'*'); %画已知点和插值点

在MATLAB命令窗口输入:

lagrange

然后有以下对话过程和结果,

已知的坐标点数n=?6

x1,x2,...,xn=?[1,3,5,7,9,11]

y1,y2,...,yn=?[-1,20,0,-1,12,3]

插值点=?8

ans =

5.67187500000000

有以下图形:

二.牛顿插值

拉格朗日插值的缺点:无承袭性(继承性)

若算出3点的抛物插值精度不够,再进行4点的3次多项式插值时,必须从头算起,前面算出的3点抛物插值的计算结果不能利用。

而泰勒插值却是具有承袭性的,如线性插值的结果不精确,那么再加上一项,就变成了泰勒抛物插值,如:

泰勒1次插值:()()()()1000P x f x f x x x '=+- 泰勒2次插值:()()()()()()2

0200002!

f x P x f x f x x x x x '''=+-+-。 而牛顿插值就是具有承袭性的插值公式 1.差商的概念

设n+1个点01,,

,n x x x 互不相等,则定义:

i x 和()j x i j ≠两点的一阶差商为:()(),i j i j i j

f x f x f x x x x -??=

??-

i x ,,j k x x 三点的二阶差商为:,,,,i j j k i j k i k

f x x f x x f x x x x x ????-??????=??- i x ,,,j k l x x x 四点的三阶差商为:,,,,,,,i j k j k l i j k l i l

f x x x f x x x f x x x x x x ????-??????=??- …… n+1个点01,,

,n x x x 的n 阶差商为:

[][][]

01112010,,,,,,,,,n n n n

f x x x f x x x f x x x x x --=

-

差商具有对称性:,,i j j i f x x f x x ????=????;,,,,i j k j i k f x x x f x x x ????=???? 2.牛顿插值解决的问题与拉格朗日插值解决的问题相同 只是表述 n 次多项式()n P x 的公式不同。 3.牛顿插公式的推导 根据差商的概念,有:

()()[]()000,f x f x f x x x x =+-…………………[]0,f x x 是0,x x 两点的一阶差商;

[][][]()001011,,,,f x x f x x f x x x x x =+-……[]01,,f x x x 是01,,x x x 三点的二阶差商; ……

[][][]()010101,,,,,,,,,,n n n n f x x x f x x x f x x x x x x -=+-

把以上各式从后向前逐次代入,可以得到:

()()[]()[]()()[]()()

()

[]()()()

001001201010110101,,,,,,,,,

,n n n n f x f x f x x x x f x x x x x x x f x x x x x x x x x f x x x x x x x x x x -=+-+--+

+---+---

()()()n n f x P x R x =+ 其中

()()[]()[]()()[]()()

()

00100120101011,,,,,

,n n n P x f x f x x x x f x x x x x x x f x x x x x x x x x -=+-+--+

+---

()[]()()()0101,,,,n n n R x f x x x x x x x x x x =---

以上()n P x 的表达式称为牛顿插值公式,可以证明,n 次牛顿插值多项式与n 次拉格朗日插值多项式完全相同,只是表达形式不同。

故,拉格朗日余项定理与牛顿余项定理相同:

()()()[]()

()()()()1

0100

,,,

,1!n n

n

n n n k k k k f R x P x f x f x x x x x x x x n ξ+===-=-=-+∏∏, 其中ξ在01,,,,n x x x x 所界定的范围内。

则有公式:[]()()

()101,,,,1!

n n f f x x x x n ξ+=+

4.牛顿插值差商表

5.举例

已知函数f(x)当x=-2,-1,0,1,2时,其对应函数值为f(x)=13,-8,-1,4,1。求f(0.5)的值。

解:该题目与例1相比,就是多了一个点,所以和例1的差商表相比,只需多一列,多一行:

而5个点的4次牛顿插值多项式4P x 是在3P x 的基础上多增加1项:

()()()()()()()()()4132121421521211P x x x x x x x x x x x =-++++-+++++- 则

()()()()()()()()()(40.50.513210.52140.520.5150.520.510.50.520.510.50.52.6875

f P ≈=-++++-+++++-=可以在MATLAB 下运行程序newton02.m :

p4=inline('13-21*(x+2)+14*(x+2)*(x+1)-5*(x+2)*(x+1)*x+(x+2)*(x+1)*x*(x-1)');

fplot(p4,[-2.5,2.5],'r');

hold on

xi=[-2,-1,0,1,2];

yi=[13,-8,-1,4,1];

plot(xi,yi,'*');

plot(0.5,p4(0.5),'o');

可以得到以下图形:

6.牛顿插值的优点

(1)具有承袭性质

(2)利用差商表,计算多点插值,比拉格朗日公式计算方便。

7.牛顿插值算法的通用程序

以下是程序流程图:

MATLAB 的通用程序newton.m 为: %牛顿插值 close all

n=input('已知的坐标点数n=?'); x=input('x1,x2,...,xn=?'); y=input('y1,y2,...,yn=?'); xx=input('插值点=?');

% 计算差商:f[x1,x2],f[x1,x2,x3],...,f[x1,x2,...,xn] f=y;

for i=1:n-1 % 计算第i阶差商

for k=n:-1:i+1

f(k)=(f(k)-f(k-1))/(x(k)-x(k-i));

end

end

syms t %定义t为符号量

p=f(1);

for k=2:n

l=1;

for j=1:k-1

l=l*(t-x(j));

end

p=p+l*f(k);

end

p=inline(p); %把符号算式p变为函数形式

fplot(p,[min(min(x),xx)-1,max(max(x),xx)+1]); %画多项式函数

hold on

p(xx) %显示插值点

plot(x,y,'o',xx,p(xx),'*'); %画已知点和插值点

在MATLAB命令窗口输入:

newton

然后有以下对话过程和结果,

已知的坐标点数n=?6

x1,x2,...,xn=?[1,3,5,7,9,11]

y1,y2,...,yn=?[-1,20,0,-1,12,3]

插值点=?8

ans =

5.67187500000000

有以下图形:

三.总结和展望

插值与逼近都是指用某个简单的函数在满足一定条件下在某个范围内近似代替另一个较复杂的函数或解析表达式未能给出的函数,以便于简化对后者的各种计算或揭示后者的某些性质。

插值方法理论是近似计算和逼近函数的有效方法。此外,它也是数值微积分,微分方程数值解等数值分析的基础。在图形处理等很多需要优化的实际中,也有着很广泛的应用。我们期望在以后的生活中会更加熟练和更好的运用插值方法。

参考文献

[1]李庆扬,王能超,易大义. 数值分析[M]. 武汉:华中科技大学出版社,1982. [2]吴才斌. 插值方法[J]. 湖北大学成人教育学院学报,1999,(5).

[3]徐萃薇,孙绳武. 计算方法引论[M]. 北京:高等教育出版社,2002.

[4]林鹭. 拉格朗日插值多项式的一种并行算法[J]. 厦门大学学报:自然科学版, 2004,43(5):592-595.

[5]吴筑筑. 计算方法[M]. 北京:清华大学出版社,2004:61-84.

[6]杨士俊,王兴华. Hermite 插值多项式的差商表示及其应用[J]. 高校应用数学学报A 辑,2006,21(1):70-78.

[7]齐东旭,李华山.数据逼近的多结点样条技术[J].中国科学(E 辑),1999,29(4): 334-387.

[8]王仁宏. 数值逼近[M]. 北京:高等教育出版社,1999.

[9]孙亮. 数值分析方法课程的特点与思想[J]. 工科数学,2002,18(1):84-86.

数值分析实验报告1

实验一误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 其中ε(1.1)和(1.221,,,a a 的输出b ”和“poly ε。 (1(2 (3)写成展 关于α solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。 实验过程: 程序: a=poly(1:20); rr=roots(a); forn=2:21 n form=1:9 ess=10^(-6-m);

ve=zeros(1,21); ve(n)=ess; r=roots(a+ve); -6-m s=max(abs(r-rr)) end end 利用符号函数:(思考题一)a=poly(1:20); y=poly2sym(a); rr=solve(y) n

很容易的得出对一个多次的代数多项式的其中某一项进行很小的扰动,对其多项式的根会有一定的扰动的,所以对于这类病态问题可以借助于MATLAB来进行问题的分析。 学号:06450210 姓名:万轩 实验二插值法

matlab实现数值分析报告插值及积分

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 边界条件为例,用节点处二阶导数表示三次样条插值函数,用追赶法求解相关方程组。通过Matlab 编制三次样条函数的通用程序,可直接显示各区间段三次样条函数体表达式,计算出已给点插值并显示各区间分段曲线图。 引言 分段低次样条插值虽然计算简单、稳定性好、收敛性有保证且易在电子计算机上实现,但只能保证各小段曲线在连接处的连续性,不能保证整件曲线的光滑性。利用样条插值,既可保持分段低次插值多项式,又可提高插值函数光滑性。故给出分段三次样条插值的构造过程算法步骤,利用Matlab软件编写三次样条插值函数通用程序,并通过数值算例证明程序的正确性。 三次样条函数的定义及特征 定义:设[a,b] 上有插值节点,a=x1<x2<…xn=b,对应函数值为y1,y2,?yn。若函数S(x) 满 足S(xj) = yj ( j = 1,2, ?,n ), S(x) 在[xj,xj+1] ( j =1,2,?,n-1)上都是不高于三的多项式(为了与其对应j 从1 开始,在Matlab 中元素脚标从1 开始)。当S(x) 在 [a,b] 具有二阶连续导

数。则称S(x) 为三次样条插值函数。要求S(x) 只需在每个子区 间[xj,xj+1] 上确定 1 个三次多项式,设为: Sj(x)=ajx3+bjx2+cjx+dj, (j=1,2,?,n-1) (1) 其中aj,bj,cj,dj 待定,并要使它满足: S(xj)=yj, S(xj-0)=S(xj+0), (j=2,?,n-1) (2) S'(xj-0)=S'(xj+0), S"(xj-0)=S"(xj+0), (j=2,?,n-1) (3) 式(2)、(3)共给出n+3(n-2)=4n-6 个条件, 需要待定4(n-1) 个系数,因此要唯一确定三次插值函数,还要附加2 个边界条件。通常由实际问题对三次样条插值在端点的状态要求给 出。常用边界的条件有以下3 类。 第 1 类边界条件:给定端点处的一阶导数值,S'(x1)=y1',S'(xn) =yn'。 第 2 类边界条件:给定端点处的二阶导数值,S"(x1)=y1",S"(xn) =yn"。特殊情况y1"=yn"=0,称为自然边界条件。 第 3 类边界条件是周期性条件,如果y=f(x)是以b-a 为周期的函 数,于是S(x) 在端点处满足条件S'(x1+0)=S'(xn-0),S"(x+0) =S"(xn-0)。 下以第 1 边界条件为例,利用节点处二阶导数来表示三次样条插值

数值分析总结计划实验一拉格朗日插值算法报告总结计划.doc

拉格朗日插值算法的实现 实验报告 姓名:** 年级:**** 专业:计算机科学与技术科目:数值分析题目:拉格朗日插值算法的实现 实验时间 : 2014 年 5 月27 日实验成绩: 实验教师: 一、实验名称:拉格朗日插值算法的实现 二、实验目的: a.验证拉格朗日插值算法对于不同函数的插值 b. 验证随着插值结点的增多插值曲线的变化情况。 三、实验内容: 拉格朗日插值基函数的一般形式: 也即是: 所以可以得出拉格朗日插值公式的一般形式: 其中, n=1 时,称为线性插值,P1(x) = y 0*l 0(x) + y 1*l 1(x) n=2 时,称为二次插值或抛物插值,精度相对高些, P2(x)= y0 *l 0(x)+ y1*l 1(x)+ y2 *l 2(x) 四、程序关键语句描写 double Lagrange(int n,double X[],double Y[],double x) { double result=0; for (int i=0;i

result+=temp; }// 求出 Pn(x) return result; } 五、实验源代码: #include #include using namespace std; int main() { double Lagrange(int n,double X[],double Y[],double x); //插值函数double x;//要求插值的x的值 double result;//插值的结果 char a='n'; double X[20],Y[20]; do { cout<<" 请输入插值次数n 的值: "<>n; cout<<" 请输入插值点对应的值及函数值(xi,yi):"<>X[k]>>Y[k]; } cout<<" 请输入要求值 x 的值: "<>x; result=Lagrange(n,X,Y,x); cout<<" 由拉格朗日插值法得出结果: "<>a; }while(a=='yes'); return 0; } double Lagrange(int n,double X[],double Y[],double x) { double result=0; for (int i=0;i

数值分析常用的插值方法

数值分析报告 班级: 专业: 流水号: 学号: 姓名:

常用的插值方法 序言 在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。 早在6世纪,中国的刘焯已将等距二次插值用于天文计算。17世纪之后,牛顿、拉格朗日分别讨论了等距和非等距的一般插值公式。在近代,插值法仍然是数据处理和编制函数表的常用工具,又是数值积分、数值微分、非线性方程求根和微分方程数值解法的重要基础,许多求解计算公式都是以插值为基础导出的。 插值问题的提法是:假定区间[a,b〕上的实值函数f(x)在该区间上n+1个互不相同点x0,x1……x n处的值是f(x0),……f(x n),要求估算f(x)在[a,b〕中某点的值。其做法是:在事先选定的一个由简单函数构成的有n+1个参数C0, C1,……C n的函数类Φ(C0,C1,……C n)中求出满足条件P(x i)=f(x i)(i=0,1,……n)的函数P(x),并以P(x)作为f(x)的估值。此处f(x)称为被插值函数,x0,x1,……xn 称为插值结(节)点,Φ(C0,C1,……C n)称为插值函数类,上面等式称为插值条件,Φ(C0,……C n)中满足上式的函数称为插值函数,R(x)=f(x)-P(x)称为插值余项。

求解这类问题,它有很多种插值法,其中以拉格朗日(Lagrange)插值和牛顿(Newton)插值为代表的多项式插值最有特点,常用的插值还有Hermit 插值,分段插值和样条插值。 一.拉格朗日插值 1.问题提出: 已知函数()y f x =在n+1个点01,,,n x x x L 上的函数值01,,,n y y y L ,求任意一点 x '的函数值()f x '。 说明:函数()y f x =可能是未知的;也可能是已知的,但它比较复杂,很难计算其函数值()f x '。 2.解决方法: 构造一个n 次代数多项式函数()n P x 来替代未知(或复杂)函数()y f x =,则 用()n P x '作为函数值()f x '的近似值。 设()2012n n n P x a a x a x a x =++++L ,构造()n P x 即是确定n+1个多项式的系数 012,,,,n a a a a L 。 3.构造()n P x 的依据: 当多项式函数()n P x 也同时过已知的n+1个点时,我们可以认为多项式函数 ()n P x 逼近于原来的函数()f x 。根据这个条件,可以写出非齐次线性方程组: 20102000 20112111 2012n n n n n n n n n n a a x a x a x y a a x a x a x y a a x a x a x y ?++++=?++++=?? ? ?++++=?L L L L L 其系数矩阵的行列式D 为范德萌行列式: ()20 0021110 2111n n i j n i j n n n n x x x x x x D x x x x x ≥>≥= = -∏L L M M M M L

数值分析实验报告-插值、三次样条Word版

实验报告:牛顿差值多项式&三次样条 问题:在区间[-1,1]上分别取n=10、20用两组等距节点对龙格函数21()25f x x 作多项式插值及三次样条插值,对每个n 值,分别画出插值函数及()f x 的图形。 实验目的:通过编程实现牛顿插值方法和三次样条方法,加深对多项式插值的理解。应用所编程序解决实际算例。 实验要求: 1. 认真分析问题,深刻理解相关理论知识并能熟练应用; 2. 编写相关程序并进行实验; 3. 调试程序,得到最终结果; 4. 分析解释实验结果; 5. 按照要求完成实验报告。 实验原理: 详见《数值分析 第5版》第二章相关内容。 实验内容: (1)牛顿插值多项式 1.1 当n=10时: 在Matlab 下编写代码完成计算和画图。结果如下: 代码: clear all clc x1=-1:0.2:1; y1=1./(1+25.*x1.^2); n=length(x1); f=y1(:); for j=2:n for i=n:-1:j f(i)=(f(i)-f(i-1))/(x1(i)-x1(i-j+1)); end end syms F x p ; F(1)=1;p(1)=y1(1); for i=2:n F(i)=F(i-1)*(x-x1(i-1)); p(i)=f(i)*F(i); end

syms P P=sum(p); P10=vpa(expand(P),5); x0=-1:0.001:1; y0=subs(P,x,x0); y2=subs(1/(1+25*x^2),x,x0); plot(x0,y0,x0,y2) grid on xlabel('x') ylabel('y') P10即我们所求的牛顿插值多项式,其结果为:P10(x)=-220.94*x^10+494.91*x^8-9.5065e-14*x^7-381.43*x^6-8.504e-14*x^5+123.36*x^4+2.0 202e-14*x^3-16.855*x^2-6.6594e-16*x+1.0 并且这里也能得到该牛顿插值多项式的在[-1,1]上的图形,并和原函数进行对比(见Fig.1)。 Fig.1 牛顿插值多项式(n=10)函数和原函数图形 从图形中我们可以明显的观察出插值函数在两端点处发生了剧烈的波动,产生了极大的误差,即龙格现象,当n=20时,这一现象将更加明显。 1.2 当n=20时: 对n=10的代码进行修改就可以得到n=20时的代码。将“x1=-1:0.2:1;”改为“x1=-1:0.1:1;”即可。运行程序,我们得到n=20时的牛顿插值多项式,结果为:P20(x)= 260188.0*x^20 - 1.0121e6*x^18 + 2.6193e-12*x^17 + 1.6392e6*x^16 + 2.248e-11*x^15 - 1.4429e6*x^14 - 4.6331e-11*x^13 + 757299.0*x^12 + 1.7687e-11*x^11 - 245255.0*x^10 + 2.1019e-11*x^9 + 49318.0*x^8 + 3.5903e-12*x^7 - 6119.2*x^6 - 1.5935e-12*x^5 + 470.85*x^4 + 1.3597e-14*x^3 - 24.143*x^2 - 1.738e-14*x + 1.0 同样的,这里得到了该牛顿插值多项式的在[-1,1]上的图形,并和原函数进行对比(见Fig.2)。

数值分析拉格朗日插值法上机实验报告

课题一:拉格朗日插值法 1.实验目的 1.学习和掌握拉格朗日插值多项式。 2.运用拉格朗日插值多项式进行计算。 2.实验过程 作出插值点(1.00,0.00),(-1.00,-3.00),(2.00,4.00)二、算法步骤 已知:某些点的坐标以及点数。 输入:条件点数以及这些点的坐标。 输出:根据给定的点求出其对应的拉格朗日插值多项式的值。 3.程序流程: (1)输入已知点的个数; (2)分别输入已知点的X坐标; (3)分别输入已知点的Y坐标; 程序如下: #include #include #include float lagrange(float *x,float *y,float xx,int n) /*拉格朗日

插值算法*/ { int i,j; float *a,yy=0.0; /*a作为临时变量,记录拉格朗日插值多项*/ a=(float*)malloc(n*sizeof(float)); for(i=0;i<=n-1;i++) { a[i]=y[i]; for(j=0;j<=n-1;j++) if(j!=i) a[i]*=(xx-x[j])/(x[i]-x[j]); yy+=a[i]; } free(a); return yy; } int main() { int i; int n; float x[20],y[20],xx,yy; printf("Input n:");

scanf("%d",&n); if(n<=0) { printf("Error! The value of n must in (0,20)."); getch();return 1; } for(i=0;i<=n-1;i++) { printf("x[%d]:",i); scanf("%f",&x[i]); } printf("\n"); for(i=0;i<=n-1;i++) { printf("y[%d]:",i);scanf("%f",&y[i]); } printf("\n"); printf("Input xx:"); scanf("%f",&xx); yy=lagrange(x,y,xx,n); printf("x=%f,y=%f\n",xx,yy); getch(); } 举例如下:已知当x=1,-1,2时f(x)=0,-3,4,求f(1.5)的值。

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

数值分析实验(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

数值分析常用的插值方法

数值分析 报告 班级: 专业: 流水号: 学号: 姓名:

常用的插值方法 序言 在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。 早在6世纪,中国的刘焯已将等距二次插值用于天文计算。17世纪之后,牛顿、拉格朗日分别讨论了等距和非等距的一般插值公式。在近代,插值法仍然是数据处理和编制函数表的常用工具,又是数值积分、数值微分、非线性方程求根和微分方程数值解法的重要基础,许多求解计算公式都是以插值为基础导出的。 插值问题的提法是:假定区间[a,b〕上的实值函数f(x)在该区间上 n+1 个互不相同点x 0,x 1 (x) n 处的值是f(x ),……f(x n ),要求估算f(x)在[a,b〕 中某点的值。其做法是:在事先选定的一个由简单函数构成的有n+1个参数C , C 1,……C n 的函数类Φ(C ,C 1 ,……C n )中求出满足条件P(x i )=f(x i )(i=0,1,…… n)的函数P(x),并以P(x)作为f(x)的估值。此处f(x)称为被插值函数,x 0,x 1 ,……xn 称为插值结(节)点,Φ(C 0,C 1 ,……C n )称为插值函数类,上面等式称为插值条件, Φ(C 0,……C n )中满足上式的函数称为插值函数,R(x)= f(x)-P(x)称为 插值余项。

求解这类问题,它有很多种插值法,其中以拉格朗日(Lagrange)插值和牛顿(Newton)插值为代表的多项式插值最有特点,常用的插值还有Hermit 插值,分段插值和样条插值。 一.拉格朗日插值 1.问题提出: 已知函数()y f x =在n+1个点01,, ,n x x x 上的函数值01,, ,n y y y ,求任意一点 x '的函数值()f x '。 说明:函数()y f x =可能是未知的;也可能是已知的,但它比较复杂,很难计算其函数值()f x '。 2.解决方法: 构造一个n 次代数多项式函数()n P x 来替代未知(或复杂)函数()y f x =,则 用()n P x '作为函数值()f x '的近似值。 设()2012n n n P x a a x a x a x =+++ +,构造()n P x 即是确定n+1个多项式的系数 012,,,,n a a a a 。 3.构造()n P x 的依据: 当多项式函数()n P x 也同时过已知的n+1个点时,我们可以认为多项式函数 ()n P x 逼近于原来的函数()f x 。根据这个条件,可以写出非齐次线性方程组: 20102000 201121112012n n n n n n n n n n a a x a x a x y a a x a x a x y a a x a x a x y ?+++ +=?++++=??? ?+++ +=? 其系数矩阵的行列式D 为范德萌行列式: () 200021110 2 111n n i j n i j n n n n x x x x x x D x x x x x ≥>≥= = -∏

数值分析作业-三次样条插值

数值计算方法作业 实验4.3 三次样条差值函数 实验目的: 掌握三次样条插值函数的三弯矩方法。 实验函数: dt e x f x t ? ∞ -- = 2 221)(π x 0.0 0.1 0.2 0.3 0.4 F(x) 0.5000 0.5398 0.5793 0.6179 0.7554 求f(0.13)和f(0.36)的近似值 实验内容: (1) 编程实现求三次样条插值函数的算法,分别考虑不同的边界条件; (2) 计算各插值节点的弯矩值; (3) 在同一坐标系中绘制函数f(x),插值多项式,三次样条插值多项式的曲线 比较插值结果。 实验4.5 三次样条差值函数的收敛性 实验目的: 多项式插值不一定是收敛的,即插值的节点多,效果不一定好。对三次样条插值函数如何呢?理论上证明三次样条插值函数的收敛性是比较困难的,通过本实验可以证明这一理论结果。 实验内容: 按照一定的规则分别选择等距或非等距的插值节点,并不断增加插值节点的个数。 实验要求: (1) 随着节点个数的增加,比较被逼近函数和三样条插值函数的误差变化情 况,分析所得结果并与拉格朗日插值多项式比较; (2) 三次样条插值函数的思想最早产生于工业部门。作为工业应用的例子,考 实验名称 实验 4.3三次样条插值函数(P126) 4.5三次样条插值函数的收敛性(P127) 实验时间 姓名 班级 学号 成绩

虑如下例子:某汽车制造商根据三次样条插值函数设计车门曲线,其中一 段数据如下: k x 0 1 2 3 4 5 6 7 8 9 10 k y 0.0 0.79 1.53 2.19 2.71 3.03 3.27 2.89 3.06 3.19 3.29 k y ' 0.8 0.2 算法描述: 拉格朗日插值: 错误!未找到引用源。 其中错误!未找到引用源。是拉格朗日基函数,其表达式为:() ∏ ≠=--=n i j j j i j i x x x x x l 0) ()( 牛顿插值: ) )...()(](,...,,[....))(0](,,[)0](,[)()(1102101210100----++--+-+=n n n x x x x x x x x x x f x x x x x x x f x x x x f x f x N 其中????? ?? ?? ?????? --=--= --= -)/(]),...,[],...,[(]...,[..],[],[],,[)()(],[01102110x x x x x f x x x f x x x f x x x x f x x f x x x f x x x f x f x x f n n n n i k j i k j k j i j i j i j i 三样条插值: 所谓三次样条插值多项式Sn(x)是一种分段函数,它在节点Xi(a

三次样条插值方法的应用

CENTRAL SOUTH UNIVERSITY 数值分析实验报告

三次样条插值方法的应用 一、问题背景 分段低次插值函数往往具有很好的收敛性,计算过程简单,稳定性好,并且易于在在电子计算机上实现,但其光滑性较差,对于像高速飞机的机翼形线船体放样等型值线往往要求具有二阶光滑度,即有二阶连续导数,早期工程师制图时,把富有弹性的细长木条(即所谓的样条)用压铁固定在样点上,在其他地方让他自由弯曲,然后沿木条画下曲线,称为样条曲线。样条曲线实际上是由分段三次曲线并接而成,在连接点即样点上要求二阶导数连续,从数学上加以概括就得到数学样条这一概念。下面我们讨论最常用的三次样条函数及其应用。 二、数学模型 样条函数可以给出光滑的插值曲线(面),因此在数值逼近、常微分方程和偏微分方程的数值解及科学和工程的计算中起着重要的作用。 设区间[]b ,a 上给定有关划分b x x n =<<<= 10x a ,S 为[]b ,a 上满足下面条件的函数。 ● )(b a C S ,2∈; ● S 在每个子区间[]1,+i i x x 上是三次多项式。 则称S 为关于划分的三次样条函数。常用的三次样条函数的边界条件有三种类型: ● Ⅰ型 ()()n n n f x S f x S ''0'',==。 ● Ⅱ型 ()()n n n f x S f x S ''''0'''',==,其特殊情况为()()0''''==n n x S x S 。 ● Ⅲ型 ()() 3,2,1,0,0==j x S x S n j j ,此条件称为周期样条函数。 鉴于Ⅱ型三次样条插值函数在实际应用中的重要地位,在此主要对它进行详细介绍。 三、算法及流程 按照传统的编程方法,可将公式直接转换为MATLAB 可是别的语言即可;另一种是运用矩阵运算,发挥MATLAB 在矩阵运算上的优势。两种方法都可以方便地得到结果。方法二更直观,但计算系数时要特别注意。这里计算的是方法一的程序,采用的是Ⅱ型边界条件,取名为spline2.m 。 Matlab 代码如下: function s=spline2(x0,y0,y21,y2n,x) %s=spline2(x0,y0,y21,y2n,x) %x0,y0 are existed points,x are insert points,y21,y2n are the second

数值分析实验插值与拟合

《数值分析》课程实验一:插值与拟合 一、实验目的 1. 理解插值的基本原理,掌握多项式插值的概念、存在唯一性; 2. 编写MA TLAB 程序实现Lagrange 插值和Newton 插值,验证Runge 现象; 3. 通过比较不同次数的多项式拟合效果,理解多项式拟合的基本原理; 4. 编写MA TLAB 程序实现最小二乘多项式曲线拟合。 二、实验内容 1. 用Lagrange 插值和Newton 插值找经过点(-3, -1), (0, 2), (3, -2), (6, 10)的三次插值公式,并编写MATLAB 程序绘制出三次插值公式的图形。 2. 设 ]5,5[,11 )(2 -∈+= x x x f 如果用等距节点x i = -5 + 10i /n (i = 0, 1, 2, …, n )上的Lagrange 插值多项式L n (x )去逼近它。不妨取n = 5和n = 10,编写MATLAB 程序绘制出L 5(x )和L 10(x )的图像。 (2) 编写MA TLAB 程序绘制出曲线拟合图。 三、实验步骤 1. (1) Lagrange 插值法:在线性空间P n 中找到满足条件: ?? ?≠===j i j i x l ij j i , 0, , 1)(δ 的一组基函数{}n i i x l 0)(=,l i (x )的表达式为 ∏ ≠==--= n i j j j i j i n i x x x x x l ,0),,1,0()( 有了基函数{}n i i x l 0)(=,n 次插值多项式就可表示为 ∑==n i i i n x l y x L 0 )()( (2) Newton 插值法:设x 0, x 1, …, x n 是一组互异的节点,y i = f (x i ) (i = 0, 1, 2, …, n ),f (x )在处的n 阶差商定义为

数值分析报告上机实验报告(插值)

数值分析第一次上机练习实验报告 ——Lagrange 插值与三次样条插值 一、 问题的描述 设()2119f x x =+, []1,1x ∈-,取15 i i x =-+,0,1,2,...,10i =.试求出10次Lagrange 插值多项式()10L x 和三次样条插值函数()S x (采用自然边界条件),并用图画出()f x ,()10L x , ()S x . 二、 方法描述——Lagrange 插值与三次样条插值 我们取15i i x =-+ ,0,1,2,...,10i =,通过在i x 点的函数值()21 19i i f x x =+来对原函数进行插值,我们记插值函数为() g x ,要求它满足如下条件: ()()2 1 ,0,1,2,...,1019i i i g x f x i x == =+ (1) 我们在此处要分别通过Lagrange 插值(即多项式插值)与三次样条插值的方法对原函数 ()2 1 19f x x = +进行插值,看两种方法的插值结果,并进行结果的比较。 10次的Lagrange 插值多项式为: ()()10 100 i i i L x y l x ==∑ (2) 其中: ()2 1 ,0,1,2,...,1019i i i y f x i x == =+ 以及 ()()()()()()()()() 011011......,0,1,2,...,10......i i n i i i i i i i n x x x x x x x x l x i x x x x x x x x -+-+----= =---- 我们根据(2)进行程序的编写,我们可以通过几个循环很容易实现函数的Lagrange 插值。 理论上我们根据区间[]1,1-上给出的节点做出的插值多项式()n L x 近似于()f x ,而多 项式()n L x 的次数n 越高逼近()f x 的精度就越好。但实际上并非如此,而是对任意的插值节点,当n →+∞的时候()n L x 不一定收敛到()f x ;而是有时会在插值区间的两端点附近

数值分析实验报告-插值、三次样条(教育教学)

实验报告:牛顿差值多项式&三次样条 问题:在区间[-1,1]上分别取n=10、20用两组等距节点对龙格函数2 1()25f x x 作多项式插值及三次样条插值,对每个n 值,分别画出插值函数及()f x 的图形。 实验目的:通过编程实现牛顿插值方法和三次样条方法,加深对多项式插值的理解。应用所编程序解决实际算例。 实验要求: 1. 认真分析问题,深刻理解相关理论知识并能熟练应用; 2. 编写相关程序并进行实验; 3. 调试程序,得到最终结果; 4. 分析解释实验结果; 5. 按照要求完成实验报告。 实验原理: 详见《数值分析 第5版》第二章相关内容。 实验内容: (1)牛顿插值多项式 1.1 当n=10时: 在Matlab 下编写代码完成计算和画图。结果如下: 代码: clear all clc x1=-1:0.2:1; y1=1./(1+25.*x1.^2); n=length(x1); f=y1(:); for j=2:n for i=n:-1:j f(i)=(f(i)-f(i-1))/(x1(i)-x1(i-j+1)); end end syms F x p ; F(1)=1;p(1)=y1(1); for i=2:n F(i)=F(i-1)*(x-x1(i-1)); p(i)=f(i)*F(i);

end syms P P=sum(p); P10=vpa(expand(P),5); x0=-1:0.001:1; y0=subs(P,x,x0); y2=subs(1/(1+25*x^2),x,x0); plot(x0,y0,x0,y2) grid on xlabel('x') ylabel('y') P10即我们所求的牛顿插值多项式,其结果为:P10(x)=-220.94*x^10+494.91*x^8-9.5065e-14*x^7-381.43*x^6-8.504e-14*x^5+123.36*x^4+2.0202e-1 4*x^3-16.855*x^2-6.6594e-16*x+1.0 并且这里也能得到该牛顿插值多项式的在[-1,1]上的图形,并和原函数进行对比(见Fig.1)。 Fig.1 牛顿插值多项式(n=10)函数和原函数图形 从图形中我们可以明显的观察出插值函数在两端点处发生了剧烈的波动,产生了极大的误差,即龙格现象,当n=20时,这一现象将更加明显。 1.2 当n=20时: 对n=10的代码进行修改就可以得到n=20时的代码。将“x1=-1:0.2:1;”改为“x1=-1:0.1:1;”即可。运行程序,我们得到n=20时的牛顿插值多项式,结果为:P20(x)= 260188.0*x^20 - 1.0121e6*x^18 + 2.6193e-12*x^17 + 1.6392e6*x^16 + 2.248e-11*x^15 - 1.4429e6*x^14 - 4.6331e-11*x^13 + 757299.0*x^12 + 1.7687e-11*x^11 - 245255.0*x^10 + 2.1019e-11*x^9 + 49318.0*x^8 + 3.5903e-12*x^7 - 6119.2*x^6 - 1.5935e-12*x^5 + 470.85*x^4 + 1.3597e-14*x^3 - 24.143*x^2 - 1.738e-14*x + 1.0 同样的,这里得到了该牛顿插值多项式的在[-1,1]上的图形,并和原函数进行对比(见Fig.2)。

数值分析实验报告-插值,逼近

实验报告:函数逼近&插值多项式补充 问题1:对于给函数21()1+25f x x = ,取点21 cos 22 k k x n π+=+,k 取0,1,…,n 。n 取10或20。试画出拟合曲线并打印出方程,与第二章计算实习题2的结果进行比较。 问题2:对于给函数2 1 ()1+25f x x = 在区间[-1,1]上取x i =-1+0.2i (i=0,1,2,…,10),试求3次曲线拟合,试画出拟合曲线并打印出方程,与第二章计算实习题2的结果进行比较。 实验目的:通过编程实现牛顿插值方法和函数逼近,加深对多项式插值的理解。应用所编程序解决实际算例。 实验要求: 1. 认真分析问题,深刻理解相关理论知识并能熟练应用; 2. 编写相关程序并进行实验; 3. 调试程序,得到最终结果; 4. 分析解释实验结果; 5. 按照要求完成实验报告。 实验原理: 详见《数值分析 第5版》第二章、第三章相关内容。 实验内容: (1)问题1:

这里我们可以沿用实验报告一的代码,对其进行少量修改即可。 当n=10时,代码为: clear all clc k=0:10; n=length(k); x1=cos((2*k+1)/2/n*pi); y1=1./(1+25.*x1.^2); f=y1(:); for j=2:n for i=n:-1:j f(i)=(f(i)-f(i-1))/(x1(i)-x1(i-j+1)); end end syms F x p; F(1)=1;p(1)=y1(1); for i=2:n F(i)=F(i-1)*(x-x1(i-1)); p(i)=f(i)*F(i); end syms P P=sum(p);

数值分析 插值法

第二章插值法 2.在区间[-1,1]上分别取n=10,20用两组等距节点对龙哥函数f(x)=1/(1+25*x^2)做多项式插值及三次样条插值,对每个n值,分别画出插值函数及f(x)的图形。 (1)多项式插值 ①先建立一个多项式插值的M-file; 输入如下的命令(如牛顿插值公式): function [C,D]=newpoly(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 ②当n=10时,我们在命令窗口中输入以下的命令: clear,clf,hold on; X=-1:0.2:1; Y=1./(1+25*X.^2); [C,D]=newpoly(X,Y); x=-1:0.01:1; y=polyval(C,x); plot(x,y,X,Y,'.'); grid on; xp=-1:0.2:1; z=1./(1+25*xp.^2); plot(xp,z,'r') 得到插值函数和f(x)图形:

③当n=20时,我们在命令窗口中输入以下的命令:clear,clf,hold on; X=-1:0.1:1; Y=1./(1+25*X.^2); [C,D]=newpoly(X,Y); x=-1:0.01:1; y=polyval(C,x); plot(x,y,X,Y,'.'); grid on; xp=-1:0.1:1; z=1./(1+25*xp.^2); plot(xp,z,'r') 得到插值函数和f(x)图形:

数值分析课程实验报告-拉格朗日和牛顿插值法

《数值分析》课程实验报告 用拉格朗日和牛顿插值法求解函数值 算法名称用拉格朗日和牛顿插值法求函数值 学科专业xxxxx 作者姓名xxxx 作者学号xxxxx 作者班级xxxxxx xxx大学 二〇一五年十二月

《数值分析》课程实验报告

得到的近似值为。 拉格朗日插值模型简单,结构紧凑,是经典的插值法。但是由于拉格朗日的插值多项式和每个节点都有关,当改变节点个数时,需要重新计算。且当增大插值阶数时容易出现龙格现象。 2.牛顿插值法 在命令窗口输入: x=[ ]; y=[ ]; xt=; [yt,N]=NewtInterp(x,y,xt) z=::2; yz=subs(N,'t',z); figure; plot(z,sqrt(z),'--r',z,yz,'-b') hold on plot(x,y,'marker','+') hold on plot(xt,yt,'marker','o') h=legend('$\sqrt{x}$','牛顿','$(x_k,y_k)$','$x=$'); set(h,'Interpreter','latex') xlabel('x') ylabel('y') 得到结果及图像如下: yt = N = - *t^4 + *t^3 - *t^2 + *t +

得到√的近似值为,插值函数为 N =- *t^4 + *t^3 - *t^2 + *t + , 其计算精度是相当高的。 Lagrange插值法和Newton插值法解决实际问题中关于只提供复杂的离散数据的函数求值问题,通过将所考察的函数简单化,构造关于离散数据实际函数f(x)的近似函数P(x),从而可以计算未知点出的函数值,是插值法的基本思路。 实际上Lagrange插值法和Newton插值法是同一种方法的两种变形,其构造拟合函数的思路是相同的,而实验中两个实际问题用两种算法计算出结果是相同的。

相关主题
文本预览
相关文档 最新文档