文档库 最新最全的文档下载
当前位置:文档库 › Lagrange插值

Lagrange插值

Lagrange插值
Lagrange插值

目录

《MATLAB程序设计实践》课程考核 (1)

1编程实现“LAGRANGE插值”科学计算算法,并举例应用之 (1)

1.1算法说明 (1)

1.1.1数学推导 (1)

1.1.2Lagrange插值函数 (1)

1.2流程图 (3)

1.3源代码 (3)

1.4运行结果 (4)

2编程解决科学计算和工程问题 (5)

2.1算法说明 (5)

2.2流程图 (6)

2.3源代码 (6)

2.4运行结果 (7)

3求多项式的根并分析误差大小 (8)

3.1二分法 (8)

3.1.1二分法原理 (8)

3.1.2流程图 (9)

3.1.3源代码 (9)

3.2牛顿迭代法 (10)

3.2.1算法说明 (10)

3.2.2流程图 (11)

3.2.3源代码 (11)

3.3以上两种计算方法的运算结果 (12)

3.3.1二分法计算结果 (12)

3.3.2牛顿迭代法计算结果 (13)

《MATLAB 程序设计实践》课程考核

1 编程实现“Lagrange 插值”科学计算算法,并举例应用之 1.1 算法说明 1.1.1

数学推导

由数学理论可知:对12,,,n x x x 个不同的节点,且节点处的取值分别为12,,,n y y y ,则存在插值多项式:

()1

011

n n n P x a a x a x --=+++ , 使得()()1,2,,n i i P x y i n == ,且满足插值条件的次插值多项式唯一。并基于此定理,推出Lagrange 插值基函数。

考虑一个简单的插值问题:对节点()1,2,i x i n = 中任意一点()1k x k n ≤≤做一n 次多项式

()k l x 使它在该点上取值为1,而在其余点()1,2,1,1,,i x i k k n =-+ 上取值为零,即

1()0k i i k l x i k

=?=?

≠? 表明n 个点()1,2,1,1,i x i k k n =-+ 都是n 次多项式()k l x 的零点,故可设

1211()()()()()()k k k k n l x A x x x x x x x x x x -+=----- .

其中k A 为待定系数,由条件()1k l x =可得:

1111

()()()()

k k k k k k k n A x x x x x x x x -+=

---- .

由以上几式联立有:111111()()()()

()()()()()

k k n k k k k k k k n x x x x x x x x l x x x x x x x x x -+-+----=

---- .

对应于每一节点()0k x k n ≤≤都能求出一个满足插值条件的n 次插值多项式,这样,由式可以求出1n +个n 次插插多项式12(),(),,()n l x l x l x 。容易看出,这组多项式仅与节点的取法有关,称它们为在n 个节点上的1n +次基本插值多项式或n 次插值基函数。 1.1.2

Lagrange 插值函数

利用插值基函数立即可以写出满足插值条件的n 次插值多项式

1122()()()n n y l x y l x y l x ++

并记为()n L x ;

()112211111111

1()()()

()()()()

()()()()

()

n n n n

k k n k

k k k k k k k n n

n j k k j k j

j k

L x y l x y l x y l x x x x x x x x x y x x x x x x x x x x y x x -+=-+==≠=++----=-----=-∑∑∏

在MATLAB 中不自带Lagrange 函数,需要自行编程实现Lagrange 插值计算。

其功能是利用给出的节点计算出过所有这些节点的插值多项式。从而达到预测相关工程实践问题中某些物理量的变化趋势。

其算法流程说明如下:

(1)

:,(0,1,2,...,);i i x y i n =输入

(2)();L u 计算插值

1);u 输入插值点

2)0;v =

3)0,1,...,k n =对做:

o

01

()/();n

k i k i i i k

l u x x x =≠=--∏

o 2;k k v v l y =+

4):,u v 输出。

1.2流程图

1.3源代码

%lagrange 插值函数

%x0,y0为已知的插值点数值

%x为所求插值点矩阵

%y为返回函数值,即插值函数在所求插值点的函数图1lagrange算法流程图

function y=lagrange(x0,y0,x) n=length(x0);m=length(x);

%%%%%%%%%%%%%%%%%%最外层循环用于输出结果 for k=1:m z=x(k); v=0.0;

%%%%%%%%%%%%%%%%%%外循环用于计算求和 for j=1:n p=1.0;

%%%%%%%%内循环用于计算y n (x)*l n (x) for i=1:n if i~=j

p=p*(z-x0(i))/(x0(j)-x0(i)); end end

v=p*y0(j)+v;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end y(k)=v;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end

1.4 运行结果

函数调用格式:Lagrange(x0,y0,x)f =。其中,x0,y0为插值节点,f 是求得的Lagrange 多项式在x 处的函数值。

给定ln f x =的数值表1,用上面lagrange 插值计算ln(0.54).

>>x0=[0.4:0.1:0.8]; >>y0=log(x0);

>>lagrange(x0,y0,0.54)

输出结果为:-0.616142*********

◆ lagrange 插值中的龙格现象

已知函数2

1

()1f x x =+,在区间[-5,5]之间进行插值,画出插值函数图象,可以比较出:

在区间两端插值函数发散比较厉害,精度大大降低。

输入:

>>x=[-5:1:5];

>>y=1./(1+x.^2);

>>x0=[-5:0.1:5];

>>y0=lagrange(x,y,x0);

>>y1=1./(1+x0.^2);

%绘制图象

>>plot(x0,y0,'--r')

>>hold on

>>plot(x0,y1,'-b')

图2lagrange 算法中的龙格现象

2 编程解决科学计算和工程问题

题目:给定由N 个力(1,2,3,,)i F N ???

组成的平面任意力系,求其合力。 2.1 算法说明

◆ 求N 个力的合力,先以矩阵的形式将这N 个力输入到matlab 中储存起来。因为力

是一个矢量,其既有大小也有方向。因此,我们得分别表示出力的大小以及方向两个参数,并以此为力的特征进行输入。

◆ 任何一个力i F

在平面坐标系中都可以对其进行分解,其分解公式为:

cos sin ix i iy i F F F F θθ

?=???=??? . 其中,θ为i F 与坐标轴X 方向正向的夹角;ix F ,iy F

分别为该力在坐标轴,X Y 方向的夹角。

◆ 将所求各个力都分解为两坐标轴方向的后,进行加和,求出两个坐标轴上的合力

1

1n ix x i n iy i F F F F

==?=????=??

∑∑

合合y

. ◆ 接着将力合成,力的大小可以表示为:

F =合◆ 最后再表示出力与X 轴正方向的夹角即可。求夹角可以是要注意分类,要根据x

F

及F 合y 所在的象限正确的表示出合力与X 轴正向的夹角。如当0x F > 合,0F >

合y 时,可按照下式求解:

(

)

arctan y

x F F θ=

合合.

2.2 流程图

2.3 源代码 %求合力函数

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % f 为个各个力的大小

% c 为个各个力与x 轴正向的夹角 % F,C 为所求合力的大小及方向

function [F,C]=qiuheli1(f,c)

if length(f)~=length(c)

disp('输入的力大小的举证与夹角不对应,请重新输入!');

a=input('请按顺序输入各个力的大小,并以“[]”括起来,注意中间以空格或逗号隔开:');

b=input('请按顺序输入各个力与x 轴正向的

图3求合力的流程图

夹角,并以“[]”括起来,注意中间以空格或逗号隔开:');

qiuheli1(a,b);

else

ct=c*pi/180;

c1=sym(ct);

fx=f.*cos(c1);

fy=f.*sin(c1);

FX=sum(fx,2);

FY=sum(fy,2);

F0=(FX.^2+FY.^2).^0.5;

format long;

F=double(F0);

Fx=double(FX);

Fy=double(FY);

if Fx>0&&Fy>0

C=asin(Fy./F)*180/pi;

elseif Fx<0&&Fy>0

C=asin(abs(Fx)./F)*180/pi+pi/2; elseif Fx<0&&Fy<0

C=asin(abs(Fy)./F)*180/pi+pi; elseif Fx>0&&Fy<0;

C=asin(abs(Fx)./F)*180/pi+3/2* pi;

elseif abs(Fx)==0&&abs(Fy)==0 C=0;

elseif Fx>0&&Fy==0

C=0;

elseif Fx==0&&Fy>0

C=90;

elseif Fx<0&&Fy==0

C=180;

elseif Fx==0&&Fy<0

C=270;

end

F

C

end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%M文件

clc;

clear;

a=input('请按顺序输入各个力的大小,并以“[]”括起来,注意中间以空格或逗号隔开:');

b=input('请按顺序输入各个力与x轴正向的夹角,并以“[]”括起来,注意中间以空格或逗号隔开:');

qiuheli1(a,b); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

2.4运行结果

调用上面的M文件,然后输入表中的力,可求得合力。

表2部分力合成后所得结果

序号F1F2F3F4F5F6F合

1 (30,0) (40,90) (50,53.13)

2 (10,45) (10,135) (14.14,90)

3 (10,0) (20,0) (30,0) (60,0)

4 (10,0) (10,120) (10,240) (0,0)

5 (10,0) (10,120) (10,240) (10,360) (10,480) (10,600) (0,0)

6 (10,0) (10,90) (10,180) (10,270) (0,0)

7 (10,0) (20,120) (30,240) (40,360) (50,480) (60,600) (34.64,33.14)

8 (20,0) (30,120) (40,240) (50,360) (60,480) (70,600) (34.64,33.14)

9 (10,0) (10,120) (10,240) (10,360) (10,0)

10 (11,42) (12,145) (13,4) (14,415) (15,945) (16,645) (12.89,2.48) 其中(a,b)表示力的两个参数,a为大小,b为方向。

3 求多项式的根并分析误差大小

25323762(1)1;

(2)3421;(3)5685.x x x x x x x x x ++-+--+-

3.1 二分法 3.1.1

二分法原理

二分法是方程求解最直观、最简单的方法。二分法以连续函数的介值定理为基础的。由介值定理知道,若函数)(x f 区间],[b a 上连续,且0)(*)(

首先记b b a a ==00,。用中点2

000b

a x +=将区间],[00

b a 等分成2个小区间:

],[00x a 和],[00b x 。然后分析可能存在的三种情况:

◆ 如果0)(*)(0=x f a f ,则0x 是零点,也就是方程的根。 ◆ 如果0)(*)(0

],[],[],[],[221100k k b a b a b a b a ????

其中每1个区间的长度都是前一区间长度的一半,最后1个区间的长度为:

k

k k a

b a b 2

-=

- 如果取最后1个区间],[k k b a 的中点:

2

k

k k a b x -=

作为0)(=x f 根的近似值,则有误差估计式:

1*2

2+-≤-≤

-k k k k a

b a b x x 对于所给精度ε,若取k 使得

ε≤-+1

2k a

b 则有ε≤-k x x *

3.1.2流程图

3.1.3源代码

用二分法求解方程()0

f x 在有根区间[,]

a b内的一个根,其中()

f x在[,]

a b只有一个根的情形。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % fun是所要求解的函数?£

% a和b分别为有根区间的左右限

% eps是允许的误差界

% y为所求近似解

% yc为函数f在c上的函数值

% err是c的误差估计

function

[y,err,yc]=erfen(fun,a,b,eps)

if nargin<4 eps=1e-4; end

if feval(fun,a)*feval(fun,b)<0 n=1;

c=(a+b)/2;

d=esp+1;

while d>eps

if feval (fun,a)*feval(fun,c)<0

b=c;c=(a+b)/2;

elseif feval(fun,c)*feval(fun,b)<0 a=c;c=(a+b)/2;

else y=c;eps=10000;

end

n=n+1;

d=abs(a-b);

end

注意:

1.初始区间是一个两端函数值符

号相反的区间.

2.“M”的意思是取新区间,其中

一个端点是原区间端点,另一

个端点是原区间的中点。找新

区间的法则是:两个端点的函

数值异号。

3.“N”的意思是方程的解满足要

求的精确度.

图4二分法流程图

format long ; err=d

yc=feval(fun,c) y=c

elseif feval (fun,a)==0 y=a

elseif feval(fun,b)==0 y=b;

else disp('这个区间内可能不是有根区间,请重新选定区间计算'); end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%

% 函数定义

function y=f0(x) y=x^2-3*x+2; end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function y=f0(x) y=x^2-3*x+2; end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

3.2 牛顿迭代法 3.2.1

算法说明

构代迭代函数的一条重要途径是用近似方程来代替原方程去求根。因此,如果能将非线性方程用线性方程去代替,那么,求近似根问题就很容易解决,而且十分方便。牛顿(Newton)法就是一种将非线性方程线化的一种方法。

设k x 是方程的一个近似根,把如果)(x f 在k x 处作一阶Taylor 展开,即:

))((')()(k k k x x x f x f x f -+≈

于是我们得到如下近似方程:

0))((')(=-+k k k x x x f x f

设0)('≠k x f ,则方程的解为:

()

'()

k k k f x x

x f x =+ 取x ~

作为原方程的新近似根1+k x ,即令: )

(')

(1k k k k x f x f x x -

=+, ,2,1,0=k 上式称为牛顿迭代格式。用牛顿迭代格式求方程的根的方法就称为牛顿迭代法,简称牛顿法。

牛顿法具有明显的几何意义。方程:

))((')(k k k x x x f x f y -+=

是曲线)(x f y =上点))(,(k k x f x 处的切线方程。迭代格式就是用切线式的零点来代替曲线

的零点。正因为如此,牛顿法也称为切线法。

3.2.2流程图

3.2.3源代码

%牛顿法解非线性方程

% xr是迭代解

% f0是所需求解的方程

% df是f0的导数

% x0迭代的初始点

% eps是要求达到的计算精度

function xr=Newtonm(x0,eps) format long;

f01=feval(@f0,x0);

df1=feval(@df,x0);

if df1==0;

error('d[f(x)]/dx=0 at x0');

end

if nargin<2;

eps=1e-6;

end

d=f01/df1;

n=0;

while abs(d)>eps; %注意

abs(d)=abs(x1-x0)

x1=x0-d;

x0=x1;

f01=feval(@f0,x0);

df1=feval(@df,x0);图5牛顿迭代法流程图

if df1==0;

error('d[f(x)]/dx=0 at x0'); end

if abs(f01)<=eps break ; end

d=f01/df1; n=n+1; end n xr=x1

3.3 以上两种计算方法的运算结果 3.3.1

二分法计算结果

二分法调用格式为:[y,err,yc]=erfen('f0',-10,10)。

第一题

选定[a,b]区间为一下区间,进行试探求解:[0,1],[10,20],[0,100],[-1,1],[-10,10],[-100,100],[-10,0],[-100,-50],[-4,-2]。

结果中都是输出为:‘这个区间内可能不是有根区间,请重新选定区间计算'

因此,对于第一小题的解答,二分法不能给出有效的根值。而更具实际情况,此方程由于0?<不存在实数解。

第二题

利用上面的尝试法选定区间计算,结果如下:

可以确定1为原方程的一个解。

第三题

采取同样的方法计算可得如下结果。其中ans 为方程的解,err 为相对误差,n 为迭代次数。

在多数区间内,该算法都是给出相关区间内不存在根的结论(不收敛)。并且,该算法不能确定出重根的情况。

3.3.2牛顿迭代法计算结果

调用方法:xr=Newtonm(x0,eps)

第一题:

>> xr=Newtonm(1)

n超过迭代次数,方程可能不存在实根

>> xr=Newtonm(100)

n超过迭代次数,方程可能不存在实根

>> xr=Newtonm(10000)

n超过迭代次数,方程可能不存在实根

>> xr=Newtonm(-10)

n超过迭代次数,方程可能不存在实根

上面选用不同的迭代初值,都给出相同的结论,说明该方程可能不存在实数根。

第二题:

>> xr=Newtonm1(10000)

err =

6.300276966653822e-005 n =

45

xr =

1.000000014292257

>> xr=Newtonm1(0)

err =

3.649825436682951e-007 n = 71

xr =

1.000000364983023

>> xr=Newtonm1(-10)

err =

1.208443495226178e-005 n =

30

xr =

1.000000000525739

>> xr=Newtonm1(-10000000) err =

7.005969216603859e-007 n =

92

xr =

1.000000700598689 >> xr=Newtonm1(-400)

err =

1.658723927627498e-005 n =

59

xr =

1.000000000990539

由以上结果可知1为原方程的解,由于所取的初值不相同,迭代次数也不一样。每次的计算误差也不相同。

第二题:

>> xr=Newtonm2(-0.00001)

err =

-5.000000000000001e-006 n =

xr =

-5.000000000000000e-006

>> xr=Newtonm2(-0.001)

err =

-2.499999999992493e-004 n =

1

xr =

-2.499999999991493e-004

>> xr=Newtonm2(-1)

err =

-1.032115037098584e-007 n =

10

xr =

-0.792745579458509

>> xr=Newtonm2(-10)

n超过迭代次数,方程可能不存在实根

>> xr=Newtonm2(4)

err =

1.041305369533754e-007

n = 73

xr =

0.976776295560450

>> xr=Newtonm2(2)

err =

1.041725961616008e-007 n =

27

xr =

0.976776295601479

>> xr=Newtonm2(3)

err =

1.041306950365307e-007 n =

50

xr =

0.976776295560604

>> xr=Newtonm2(4)

err =

1.041305369533754e-007 n =

73

xr =

0.976776295560450

>> xr=Newtonm2(40)

err =

1.041305341944825e-007 n =

901

xr =

0.976776295560448

>> xr=Newtonm2(4000) err = 1.041303240004642e-007 n =

91981

xr =

0.976776295560242

根据以上的运算结果可知,方程在0以及0.976776295560242附近存在实数解。其相对误差及迭代次数也随着初值取值不同而异,具体取值见上面结果。

三次样条插值代码

2 三次样条插值程序 三次样条插值利用方案二(求解固支样条或压紧样条) 按照要求要起点和终点的一阶导数值已知, 可得关于01,,.....,n M M M 的严格对角占优势的三对角方程组 然后利用三对角法(追赶法)解此线性方程组。 (1)编写M 文件,并保存文件名scfit.m % x,y 分别为n 个节点的横坐标和纵坐标值组成的向量 % dx0和dxn 分别为S 的导数在x0和xn 处的值,即m 0和m n n=length(x)-1; h=diff(x); d=diff(y)./h; a=h(2:n-1); b=2*(h(1:n-1)+h(2:n)); c=h(2:n); u=6*diff(d); b(1)=b(1)-h(1)/2; u(1)=u(1)-3*(d(1)-dx0); b(n-1)=b(n-1)-h(n)/2; u(n-1)=u(n-1)-3*(dxn-d(n)); %追赶法部分 for k=2:n-1 temp=a(k-1)/b(k-1); b(k)=b(k)-temp*c(k-1); u(k)=u(k)-temp*u(k-1); end m(n)=u(n-1)/b(n-1); for k=n-2:-1:1 m(k+1)=(u(k)-c(k)*m(k+2))/b(k); end %求S K1,S K2,S K3,S K4 m(1)=3*(d(1)-dx0)/h(1)-m(2)/2; m(n+1)=3*(dxn-d(n))/h(n)-m(n)/2; for k=0:n-1 00 ()S x m '=()n n S x m '=0011111111212212n n n n n n M d M d M d M d μλμλ----??????????????????????=??????????????????????????

《计算方法》

插值法 引言 许多实际问题都有用函数来表示某种内在规律的数量关系,其中相当一部分函数是通过实验或观测得到的.虽然某个区间上是存在的,有的 还是连续的,但却只能给出上一系列点的函数值, 这只是一张函数表.有的函数虽有解析表达式,但由于计算复杂,使用不方便,通常也造一个函数表,如大家熟悉的三角函数表、对数表、平方根和立方根表等等.为了研究函数的变化规律,往往需要求出不在表上的函数值.因此,我们希 望根据给定的函数表做一个既能反映函数的特性,又便于计算的简单函数 ,用近似.通常选一类较简单的函数(如代数多项式或分段代数 多项式)作为,并使对成立.这样确定的就是我们希望得到的插值函数.例如,在现代机械工业中用计算机等程序控制加工机 械零件,根据设计可给出零件个形曲线的某些型值点(,)(), 加工时为近年第步走刀方向步数,就要算出零件外形曲线其他点的函数值,才能加工出外表光滑的零件,这就是求插值函数的问题。下面我们给出有关插值法的定义。 设函数在区间上有定义,且已知在点上的值,若存在一简单函数,使 () (1.1) 成立,就称为的插值函数,点称为插值节点,包含插值节 点的区间称为插值区间,求插值函数的方法称为插值法。若是次数不超过的代数多项式,即

, (1.2) 其中为实数,就称为插值多项式,相应的插值法称为多项式插值,若 为分段的多项多,就称为分段插值。若为三角多项式,就称为三角插值。本章只讨论多项式插值与分段插值。 从几何上看,插值法就是求曲线,使其通过给定的+1个点, ,并用它近似已知曲线,见图2-1。 由已知的离散因变量的值来估计未知的中间插值的方法。 插值法又称“内插法”。 利用函数f (x)在某区间中若干点的函数值,作出适当的特定函数,在这些点上取已知值,在区间的其他点上用这特定函数的值作为函数f (x)的近似值,这里的方法称为插值法。如果这特定函数是多项式,就称它为插值多项式。

Lagrange插值

目录 《MATLAB程序设计实践》课程考核 (1) 1编程实现“LAGRANGE插值”科学计算算法,并举例应用之 (1) 1.1算法说明 (1) 1.1.1数学推导 (1) 1.1.2Lagrange插值函数 (1) 1.2流程图 (3) 1.3源代码 (3) 1.4运行结果 (4) 2编程解决科学计算和工程问题 (5) 2.1算法说明 (5) 2.2流程图 (6) 2.3源代码 (6) 2.4运行结果 (7) 3求多项式的根并分析误差大小 (8) 3.1二分法 (8) 3.1.1二分法原理 (8) 3.1.2流程图 (9) 3.1.3源代码 (9) 3.2牛顿迭代法 (10) 3.2.1算法说明 (10) 3.2.2流程图 (11) 3.2.3源代码 (11) 3.3以上两种计算方法的运算结果 (12) 3.3.1二分法计算结果 (12) 3.3.2牛顿迭代法计算结果 (13)

《MATLAB 程序设计实践》课程考核 1 编程实现“Lagrange 插值”科学计算算法,并举例应用之 1.1 算法说明 1.1.1 数学推导 由数学理论可知:对12,,,n x x x 个不同的节点,且节点处的取值分别为12,,,n y y y ,则存在插值多项式: ()1 011 n n n P x a a x a x --=+++ , 使得()()1,2,,n i i P x y i n == ,且满足插值条件的次插值多项式唯一。并基于此定理,推出Lagrange 插值基函数。 考虑一个简单的插值问题:对节点()1,2,i x i n = 中任意一点()1k x k n ≤≤做一n 次多项式 ()k l x 使它在该点上取值为1,而在其余点()1,2,1,1,,i x i k k n =-+ 上取值为零,即 1()0k i i k l x i k =?=? ≠? 表明n 个点()1,2,1,1,i x i k k n =-+ 都是n 次多项式()k l x 的零点,故可设 1211()()()()()()k k k k n l x A x x x x x x x x x x -+=----- . 其中k A 为待定系数,由条件()1k l x =可得: 1111 ()()()() k k k k k k k n A x x x x x x x x -+= ---- . 由以上几式联立有:111111()()()() ()()()()() k k n k k k k k k k n x x x x x x x x l x x x x x x x x x -+-+----= ---- . 对应于每一节点()0k x k n ≤≤都能求出一个满足插值条件的n 次插值多项式,这样,由式可以求出1n +个n 次插插多项式12(),(),,()n l x l x l x 。容易看出,这组多项式仅与节点的取法有关,称它们为在n 个节点上的1n +次基本插值多项式或n 次插值基函数。 1.1.2 Lagrange 插值函数 利用插值基函数立即可以写出满足插值条件的n 次插值多项式 1122()()()n n y l x y l x y l x ++

三次样条插值函数

沈阳航空航天大学 数学软件课程设计 (设计程序) 题目三次样条插值函数 班级 / 学号 学生姓名 指导教师

沈阳航空航天大学 课程设计任务书 课程名称数学软件课程设计 院(系)理学院专业信息与计算科学 班级学号姓名 课程设计题目三次样条插值函数 课程设计时间: 2010 年12月20日至2010 年12月31日 课程设计的内容及要求: 1.三次样条插值函数 给出函数在互异点处的值分别为。 (1)掌握求三次样条插值函数的基本原理; (2)编写程序求在第一边界条件下函数的三次样条插值函数; (3)在区间上取n=10,20,分别用等距节点对函数 作三次样条插值函数,利用(1)的结果画出插值函数的图形,并在该图形界面中同时画出的图形。 [要求] 1.学习态度要认真,要积极参与课程设计,锻炼独立思考能力; 2.严格遵守上机时间安排; 3.按照MATLAB编程训练的任务要求来编写程序; 4.根据任务书来完成课程设计论文; 5.报告书写格式要求按照沈阳航空航天大学“课程设计报告撰写规范”; 6.报告上交时间:课程设计结束时上交报告;

7.严谨抄袭行为。 指导教师年月日负责教师年月日学生签字年月日

沈阳航空航天大学 课程设计成绩评定单 课程名称数学软件课程设计 院(系)理学院专业信息与计算科学课程设计题目三次样条插值函数 学号姓名 指导教师评语: 课程设计成绩 指导教师签字 年月日

目录 一正文 (1) 1问题分析 (1) 1.1 题目 (1) 1.2 分析 (1) 2 研究方法原理 (1) 2.1 求三次样条插值多项式,算法组织 (1) 3 算例结果 (3) 二总结 (7) 参考文献 (8) 附录 (9) 源程序: (9) 程序1 (9) 程序2 (10) 程序3 (12) 程序 4 (12)

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

数值计算方法作业 实验4.3 三次样条差值函数 实验目的: 掌握三次样条插值函数的三弯矩方法。 实验函数: dt e x f x t ? ∞ -- = 2 221)(π 实验内容: (1) 编程实现求三次样条插值函数的算法,分别考虑不同的边界条件; (2) 计算各插值节点的弯矩值; (3) 在同一坐标系中绘制函数f(x),插值多项式,三次样条插值多项式的曲线 比较插值结果。 实验4.5 三次样条差值函数的收敛性 实验目的: 多项式插值不一定是收敛的,即插值的节点多,效果不一定好。对三次样条插值函数如何呢?理论上证明三次样条插值函数的收敛性是比较困难的,通过本实验可以证明这一理论结果。 实验内容: 按照一定的规则分别选择等距或非等距的插值节点,并不断增加插值节点的个数。 实验要求: (1) 随着节点个数的增加,比较被逼近函数和三样条插值函数的误差变化情 况,分析所得结果并与拉格朗日插值多项式比较; (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

数值计算方法—拉格朗日插值

数值计算方法作业 专业:测控1002 学号:10540226 姓名:崔海雪

拉格朗日插值的算法及应用 【摘要】 本文简介拉格朗日插值,它的算法及程序和拉格朗日在实际生活中的运用。运用了拉格朗日插值的公式,以及它在MATLAB 中的算法程序,并用具体例子说明。拉格朗日插值在很多方面都可以运用,具有很高的应用价值。 【关键词】 拉格朗日;插值;公式;Matlab 算法程序; 一、绪论 约瑟夫·拉格朗日(Joseph Louis Lagrange),法国数学家、物理学家。他在数学、力学和天文学三个学科领域中都有历史性的贡献,其中尤以数学方面的成就最为突出。拉格朗日对流体运动的理论也有重要贡献,提出了描述流体运动的拉格朗日方法。数据建模有两大方法:一类是插值方法,另一类是拟合函数一般的说,插值法比较适合数据准确或数据量小的情形。然而Lagrange 插值有很多种,1阶,2阶,…n 阶。我们可以利用拉格朗日插值求方程,根据它的程序求原方程的图像。下面我具体介绍分析一下拉格朗日插值的算法设计及应用。 二、正文 1、基本概念 已知函数y=f(x)在若干点i x 的函数值i y =()i x f (i=0,1,???,n )一个差值问题就是求一“简单”的函数p(x):p(i x )=i y ,i=0,1,???,n, (1) 则p(x)为f(x)的插值函数,而f(x)为被插值函数会插值原函数,0x ,1x ,2x ,...,n x 为插值节点,式(1)为插值条件,如果对固定点-x 求f(-x )数值解,我们称- x 为一个插值节点,f(-x )≈p(-x )称为-x 点的插值,当-x ∈[min(0x ,1x ,2x ,...,n x ),max(0x ,1x ,2x ,...,n x )]时,称为内插,否则称为外插式外推,特别地,当p(x)为不超过n 次多项式时称为n 阶Lagrange 插值。 2、Lagrange 插值公式 (1)线性插值)1(1L 设已知0x ,1x 及0y =f(0x ) ,1y =f(1x ),)(1x L 为不超过一次多项式且满足 )(01x L =0y ,)(11x L =1y ,几何上,)(1x L 为过(0x ,0y ) ,(1x ,1y )的直线,从而得到 )(1x L =0y +0101x x y y --(x-0x ). (2)

几种插值法的应用和比较

插值法的应用与比较 信科1302 万贤浩 13271038 1格朗日插值法 在数值分析中,拉格朗日插值法是以法国十八世纪数学家约瑟夫·路易斯·拉格朗日命名的一种多项式插值方法.许多实际问题中都用函数来表示某种内在联系或规律,而不少函数都只能通过实验和观测来了解.如对实践中的某个物理量进行观测,在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值.这样的多项式称为拉格朗日(插值)多项式.数学上来说,拉格朗日插值法可以给出一个恰好穿过二维平面上若干个已知点的多项式函数.拉格朗日插值法最早被英国数学家爱德华·华林于1779年发现,不久后由莱昂哈德·欧拉再次发现.1795年,拉格朗日在其著作《师范学校数学基础教程》中发表了这个插值方法,从此他的名字就和这个方法联系在一起. 1.1拉格朗日插值多项式 图1 已知平面上四个点:(?9, 5), (?4, 2), (?1, ?2), (7, 9),拉格朗日多项式:)(x L (黑色)穿过所有点.而每个基本多项式:)(00x l y ,)(11x l y , )(22x l y 以及)(x l y ??各穿过对应的一点,并在其它的三个点的x 值上取零. 对于给定的若1+n 个点),(00y x ,),(11y x ,………),(n n y x ,对应于它们的次数不超过n 的拉格朗日多项式L 只有一个.如果计入次数更高的多项式,则有无穷个,因为所有与L 相差 ))((10x x x x --λ……)(n x x -的多项式都满足条件. 对某个多项式函数,已知有给定的1+k 个取值点: ),(00y x ,……,),(k k y x ,

(精选)三次样条插值的MATLAB实现

MATLAB 程序设计期中考查 在许多问题中,通常根据实验、观测或经验得到的函数表或离散点上的信息,去研究分析函数的有关特性。其中插值法是一种最基本的方法,以下给出最基本的插值问题——三次样条插值的基本提法: 对插值区间[]b a ,进行划分:b x x x a n ≤

常见插值法

常见插值法 【摘 要】插值方法在数值分析中起着非常重要的作用。在此介绍一些常见的插值方法及 其应用范例。 【关键字】数值分析;插值方法;应用; 1. 插值法定义 插值法又称“内插法”,是利用函数f (x)在某区间中 插入若干点的函数值,作出适当的特定函数,在这些 表(1) 插值点 点上取已知值,在区间的其他点上用这特定函数的值作为函数f (x)的近似值,这种方法称为插值法。如果这特定函数是多项式,就称它为插值多项式。 2.常见的插值法及其构造 Lagrange 插值法 (a).公式推导: 表(1)的Lagrange 插值的插值多项式 ∑==n i i i x l x f x 0 n )()()(L ,(j=0,1,2....n)。 其中插值基函数是 ∏ ≠=--=n j i i j i j x x x x x l 0 n ) ()()(,(i,j=0,1 2...n) 。 其插值余项为 其中),b a (∈ ξ,∏≠=+--=n j i i j i j x x x x x 0 1n )() ()(ω (b).matlab 实现方法: Matlab 没有直接求解的相关函数,现编译如下: function yi = Lagarange_chazhi(x,y,xi) % 求拉格朗日插值,并返回一个输入为xi 时的函数值 % x 为插值点向量,至少有三项 % y 为插值点值的向量,项数与x 相同 m = length(x); %求插值个数 m1 = length(y); if m<=2 error('项数不足!'); end if m~=m1 error('!!!y 的项数应与x 相同!!!'); end %对参数的判断 lag_hanshu = 0; syms X ; for (l = 1:m) %构造插值基函数 la = y(l); for a = (1:l-1) la = la*(X-x(a))/(x(l)-x(a)); end for a = (l+1:m) la = la*(X-x(a))/(x(l)-x(a)); end format long lag_hanshu = lag_hanshu+la; %求解出插值函数 end yi = subs( lag_hanshu,'X',xi); %返回插值函数输入为xi 时的值 End (c).方法缺陷:当插值点个数7n ≥时,将产生 龙格现象: 经典例子,对) 251(1 )(2x x f += 进行拉格朗日插 0x 1x 2x ....... 1-n x n x 0y 1y 2y ....... 1-n y n y ), (!)1() ()()()(1)1(x n f x L x f x R n n n n +++=-=ωξ

Lagrange插值多项式

宁夏师范学院数学与计算机科学学院 《数值分析》实验报告 实验序号:1实验项目名称:Lagrange插值多项式

end L(k,:)=V; end C=y*L 五、实验结果与数据处理 1.(1)清单: >> clear >> clf >> x=[1,2,2.5]; >> y=x+2./x; >> [C,L]=lagran(x,y); C = 0.4000 -1.2000 3.8000 >> xx=[1.5,1.2]; >> yy=polyval(C,xx) yy = 2.9000 2.9360 (2)清单 >> clear,clf >> x=[0.5,1,3,5]; >> y=x+2./x; >> [C,L]=lagran(x,y); C = -0.2667 2.5333 -6.3333 7.0667 >> xx=[1.5,1.2]; >> yy=polyval(C,xx) yy = 2.3667 2.6539 2. 清单: >> x=0:pi/16:pi/2; >> y=x.*sin(x); >> [C,L]=lagran(x,y); C = Columns 1 through 8 -0.0001 -0.0003 0.0089 -0.0005 -0.1663 -0.0001 1.0000 -0.0000 Column 9 >> xx=0:pi/16:pi/2; >> yy=polyval(C,xx); >> plot(xx,yy,'b',x,y,'.') >> hold on >> a=polyfit(x,y,4)

>> grid on 六、分析与讨论 通过本次的实验,我初步掌握了 综合运用专业及基础知识,解决实际数学问题的能力,运行过程中有几处错误,但照提示改过就出结果了。 七、教师评语

三次样条插值方法的应用

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 %dirivitive numbers given. n=length(x0); km=length(x); a(1)=-0.5; b(1)=3*(y0(2)-y0(1))/(2*(x0(2)-x0(1))); for j=1:(n-1) h(j)=x0(j+1)-x0(j); end for j=2:(n-1) alpha(j)=h(j-1)/(h(j-1)+h(j)); beta(j)=3*((1-alpha(j))*(y0(j)-y0(j-1))/h(j-1)+alpha(j)*(y0(j+1)-y0(j))/h(j));

拉格朗日多项式插值

拉格朗日多项式插值法浅析 摘要 拉格朗日插值多项式是一种最常见的多项式插值法,也是一种最常用的逼近工具。“学以致用 ”是每一门学科都致力追求的境界,数学自然也不例外。下面,探讨拉格朗日插值法的基本原理、如何构造拉格朗日多项式、拉格朗日多项式的误差界,并用 MATLAB 程序来实现这一数学算法的自动化,为复杂的分析研究提供了一条数学算法的捷径。 【关键词】:拉格朗日多项式 算法实现 MATLAB 在科学研究和实际的工程设计中,几乎所有的问题都可以用)(x f y =来表示其某种内在规律的数量关系。但理想化的函数关系在实际工程应用中是很难寻找 的,对于那些没有明显解析式的函数关系表达式则只能通过实验观察的数据,利用多项式对某一函数的进行逼近,使得这个逼近函数能够反映)(x f 的特性,而且利用多项式就可以简便的计算相应的函数值。例如我们不知道气温随日期变化的具体函数关系,但是我们可以测量一些孤立的日期的气温值,并假定此气温随日期变化的函数满足某一多项式。这样,利用已经测的数据,应用待定系数法便可以求得一个多项式函数f (x )。应用此函数就可以计算或者说预测其他日期的气温值。一般情况下,多项式的次数越多,需要的数据就越多,而预测也就越 准确。当然,构造组合多项式方法比较多,如线性方程求解、拉格朗日系数多项式以及构造牛顿多项式的分段差分和系数表等等,这里只对拉格朗日多项式插值法进行深入探讨。 一、拉格朗日多项式插值算法基本原理 函数)(x f y =在区间[a,b]上有定义,在是[ a,b]上取定的 N + 1个互异节点, 且在这些点处的函数值)(0x f , )(1x f ,…,)(n x f 为已知, 即 yi =f (xi ) , (N i ...1,0=),若存在一个和)(x f 近似的函数)(x P N ,满足 )()(i i N x f x P = (N i ...1,0=) (1) 则称 φ(x) 为 f (x) 的一个插值函数, 点i x 为插值节点,(1)称为插值条件, 区间[a,b]称为插值区间, 而误差函数)()(x P x f E N N -=称为插值余项。即是求一个不超过N 次多项式0111...)(a x a x a x a x P N N N N N ++++=-- (N i ...1,0=) 满足 )()(i i N x f x P = (N i ...1,0=)

几种插值法的应用和比较论文(数学类)

几种插值法的应用与比较 作者:*** 指导老师:*** 摘要本文主要介绍了几种常用插值法的应用和比较,针对每个插值法,经过详细的论证和讨论,给出了每个插值法的优点和缺点.通过对数学插值法的研究、比较及应用的讨论及总结,从而得出所讨论插值方法的各自优势,以方便用户选择合适的插值法. 关键词拉格朗日插值重心拉格朗日插值分段线性插值 1 引言 在许多实际问题及科学研究中,因素之间往往存在着函数关系,但是这些关系的显示表达式不一定都知道,通常只是由观察或测试得到一些离散数值,所以只能从这些数据构造函数的近似表达式,有时虽然给出了解析表达式,但由于解析表达式过于复杂,计算起来十分麻烦.这就需要建立函数的某种近似表达,而插值法就是构造函数的近似表达式的方法. 由于代数多项式是最简单而又便于计算的函数,所以经常采用多项式作为插值函数,称为多项式插值.多项式插值法有拉格朗日插值法,牛顿插值法、埃尔米特插值法,分段插值法和样条插值法等.其基本思想都是用高次代数多项式或分段的低次多项式作为被插值函数的近似解析表达式. 2拉格朗日插值法 在数值分析中,拉格朗日插值法是以法国十八世纪数学家约瑟夫·路易斯·拉格朗日命名的一种多项式插值方法.许多实际问题中都用函数来表示某种内在联系或规律,而不少函数都只能通过实验和观测来了解.如对实践中的某个物理量进行观测,在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值.这样的多项式称为拉格朗日(插值)多项式.数学上来说,拉格朗日插值法可以给出一个恰好穿过二维平面上若干个已知点的多项式函数.拉格朗日插值法最早被英国数学家爱德华·华林于1779年发现,不久后由莱昂哈德·欧拉再次发现.1795年,拉格朗日在其著作《师范学校数学基础教程》中发表了这个插值方法,从此他的名字就和这个方法联系在一起. 2.1 拉格朗日插值多项式

编程实现拉格朗日(lagrange)插值法(C语言)

编程实现拉格朗日(lagrange)插值法(C语言) 程序如下: #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>=20) { printf("Error!The value of n must in (0,20)."); getch();return 1; } 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]);

MATLAB三次样条插值之三弯矩法

MATLAB三次样条插值之三弯矩法 首先说这个程序并不完善,为了实现通用(1,2,…,n)格式解题,以及为调用追赶法程序,没有针对节点数在三个以下的情况进行分类讨论。希望能有朋友给出更好的方法。 首先,通过函数sanwanj得到方程的系数矩阵,即追赶法方程的四个向量参数,接下来调 用追赶法(在intersanwj函数中),得到三次样条分段函数系数因子,然后进行多项式合并 得到分段函数的解析式,程序最后部分通过判断输入值的区间自动选择对应的分段函数并计算 改点的值。附:追赶法程序chase %%%%%%%%%%%%%% function [newv,w,newu,newd]=sanwj(x,y,x0,y0,y1a,y1b)?%三弯矩样 条插值?%将插值点分两次输入,x0y0单独输入?% 边值条件a的二阶导数 y1a 和b 的二阶导数y1b,这里建议将y1a和y1b换成y2a和y2b,以便于和三转角代码相区别 ?n=length(x);m=length(y); if m~=n?error('x or y 输入有误,再来'); end?v=ones(n-1,1);u=ones(n-1,1);d=zeros(n-1,1);?w=2*o nes(n+1);?h0=x(1)-x0;?h=zeros(n-1,1); for k=1:n-1?h(k)=x(k+1)-x(k);?end v(1)=h0/(h0+h(1)); u(1)=1-v(1); d(1)=6*((y(2)-y(1))/h(1)-(y(1)-y0)/h0)/(h0+h(1));?% for k=2:n-1?v(k)=h(k-1)/(h(k-1)+h(k));?u(k)=1-v(k);?d(k)= 6*((y(k+1)-y(k))/h(k)-(y(k)-y(k-1))/h(k-1))/(h(k-1)+h(k)); end newv=[v;1];?newu=[1;u]; d0=6*((y(1)-y0)/h0-y1a)/h0; d(n)=6*(y1b-(y(n)-y(n-1))/h(n-1))/h(n-1); newd=[d0;d]; %%%%%%%%%%%% function intersanwj(x,y,x0,y0,y1a,y1b) %三弯矩样条插值?%第一部分?n=length(x);m=length(y); if m~=n?error('xory 输入有误,再来'); end?%重新定义h?h=zeros(n,1); h(1)=x(1)-x0; for k=2:n h(k)=x(k)-x(k-1);?end %sptep1调用三弯矩函数?[a,b,c,d]=sanwj(x,y,x0,y0,y1a,y1b);

基于插值的非均匀信号的傅里叶变换算法研究

目录 一、 A/D卡设计 (1) 1.1 基于PCI总线的A/D卡 (1) 1.2 基于USB总线的A/D卡 (2) 二、非均匀离散傅立叶变换 (4) 三、不同的插值算法 (6) 1. 拉格朗日多项式插值 (6) 2. 三次样条插值 (7) 3. 牛顿插值 (8) 四、主要算法及程序 (10) 1. 拉格朗日算法 (10) 2. 三次样条插值 (10) 3. Newton算法 (12) 五、算法结果及比较分析 (14) 六、心得体会 (19) 七、参考文献 (20)

一、A/D卡设计 1.1 基于PCI总线的A/D卡 1、PCI总线的含义 PCI是由Intel公司1991年推出的一种局部总线。从结构上看,PCI是在CPU和原来的系统总线之间插入的一级总线,具体由一个桥接电路实现对这一层的管理,并实现上下之间的接口以协调数据的传送。管理器提供了信号缓冲,使之能支持10种外设,并能在高时钟频率下保持高性能,它为显卡、声卡、网卡、MODEM等设备提供了连接接口,它的工作频率为33MHz/66MHz。 PCI是Peripheral Component Interconnect(外设部件互连标准)的缩写,它是目前个人电脑中使用最为广泛的接口,几乎所有的主板产品上都带有这种插槽。PCI插槽也是主板带有最多数量的插槽类型,在目前流行的台式机主板上,ATX结构的主板一般带有5~6个PCI插槽,而小一点的MATX主板也都带有2~3个PCI插槽,可见其应用的广泛性。 PCI总线是一种不依附于某个具体处理器的局部总线。管理器提供了信号缓冲,使之能支持10种外设,并能在高时钟频率下保持高性能。PCI总线也支持总线主控技术,允许智能设备在需要时取得总线控制权,以加速数据传送。 图1.1 典型的PCI系统总线构成 2、PCI总线的基本含义 不同于ISA总线,PCI总线的地址总线与数据总线是分时复用的。这样做的好处是,

几种插值法的应用和比较教学提纲

几种插值法的应用和 比较

插值法的应用与比较 信科1302 万贤浩 13271038 1格朗日插值法 在数值分析中,拉格朗日插值法是以法国十八世纪数学家约瑟夫·路易斯·拉格朗日命名的一种多项式插值方法.许多实际问题中都用函数来表示某种内在联系或规律,而不少函数都只能通过实验和观测来了解.如对实践中的某个物理量进行观测,在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值.这样的多项式称为拉格朗日(插值)多项式.数学上来说,拉格朗日插值法可以给出一个恰好穿过二维平面上若干个已知点的多项式函数.拉格朗日插值法最早被英国数学家爱德华·华林于1779年发现,不久后由莱昂哈德·欧拉再次发现.1795年,拉格朗日在其著作《师范学校数学基础教程》中发表了这个插值方法,从此他的名字就和这个方法联系在一起. 1.1拉格朗日插值多项式 图1

已知平面上四个点:(?9, 5), (?4, 2), (?1, ?2), (7, 9),拉格朗日多项式:)(x L (黑色)穿过所有点.而每个基本多项式:)(00x l y ,)(11x l y , )(22x l y 以及)(x l y ??各穿过对应的一点,并在其它的三个点的x 值上取零. 对于给定的若1+n 个点),(00y x ,),(11y x ,………),(n n y x ,对应于它们的次数不超过n 的拉格朗日多项式L 只有一个.如果计入次数更高的多项式,则有无穷个,因为所有与L 相差))((10x x x x --λ……)(n x x -的多项式都满足条件. 对某个多项式函数,已知有给定的1+k 个取值点: ),(00y x ,……,),(k k y x , 其中i x 对应着自变量的位置,而i y 对应着函数在这个位置的取值. 假设任意两个不同的i x 都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为: )()(0x l y x L j k j j ∑==, 其中每个)(x l j 为拉格朗日基本多项式(或称插值基函数),其表达式为: )()()()()()()()()(111100,0k j k j j j j j j j k j i i i j i j x x x x x x x x x x x x x x x x x x x x x l --------=--=++--≠=∏ΛΛ, 拉格朗日基本多项式()x l i 的特点是在j x 上取值为1,在其它的点i x ,j i ≠ 上取值为0. 例:设有某个多项式函数f ,已知它在三个点上的取值为: ? 10)4(=f , ? 25.5)5(=f , ? 1)6(=f , 要求)18(f 的值. 首先写出每个拉格朗日基本多项式:

拉格朗日插值法 (2)

在数值分析中,拉格朗日插值法是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法。许多实际问题中都用函数来表示某种内在联系或规律,而不少函数都只能通过实验和观测来了解。如对实践中的某个物理量进行观测,在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值。这样的多项式称为拉格朗日(插值)多项式。数学上来说,拉格朗日插值法可以给出一个恰好穿过二维平面上若干个已知点的多项式函数。拉格朗日插值法最早被英国数学家爱德华·华林于1779年发现[1],不久后(1783年)由莱昂哈德·欧拉再次发现。1795年,拉格朗日在其著作《师范学校数学基础教程》中发表了这个插值方法,从此他的名字就和这个方法联系在一起[2]。 对于给定的若n+1个点,对应于它们的次数不超过n 的拉格朗日多项式只有一个。如果计入次数更高的多项式,则有无穷个,因为所有与相差的多项式都满足条件。 定义 对某个多项式函数,已知有给定的k + 1个取值点: 其中对应着自变量的位置,而对应着函数在这个位置的取值。 假设任意两个不同的x j都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为: 其中每个为拉格朗日基本多项式(或称插值基函数),其表达式为: [3] 拉格朗日基本多项式的特点是在上取值为1,在其它的点上取值为0。存在性

对于给定的k+1个点:,拉格朗日插值法的思路是找到一个在一点取值为1,而在其他点取值都是0的多项式。这样,多项式在点取值为,而在其他点取值都是0。而多项式就可以满足 在其它点取值为0的多项式容易找到,例如: 它在点取值为:。由于已经假定两两互不相同,因此上面的取值不等于0。于是,将多项式除以这个取值,就得到一个满足“在取值为1,而在其他点取值都是0的多项式”: 这就是拉格朗日基本多项式。 唯一性 次数不超过k的拉格朗日多项式至多只有一个,因为对任意两个次数不超过k的拉格朗日 多项式:和,它们的差在所有k+1个点上取值都是0,因此必然是多项式 的倍数。因此,如果这个差不等于0,次数就一定不小于k+1。但是是两个次数不超过k的多项式之差,它的次数也不超过k。所以,也就是说。这样就证明了唯一性[4]。 几何性质 拉格朗日插值法中用到的拉格朗日基本多项式(由某一组 确定)可以看做是由次数不超过n的多项式所组成的线性空间: 的一组基底。首先,如果存在一组系数:使得, , 那么,一方面多项式P是满足的拉

实验四三次样条插值Word版

实验四三次样条插值的应用 一、问题描述 The upper portion of this noble beast is to be approximated using clamped cubic spline interpolants. The curve is drawn on a grid from which the table is constructed. Use Algorithm 3.5 to construct the three clamped cubic splines. 二、模型建立 三次样条插值 给定一个列表显示的函数 yi=y(xi),i=0,1,2,...,N-1。特别注意在xj和xj+1之间的一个特殊的区间。该区间的线性插值公式为:

(3.3.1)式和(3.3.2)式是拉格朗日插值公式(3.1.1)的特殊情况。 因为它是(分段)线性的,(3.3.1)式在每一区间内的二阶导数为零,在横坐标为xj处的二阶导数不定义或无限。三次样条插值的目的就是要得到一个内插公式,不论在区间内亦或其边界上,其一阶导数平滑,二阶导数连续。 做一个与事实相反的个假设,除yi的列表值之外,我们还有函数二阶导数y"的列表值,即一系列的yi"值,则在每个区间内,可以在(3.3.1)式的右边加上一个三次多项式,其二阶导数从左边的yj"值线性变化到右边的yj+1"值,这么做便得到了所需的连续二阶导数。如果还将三次多项式构造在xj和xj+1处为零,则不会破坏在终点xj和xj+1处与列表函数值yj和yj+1的一致性。 进行一些辅助计算便可知,仅有一种办法才能进行这种构造,即用 注意,(3.3.3)式和(3.3.4)式对自变量x的依赖,是完全通过A和B对x的线性依赖,以及C和D(通过A和B)对x的三次依赖而实现。可以很容易地验证,y"事实上是该插值多项式的二阶导数。使用ABCD的定义对x求(3.3.3)式的导数,计算dA/dx dB/dx dC/dx dD/dx,结果为一阶导数

相关文档