2023年12月19日发(作者:江苏高考数学试卷史上最难)

数值分析论文

数值分析中插值方法的分析与应用

学生姓名: 学号:

学 院:

专 业:

指导教师:

年 月

数值分析中插值方法的分析与应用

摘 要:数值分析是高等学校理工科一门重要的基础课程, 主要研究数学方法的数值求解。数值分析是各种计算性科学的联系纽带和共性基础, 是一门兼有基础性、应用性和边缘性的交叉学科,数值分析中插值法包括拉格朗日插值法、牛顿插值法、埃尔米特插值法等。本文主要介绍了各种插值方法的计算分析和推导,通过简单的例题进行算法分析并编程得出计算结果。

关键字:数值分析;数值求解;插值法

1 绪论

在最近的几十年中,随着计算机的发展,计算数学和应用数学中的各种方法也相应发展起来,特别是应用数学,它已经越来越渗透到其它非理工学科和各行各业中,尤其表现在生命科学、政治、军事、经济等非传统数学应用领域.同时许多教师在实践中也认识到,现有的大学数学教学内容与实际要求相去甚远.比如,几位大学计算机系毕业的学生,在面对工作中所遇见的一个非线性方程求根的问题时,他们既不知道该如何利用计算机编程求解,也不知道该如何利用计算机软件求解.某单位在LAMOS望远镜设计中,有一个复杂的概率计算问题,这个概率涉及到一个重积分,而且重积分的区问不能解析给出,负责计算的学生面对此问题感到不知所措.兴起于80年代末90年代初的数学建模比赛在一定程度上弥补了这个缺憾,参赛选手们通过参加比赛,激发了他们对数学的兴趣,也培养了他们应用数学工具解决实际问题的能力.虽然数学建模活动对学生的创造能力、应用能力有所帮助,但参加这个活动的学生毕竟是少数,这些做法并没有真正使广大学生掌握应用数学对实际问题的分析处理能力.那么,有没有这样一门课程,它既是必修课程,又具有像数学建模那样培养学生分析问题、解决问题能力的课程呢? 事实上,现有的数学课程中,数值分析课程本身就具有一定的理论教学与实践的意义.

数值分析是一门介绍适合于在计算机上使用的数值分析方法的课程,有时也称为计算方法课程,与其它相关数学课程相比,数值分析方法是偏重于应用的一门课程,其中的理论和方法不仅在其他专业课程中常常运用,而且在解决实际问题中也常常会用到.数值分析方法课程的基础是数学分析、线性代数、微分方程等数学理论,这些理论都为普通工科高等数学教育所覆盖,它的内容大体包括三个部分:数值逼近、数值代数、微分方程数值求解。

2 多种插值方法的分析比较

数值分析插值法是一种古老的数学方法,它来自生产实践。

利用计算机解决工程问题与常规手工计算的差异就在于它特别的计算方法.电机设计中常常需要通过查曲线、表格或通过作图来确定某一参量,如查磁化曲线、查

异步电动机饱和系数曲线等.手工设计时,设计者是通过寻找坐标的方法来实现.用计算机来完成上述工作时,采用数值插值法来完成。因此学好数值分析的插值法很重要。

2.1 插值方法的定义

插值方法是根据一组数据,如表1 所示:

表1 插值数据表

x1

F(x1)

x2

F(x2)

x3

F(x3)

x4

F(x4)

xn

F(xn)

求函数f ( x)的近似表达式p ( x)的方法.

插值方法的必要条件是误差函数或余项R( x) =f ( x) - p ( x)满足关系式

R( xi ) = 0 ( i = 0 ,2 , ⋯n)

当插值函数p(x)是多项式时,称为代数插值方法.

代数插值方法有Lagrange 插值方法,

逐次线性插值法Newton 插值方法,

Hermite 插值方法,

分段插值方法和样条插值方法等.

其基本思想都是用高次代数多项式或分段的低次多项式作被插函数p( x)的近似表达式。

2.2 常用的几种插值方法

2.2.1 Lagrange插值

1.Lagrange插值基函数

n+1个n次多项式

lk(x)称为Lagrange插值基函数

2.Lagrange插值多项式

xj0jknxxjkxj

k0,1,,n

设给定n+1个互异点(xk,f(xk)),k0,1,,n,xixj,ij,满足插值条件

Ln(xk)f(xk),k0,1,,n

的n次多项式

Ln(x)f(xk)lk(x)f(xk)(k0k0j0jknnnxxjxkxj)

为Lagrange插值多项式,称

f(n1)(x)nE(x)f(x)Ln(x)(xxj)

(n1)!j0为插值余项,其中x(x)(a,b)

2.2.2 Newton插值

1.差商的定义

f(x)关于xi的零阶差商

f[xi]f(xi)

f(x)关于xi,xj的一阶差商

f[xi,xj]f[xj]f[xi]xjxi

依次类推,f(x)关于xi,xi1,……,xik的k阶差商

f[xi,xi1,,xik]f[xi1,,xik]f[xi,,xik1]

xikxi2. Newton插值多项式

设给定的n+1个互异点(xk,f(xk)),k0,1,,n,xixj,ij,

称满足条件

Nn(xk)f(xk),k0,1,,n

的n次多项式

Nn(x)f[x0]f[x0,x1](xx0)f[x0,x1,,xn](xx0)(xxn1)

为Newton插值多项式,称

E(x)f(x)Nn(x)f[x0,x1,,xn](xxj),x[a,b]

j0n为插值余项。

2.2.3 Hermite插值

设f(x)C1[a,b],已知互异点x0,x1,…,xn[a,b]及所对应的函数值为f0,\'\'f1,…,fn,导数值为f0,f1,…,fn,则满足条件

\'\'\'

H2n1(xi)fi,H2n1(xi)fi,i0,1,,n

的2n1次Hermite插值多项式为

H2n1(x)fij(x)fj\'j(x)

jj0nn其中

2

j(x)[12(xxj)l\'j(xj)]l2j,j(x)(xxj)lj(x)

称为Hermite插值基函数,lj(x)是Lagrange插值基函数,若fC2n2[a,b],插值误差为

f(x)H2n1(x)f(x)(xx0)2(xxn)2,x(x)(a,b)

(2n2)!(2n2)2.2.4 分段插值

设在区间[a,b]上给定n+1个插值节点

ax0x1xnb

和相应的函数值y0,y1,…,yn,求作一个插值函数(x),具有性质

①(xi)yi (i0,1,2,,n)。

②(x)在每个小区间内[xi,xi1] (i0,1,2,,n)上是线性函数。

2.2.5 样条插值

设在区间[a,b]上取n+1个节点

ax0x1xnb

给定这些点的函数值yif(xi)。

若函数s(x)满足条件:

①s(xi)yi,i0,1,2,,n;

②在每个区间[xi,xi1](i0,1,2,,n)上是3次多项式;

③s(xi)C2[a,b];

④取下列边界条件之一:

(ⅰ)第一边界条件:s\'(x0)f\'(x0),s\'(xn)f\'(xn),

(ⅱ)第二边界条件:s\'\'(x0)f\'\'(x0),s\'\'(xn)f\'\'(xn)或s\'\'(x0)s\'\'(xn)0

(ⅲ)周期边界条件:sk(x0)sk(xn),k1,2

称s(x)为3次样条插值函数。

2.2.6 有理插值

设在区间[a,b]上给定n+m+1个互异节点

x0,x1,x2,……,xnm1,xnm

上的函数值yif(xi),i0,1,2,,nm,构造一个有理插值

pn(x)a0xna1xn1an1xan,

Rmn(x)mm1Qm(x)b0xb1xbm1xbm满足条件:

Rmn(xi)f(xi),i0,1,2,,nm

则称Rmn(x)为点集{x0,x1,x2,……,xnm1,xnm}上的有理插值函数。

3 插值算法的编程

1. Lagrange插值方法的编程

以0.32,0.34,0.36为节点,分别用线性插值和抛物插值求正弦函数在0.3367处的近似值。

拉格朗日插值程序清单:

#include

#include

double Lagrange(double x,int n,double a[],double b[]);

void main()

{

double a[20],b[20],x,y;

int i=0,n;

printf(\"请输入数值个数:n=\");

scanf(\"%d\",&n);

printf(\"请输入%d个不同的x的数值:n\",n);

for(i=0;i

{

}

printf(\"请按顺序输入x对应的y的数值:n\");

for(i=0;i

{

}

/* for(i=0;i

{

}*/

printf(\"请输入需计算的数:x=\");

scanf(\"%lf\",&a[i]);

scanf(\"%lf\",&b[i]);

printf(\"%f \",a[i]);

scanf(\"%lf\",&x);

y=Lagrange(x,n,a,b);

printf(\"根据拉格朗日插值公式计算后的数为:y=%fn\",y);

}

double Lagrange(double x,int n,double a[],double b[])

{

double y=0,L;

int i,j;

for(i=0;i

{

}

L=1;

for(j=0;j

{

}

y+=L*b[i];

if(j==i)continue;

else

{

}

L=L*(x-a[j])/(a[i]-a[j]);

return y;

}

2. Newton插值方法的编程

计算实例以2.0,2.1,2.2,2.3,2.4为节点,用牛顿插值求函数f(x)的近似值。

牛顿插值程序清单:

x 在2.51处

#include

#include

#include

double Newton(double x,int n,double a[],double b[]);

double Chashang(int a1,int b1,double a[],double b[]);

void main()

{

double a[20],b[20],x,y;

int i=0,n;

printf(\"请输入数值个数:n=\");

scanf(\"%d\",&n);

printf(\"请输入%d个不同的x的数值:n\",n);

for(i=0;i

{

}

printf(\"请按顺序输入x对应的y的数值:n\");

for(i=0;i

{

}

printf(\"请输入需计算的数:x=\");

scanf(\"%lf\",&x);

y=Newton(x,n,a,b);

printf(\"根据牛顿插值公式计算后的数为:y=%fn\",y);

}

double Newton(double x,int n,double a[],double b[])

scanf(\"%lf\",&a[i]);

scanf(\"%lf\",&b[i]);

{

int i;

double t=1.0,zhi=b[0],p=0.0;

for(i=1;i<=n;i++)

{

}

return zhi;

}

double Chashang(int a1,int b1,double a[],double b[])

{

double c;

t=(x-a[i-1])*t;

p=Chashang(0,i,a,b)*t;

zhi=zhi+p;

if(b1==a1+1)

c=(b[b1]-b[a1])/(a[b1]-a[a1]);

else

c=(Chashang(a1+1,b1,a,b)-Chashang(a1,b1-1,a,b))/(a[b1]-a[a1]);

return c;

}

4 结论

通过以上的对比分析计算,现得出以下结论:Lagrange型插值简单、迅速,适宜于对点插值快速计算;Newton型插值具有可继承性,适宜于外推计算;.Hermite型插值有比较高的连续可微性,但计算量比较大;样条型插值也具有较高的光滑性,但是需要额外的限制条件。

参考文献

[1] 李庆扬,王能超,易大义. 数值分析[M]. 武汉:华中科技大学出版1982.

[2] 吴才斌. 插值方法[ J ]. 湖北大学成人教育学院学报, 1999 ,(5)

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

[4] 孙志忠,袁慰平,闻震初. 数值分析[M]. 南京:东南大学出版社.

致 谢


更多推荐

插值,数值,分析