当前位置:文档之家› 数值分析插值函数

数值分析插值函数

数值分析插值函数
数值分析插值函数

Newton 插值多项式

利用插值基函数很容易得到拉格朗日插值多项式,拉格朗日插值公式结构紧凑,在理论分析中甚为方便,但当插值节点增减时全部插值基函数),,1,0)((n i

x l i =均要随之变化,不得不重新计算所有插值基函数)

(x l i ,

这在实际计算中是很不方便的,为了克服这一缺点,引入了出具有承袭性质的牛顿插值多项式,首先介绍在牛顿插值中需要用到的差商计算。

◆ 差商

设有函数

,,,),

(210x x x x f 为一系列互不相等的点,称

j

i j i x x x f x f --)

()()

(j i ≠为

)(x f 关于点j i x x ,的一阶差商,记为],[j i x x f ,即

j

i j i j i x x x f x f x x f --=

)

()(],[ 1-14)

类似于高阶导数的定义,称一阶差商的差商

k

i k j j i x x x x f x x f --]

,[],[

)(x f 关于k

j i x x x ,,的二阶差商,记为

],,[k j i x x x f .一般地,称

k

k k x x x x x f x x x f ---021110]

,,,[],,,[

)(x f 关于k

x x x ,,,10 的k 阶差商,记为

k

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

-02111010]

,,,[],,,[],,,[

函数)(x f 关于0

x 的零阶差商即为函数

)(x f 在0x 的函数值,)(=][00x f x f 。

容易证明,差商具有下述性质: (1)各阶差商均具有线性性,即若

)()()(x b x a x f ψ?+=,则对任意正整数k

,都有

],,,[],,,[],,,[101010k k k x x x b x x x a x x x f ψ?+=

(2)k 阶差商

],,,[10k x x x f 可表示成)(,),(),(10k x f x f x f 的线性组合。

∑=+-----=

k

i k i i i i i i

i k x x x x x x x x

x f x x x x f 0

110210)

())(()()

(],,,,[

∑=+=

k

i i k i x x f 0

1)()(ω

其中

∏≠=+-=

k

i

j j j i

i k x x

x 0

1

)

()(ω

用归纳法可以证明这一性质。

1=k 是显然的。2

=k 时

2

02110210]

,[],[],,[x x x x f x x f x x x f --=

??

?

???------=2

121101020)()()()(1

x x x f x f x x x f x f x x

)

)(()()

)(()()

)(()(120222*********x x x x x f x x x x x f x x x x x f --+

--+

--=

(1-16)

(3)各阶差商均具有对称性,即改变节点的位置,差商值不变。如

],[=],[i j j i x x f x x f

],,[],,[=],,[k i j j k i k j i x x x f x x x f x x x f =

(4)若

)(x f 是n

次多项式,则一阶差商

],[i x x f 是1-n 次多项式。

事实上,如果

)

(x f 是

n

次多项式,则

)

()()(i x f x f x P -=也是

n

次多项式,且

0)(=i x P 。于是可分解为

)()()(1x P x x x P n i --=

其中

)(1x P n -为1-n 次多项式。所以

)()

()()

()(],[11x P x x x P x x x x x f x f x x f n i

n i i

i i --=--=

--=

1-n 次多项式。

◆计算差商

按照差商定义,用两个k-1阶差商的值计算k 阶差商,通常用差商表的形式计算和存放(见表1)。 由于差商对节点具有对称性,可以任意选择两个k-1差商的值计算k 阶差商。

1

210200

21021210]

,[],[]

,[],[],,[x x x x f x x f x x x x f x x f x x x f --=

--=

(1-18)

表1 差商表

x k f (x k ) 一阶差商

二阶差商

三阶差商

四阶差商

… x 0 x 1 x 2 x 3 x 4 x 5

f(x 0) f(x 1) f(x 2) f(x 3) f(x 4) f(x 5)

f[x 0,x 1] f[x 1,x 2] f[x 2,x 3] f[x 3,x 4] f[x 4,x 5]

f[x 0,x 1,x 2] f[x 1,x 2,x 3] f[x 2,x 3,x 4] f[x 3,x 4,x 5]

f[x 0,x 1,x 2,x 3] f[x 1,x 2,x 3,x 4] f[x 2,x 3,x 4,x 5]

f[x 0,x 1,x 2,x 3,x 4] f[x 1,x 2,x 3,x 4,x 5]

【例1】给定函数

)(x f y =的函数表

x

-2 0 1 2 )(x f

17

1

2

17

写出函数

)(x f y =的差商表。

解 差商表如下:(写牛顿插值多项式)

i x

)(i x f

1阶差商

2阶差商

3阶差商

-2

0 1 2

17 1 2 17

-8 1 15

3 7

1

◆ 牛顿插值(根据差商定义推导牛顿插值多项式) 根据差商定义,把

x

看成[a,b]上一点,可得

00)

()(],[x x x f x f x x f --=

左右两端乘(

0x x -)移项得

)](,[)()(000x x x x f x f x f -+=,

二阶差商:

1

10010]

,[],[],,[x x x x f x x f x x x f --=

,整理得:

)](,,[],[],[110100x x x x x f x x f x x f -+=,

…… 同理:

)](,,,[],,,[],,,[01010n n n n x x x x x f x x x f x x x f -+=- .

只要把后一式代入前一式,就得到

)

()()(],,,,[)()](,,,[))(](,,[)](,[)()(1101010102100100x R x N x x x x x f x x x x x x x f x x x x x x x f x x x x f x f x f n n n n n n +=+--++--+-+=+-ω

其中

)

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

](,[)()(100102100100---++--+-+=n n n x x x x x x f x x x x x x x f x x x x f x f x N (1-19)

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

(1-20)

)(1x n +ω=)-()x -)(-(10n x x x x x

)

()()(x R x N x f n n +=

显然,

)(x N n 是至多n

次的多项式。而由

0],,,,[)()(211==+n i i n i n x x x x f x x R ω ),,2,1,0(n i =

即得

)

()(i n i x N x f =

)

,,2,1,0(n i =。这表明

)

(x N n 满足插值条件

i i i n y x f x N ==)()(,因而它是)(x f 的n

次插值多项式。这种形式的插值多项式称为Newton 插值多

项式。

Newton 插值优点:每增加一个节点,插值多项式只增加一项,即

],,,[)())(()()(110101++---+=n n n n x x x f x x x x x x x N x N

因此便于递推运算。而且Newton 插值的计算量小于Lagrange 插值。

由插值多项式的唯一性可知,

n

次Newton 插值多项式与

n

次Lagrange 插值多项式是相等的,即

)()(x L x N n n =,它们只是表示形式不同。因此Newton 余项与Lagrange 余项也是相等的,即

)

()!

1()

(],,,[)()(1)

1(01x n f

x x x f x x R n n n n n ++++=

=ωξω

由此可得差商与导数的关系

!)

(],,,[)

(10n f

x x x f n n ξ=

(泰勒系数:

!

)

(0)

(k x f

a k k =

其中{}{}i n

i i n

i x x ≤≤≤≤==∈00max ,min ),,(βαβαξ

【例2】对上例的中的

)(x f ,求节点为10,x x 的一次插值多项式,节点为2

10,,x x x 的二次插值多项式和

节点为

3210,,,x x x x 的三次插值多项式。

解 由上例知

17

)(0=x f ,

8

],[10-=x x f ,

3

],,[210=x x x f ,

1],,,[4210=x x x x f ,于是有

)](,[)()(01001x x x x f x f x N -+=

x x x N 81)2(817)(1--=+-=

)

)(](,,[)](,[)()(1021001002x x x x x x x f x x x x f x f x N --+-+=

123)2(381)(2

2--=++--=x x x x x x N

)

)()(](,,,[))(](,,[)](,[)()(21042101021001003x 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 ---+

--+-+=

144)1()2(1232

3

2

--+=-++--=x x x x x x x x

【例2】用Newton 插值公式计算ln11.5。 解 如果仍取

13,12,11210===x x x 点作抛物线插值,按表1计算,结果如下:

x i y i =ln x i 一阶差商

二阶差商

11 12 13

2.3979 2.4849 2.5649

0.0870 0.0800

-0.0035

1 x -11 (x -11)(x -12)

N 2(x )=2.3979+0.0870(x -11)-0.0035(x -11)(x -12) ln11.5≈N 2(11.5)

=2.3979+0.0870×0.5+0.0035×0.5×0.5

=2.442275

若加节点x =10,14,ln10=2.3026,ln14=2.6391,用ln x 四次插值多项式近似,则按表1计算结果如下: x i y i =ln x i 一阶差商 二阶差商

三阶差商

四阶差商

10 11 12 13 14

2.3026 2.3979 2.4849 2.5649 2.6391

0.0953 0.0870 0.0800 0.0742

-0.00415 -0.00350 -0.00290

0.00022 0.00020

-0.000005

1 x -10 (x -10)(x -11) )(1210k x k -∏= )(1310

k x k -∏=

所以

ln11.5≈N 4(11.5)

=2.3026+0.0953×1.5-0.004×1.5×1.5+0.00022×1.5×0.5×(-0.5)-0.000005×1.5×0.5×(-0.5) ×(-1.5) =2.4423522

●牛顿插值的MATLAB 实现

在MA TLAB 中实现牛顿插值的代码如下: function f = Newton(x,y,x0)

%求已知数据点的牛顿插值多项式 %已知数据点的x 坐标向量:x %已知数据点的y 坐标向量:y

%插值的x 坐标:x0

%求得的牛顿插值多项式或在x0处的插值:f syms t;

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

n = length(x);

c(1:n) = 0.0;

else

disp('x和y的维数不相等!');

return;

end

f = y(1);

y1 = 0;

l = 1;

for(i=1:n-1)

for(j=i+1:n)

y1(j) = (y(j)-y(i))/(x(j)-x(i));

end

c(i) = y1(i+1);

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

f = f + c(i)*l;

simplify(f);

y = y1;

if(i==n-1)

if(nargin == 3)

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

else

f = collect(f); %将插值多项式展开

f = vpa(f, 3);

end

end

end

【例3】牛顿插值应用实例。根据下表所列的数据点求出其牛顿插值多项式,并计算当x=2.0时的y值。

x 1 1.2 1.8 2.5 4

y 1 1.44 3.24 6.25 16

解:

在命令窗口Command Window直接输入:

>> x=[ 1 1.2 1.8 2.5 4] %逗号与空格等价

为了验证它已在工作空间中,回车后得到如下结果。

x =

1.0000 1.2000 1.8000

2.5000 4.0000

>> y=[1 1.44 3.24 6.25 16];

>> f = Newton (x,y)

回车后得到:

f =

. 182711e-14-.482154e-14*t+1.00000*t^2-.169177e-14*t^3+.211471e-15*t^4

>> f= Newton (x,y,2.0)

回车后得到:

f =

4

表格中的数据点是按y=2x给出的,当插值函数在x=2.0时的值看出22= 4。

在编辑窗口输入:

t=1:0.01:4;

z=.182711e-14-.482154e-14*t+1.00000*t.^2-.169177e-14*t.^3+.211471e-15*t.^4; x=[1 1.2 1.8 2.5 4]; y=[1 1.44 3.24 6.25 16];

plot(t,z,x,y,'ro');grid

命令执行后得到如图1-2所示图形。

1 1.5

2 2.5

3 3.54

246810121416

图 1-2 牛顿插值多项式与数据点的关系

MATLAB 函数调用,存放位置; 命令窗口,编辑窗口的使用。

计算方法 课内实验 插值法与函数逼近

《计算方法》课内实验报告 学生姓名:张学阳1009300132 及学号: 学院: 理学院 班级: 数学101 课程名称:计算方法 实验题目:插值法与函数逼近 指导教师 宋云飞讲师 姓名及职称: 朱秀丽讲师 尚宝欣讲师 2012年10月15日

目录 一、实验题目.......................................................... 错误!未定义书签。 二、实验目的.......................................................... 错误!未定义书签。 三、实验内容.......................................................... 错误!未定义书签。 四、实现结果.......................................................... 错误!未定义书签。 五、实验体会或遇到问题 (6)

插值法与函数逼近 二、实验目的 1.熟悉matlab 编写及运行数值计算程序的方法。 2.进一步理解插值法及函数逼近方法的理论基础。 3.进一步掌握给定数据后应用插值法及函数逼近方法进行数据处理并给出图示结果的实际操作过程。 三、实验内容 1.已知函数在下列各点的值为 试用4次牛顿插值多项式)(4x P 及三次样条函数)(x S (自然边界条件)对数据进行插值。给出求解过程,并用图给出 (){},10,1,0),()(,08.02.0,,4 ===+=i x S y x P y i x y x i i i i i 及。 2.下列数据点的插值 可以得到平方根函数的近似。 (1)用这9个点作8次多项式插值)(8x L 。 (2)用三次样条(第一类边界条件)插值给出)(x S 。 给出求解过程,在区间[0,64]上作图,从得到的结果看,在区间[0,64]上哪种插值结果更精确?在区间[0,1]上两种插值哪个更精确? 3.由实验给出数据表 试求3次、4次多项式的曲线拟合,再根据数据曲线形状,求一个另外函数的拟合曲线。给出求解过程,用图表示实验数据曲线及三种拟合曲线。

数值分析实验报告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、理解插值的基本概念,掌握各种插值方法,包括拉格朗日插值和牛顿插值等,注意其不同特点; 2、通过实验进一步理解并掌握各种插值的基本算法。 二、Matlab命令和程序 命令poly:创建一个向量,其分量为一个多项式的系数,该多项式具有给定的根。 命令polyval:求多项式的值, 命令 conv: 创建一个向量,其分量为一个多项式的系数,该多项式是另外两个多项式的积 polyval(C,2> >> P=poly(2> P=1 -2

Q=poly(3> Q=1 -3 >> conv(P,Q> ans= 1 -5 6 >> polyval(P,2> ans= 1、拉格朗日插值( 基于N+1个点,计算拉格朗日多项式> function [C,L]=lagran(X,Y> %input --X is a vector that contains a list of abscissasb5E2RGbCAP % Y is a vector that contains a list of ordinatesp1EanqFDPw %output--C is a matrix that contains the coefficient of the lagraneDXDiTa9E3d % interplatory polynomial % -- L is a matrix that contains the Lagrange coefficent polynomialsRTCrpUDGiT w=length(X>。 n=w-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

插值法实验报告

实验二插值法 1、实验目的: 1、掌握直接利用拉格郎日插值多项式计算函数在已知点的函数值;观察拉格郎日插值的龙格现象。 2、了解Hermite插值法、三次样条插值法原理,结合计算公式,确定函数值。 2、实验要求: 1)认真分析题目的条件和要求,复习相关的理论知识,选择适当的解决方案和算法; 2)编写上机实验程序,作好上机前的准备工作; 3)上机调试程序,并试算各种方案,记录计算的结果(包括必要的中间结果); 4)分析和解释计算结果; 5)按照要求书写实验报告; 3、实验内容: 1) 用拉格郎日插值公式确定函数值;对函数f(x)进行拉格郎日插值,并对f(x)与插值多项式的曲线作比较。 已知函数表:(0.56160,0.82741)、(0.56280,0.82659)、(0.56401,0.82577)、(0.56521,0.82495)用三次拉格朗日插值多项式求x=0.5635时函数近似值。 2) 求满足插值条件的插值多项式及余项 1) 4、题目:插值法 5、原理: 拉格郎日插值原理: n次拉格朗日插值多项式为:L n (x)=y l (x)+y 1 l 1 (x)+y 2 l 2 (x)+…+y n l n (x)

n=1时,称为线性插值, L 1(x)=y (x-x 1 )/(x -x 1 )+y 1 (x-x )/(x 1 -x )=y +(y 1 -x )(x-x )/(x 1 -x ) n=2时,称为二次插值或抛物线插值, L 2(x)=y (x-x 1 )(x-x 2 )/(x -x 1 )/(x -x 2 )+y 1 (x-x )(x-x 2 )/(x 1 -x )/(x 1 -x 2 )+y 2 (x -x 0)(x-x 1 )/(x 2 -x )/(x 2 -x 1 ) n=i时, Li= (X-X0)……(X-X i-1)(x-x i+1) ……(x-x n) (X-X0)……(X-X i-1)(x-x i+1) ……(x-x n) 6、设计思想: 拉格朗日插值法是根据n + 1个点x0, x1, ... x n(x0 < x1 < ... x n)的函数值f (x0), f (x1) , ... , f (x n)推出n次多項式p(x),然后n次多項式p (x)求出任意的点x对应的函数值f (x)的算法。 7、对应程序: 1 ) 三次拉格朗日插值多项式求x=0.5635时函数近似值 #include"stdio.h" #define n 5 void main() { int i,j; float x[n],y[n]; float x1; float a=1; float b=1; float lx=0; printf("\n请输入想要求解的X:\n x="); scanf("%f",&x1); printf("请输入所有点的横纵坐标:\n"); for(i=1;i

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

数值分析(计算方法)实验一

《数值分析》 课程实验指导书 实验一 函数插值方法 一、问题提出 对于给定的一元函数)(x f y =的n+1个节点值(),0,1,,j j y f x j n == 。试用Lagrange 公式求其插值多项式或分段二次Lagrange 插值多项式。 数据如下: (1) j x 0.4 0.55 0.65 0.80 0.95 1.05 j y 0.41075 0.57815 0.69675 0.90 1.00 1.25382 求五次Lagrange 多项式5L ()x ,和分段三次插值多项式,计算(0.596)f ,(0.99)f 的值。(提示:结果为(0.596)0.625732f ≈, (0.99) 1.05423f ≈ ) (2) j x 1 2 3 4 5 6 7 j y 0.368 0.135 0.050 0.018 0.007 0.002 0.001 试构造Lagrange 多项式6L ()x ,计算的(1.8)f ,(6.15)f 值。(提示:结果为(1.8)0.164762f ≈, (6.15)0.001266f ≈ ) 二、要求 1、 利用Lagrange 插值公式 00,()n n i n k k i i k k i x x L x y x x ==≠??-= ?-??∑∏编写出插值多项式程序; 2、 给出插值多项式或分段三次插值多项式的表达式; 3、 根据节点选取原则,对问题(2)用三点插值或二点插值,其结果如何; 4、 对此插值问题用Newton 插值多项式其结果如何。

四、实验分析: Lagrange 插值多项式的表达式: 1,,2,1,)()()(, )()(1111+=--==∏∑+≠=+=n i x x x x x l x l y x L n i j j j i j i n i i i 。 其中)(x l i 被称为插值基函数,实际上是一个n 次多项式。)(x l i 的这种表示具有较好的对称性。公式具有两大优点:(1)求插值多项式,不需要求解线性方程组,当已知数据点较多时,此公式更能显示出优越性。(2)函数值可以用符号形式表示,数据点未确定的纵坐标可用多项式表示。 Newton 插值多项式如下: 10010,()()[,,]()k n n j k k j j k N x f x f x x x x -==≠=+?-∑∏ 其中: 00,0()()[,,]k i k i i j j j i k f x x x f x x ==≠-=∑∏ Newton 插值多项式的优点是:当每增加一个节点时,只增加一项多项式。 三、实验程序及注释 1、m 程序: function [c,l]=lagran(x,y) % x 为n 个节点的横坐标组成的向量,y 为纵坐标所组成的向量 % c 为所得插值函数的系数所组成的向量 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; function fi=Lagran_(x,f,xi) fi=zeros(size(xi)); n=length(f); for i=1:n

计算方法-插值方法实验

实验一插值方法 一. 实验目的 (1)熟悉数值插值方法的基本思想,解决某些实际插值问题,加深对数值插值方法 的理解。 (2)熟悉Matlab 编程环境,利用Matlab 实现具体的插值算法,并进行可视化显示。 二. 实验要求 用Matlab 软件实现Lagrange 插值、分段线性插值、三次Hermite 插值、Aitken 逐步插值算法,并用实例在计算机上计算和作图。 三. 实验内容 1. 实验题目 (1 ) 已 知概 率积 分dx e y x x ?-= 2 2 π 的数据表 构造适合该数据表的一次、二次和三次Lagrange 插值公式,输出公式及其图形,并计算x =0.472时的积分值。 答: ①一次插值公式: 输入下面内容就可以得到一次插值结果 >> X=[0.47,0.48];Y=[0.4937452,0.5027498]; >> x=0.472; >> (x-X(2))/(X(1)-X(2))*Y(1)+(x-X(1))/(X(2)-X(1))*Y(2) ans =0.495546120000000 >> ②两次插值公式为: 输入下面内容就可以得到两次插值结果 >> X=[0.46,0.47,0.48];Y=[0.4846555,0.4937452,0.5027498]; >> x=0.472; >>(x-X(2))*(x-X(3))/((X(1)-X(2))*(X(1)-X(3)))*Y(1)+(x-X(1))*(x-X(3))/((X(2)-X(1))*(X(2)-X(3)))*Y(2)+(x-X(2))*(x-X(1))/((X(3)-X(2))*(X(3)-X(1)))*Y(3) i 0 1 2 3 x 0.46 047 0.48 0.49 y 0.4846555 0.4937452 0.5027498 0.5116683

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

实验报告:牛顿差值多项式&三次样条 问题:在区间[-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.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. 理解插值的基本原理,掌握多项式插值的概念、存在唯一性; 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 阶差商定义为

实验5 插值方法

实验5 插值方法 一、实验目的及意义 [1] 了解插值的基本原理 [2] 了解拉格朗日插值、线性插值、样条插值的基本思想; [3] 了解三种网格节点数据的插值方法的基本思想; [4] 掌握用MATLAB 计算三种一维插值和两种二维插值的方法; [5] 通过范例展现求解实际问题的初步建模过程; 通过自己动手作实验学习如何用插值方法解决实际问题,提高探索和解决问题的能力。通过撰写实验报告,促使自己提炼思想,按逻辑顺序进行整理,并以他人能领会的方式表达自己思想形成的过程和理由。提高写作、文字处理、排版等方面的能力。二、实验内 容 1.编写拉格朗日插值方法的函数M 文件;2.用三种插值方法对已知函数进行插值计算,通过数值和图形输出,比较它们的效果;3.针对实际问题,试建立数学模型,并求解。 三、实验步骤 1.开启软件平台——MATLAB ,开启MATLAB 编辑窗口; 2.根据各种数值解法步骤编写M 文件 3.保存文件并运行; 4.观察运行结果(数值或图形); 5.写出实验报告,并浅谈学习心得体会。 四、实验要求与任务 根据实验内容和步骤,完成以下具体实验,要求写出实验报告(实验目的→问题→数学模型→算法与编程→计算结果→分析、检验和结论→心得体会) 基础实验 1. 一维插值 利用以下一些具体函数,考察分段线性插值、三次样条插值和拉格朗日多项式插值等三种插值方法的差异。 1) 2 11 x +,x ∈[-5,5]; 2)sin x , x ∈[0,2π]; 3)cos 10 x , x ∈[0,2π]. 注意:适当选取节点及插值点的个数;比较时可以采用插值点的函数值与真实函数值的 差异,或采用两个函数之间的某种距离。 2.高维插值 对于二维插值的几种方法:最邻近插值、分片线性插值、双线性插值、三次插值等,利用如下函数进行插值计算,观察其插值效果变化,得出什么结论? 1) ())(sin ),(px t t x f -=ω,参数p =1/2000~1/200;采样步长为:t =4ms~4s ;

计算方法--插值法与拟合实验

实验三 插值法与拟合实验 一、实验目的 1. 通过本实验学会利用程序画出插值函数,并和原图形相比较 2. 通过本实验学会拟合函数图形的画法,并会求平方误差 二、实验题目 1. 插值效果的比较 实验题目:区间[]5,5-10等分,对下列函数分别计算插值节点k x 的值,进行不同类型的插值,作出插值函数的图形并与)(x f y =的图形进行比较: 2 11)(x x f +=; x x f arctan )(=; 4 41)(x x x f += (1) 做拉格朗日插值; (2) 做三次样条插值. 2. 拟合多项式实验 实验题目:给定数据点如下表所示: 分别对上述数据作三次多项式和五次多项式拟合,并求平方误差,作出离散函数),(i i y x 和拟合函数的图形. 三、实验原理 本实验应用了拉格朗日插值程序、三次样条插值程序、多项式拟合程序等实验原理. 四、实验内容 1(1) figure x=-5:0.2:5; y=1./(1+x.^2); plot(x,y,'r'); hold on %拉格朗日插值 x1=-5:1:5; y1=1./(1+x1.^2); xx=-4.5:0.5:4.5; yy=malagr(x1,y1,xx); plot(xx,yy,'+') %三次样条插值 dy0=1./(1+25); dyn=1./(1+25);

m=maspline(x1,y1,dy0,dyn,xx); plot(xx,m,'ok') 1(2) x=-5:0.2:5; y=atan(x); plot(x,y,'r'); hold on %拉格朗日插值 x1=-5:1:5; y1=atan(x1); xx=-4.5:0.5:4.5; yy=malagr(x1,y1,xx); plot(xx,yy,'+') %三次样条插值 dy0=1./(1+25); dyn=1./(1+25); m=maspline(x1,y1,dy0,dyn,xx); plot(xx,m,'ok') 1(3) x=-5:0.2:5; y=x.^2./(1+x.^4); plot(x,y,'r'); hold on %拉格朗日插值 x1=-5:1:5; y1=x1.^2./(1+x1.^4); xx=-4.5:0.5:4.5; yy=malagr(x1,y1,xx); plot(xx,yy,'+') %三次样条插值 dy0=1./(1+25); dyn=1./(1+25); m=maspline(x1,y1,dy0,dyn,xx); plot(xx,m,'ok') 2. x=[-1.5 -1.0 -0.5 0.0 0.5 1.0 1.5]'; y=[-4.45 -0.45 0.55 0.05 -0.44 0.54 4.55]'; plot(x,y,'or'); hold on %三次多项式拟合 p1=mafit(x,y,3);

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