当前位置:文档之家› Lagrange插值基函数构造插值多项式

Lagrange插值基函数构造插值多项式

Lagrange插值基函数构造插值多项式
Lagrange插值基函数构造插值多项式

数学与软件科学学院实验报告

学期:至第学期年月日

课程名称:___计算机数值方法___ 专业: 级班

实验编号:1 实验项目一次、二次Lagrange 插值多项式指导教师__张莉_ 姓名:学号:实验成绩:

一、实验目的及要求

实验目的:体会使用Lagrange插值基函数构造插值多项式的特点,熟悉使用一次或二次Lagrange插值多项式近似函数y=f(x)的算法。掌握Lagrange插值多项式近似函数f(x)的误差表达式,并会熟练应用。

实验要求:

1. 给出一次、二次Lagrange插值算法

2. 用C语言实现算法

3. 给出误差分析。

二、实验内容

用下列插值节点数据,构造一次和二次Lagrange插值多项式,并计

三、实验步骤(该部分不够填写.请填写附页)

步骤一:用为代码描述lagrange插值多项式的算法

Step 1:输入:插值节点控制数n,插值点序列(xi,yi),i=0,1,…n,要计算的函数点x.

Step 2: for j=0 to n

{ { for j=0 to n 对于给定的x,计算lagrange基函数li(x)

然后求tmp=tmp*(x-xj)/(xi-xj);

}

fx=fx+tmp*yi;

}

Step 3:输出结果。

步骤二:编辑程序如下:

#include

#define MAX_N 3 // 定义点的最大维数

typedef struct tagPOINT /*the structer of point */

{

double x;

double y;

}POINT;

//点的结构

int main()

{

int n,i,j;

POINT points[MAX_N+1];

double tmp=1.0;

double x;

double lagrange=0.0;

clrscr();

printf("\nInput n value :"); /*the number of the points inserted*/

scanf("%d",&n); //输入被插值点的个数

if(n>MAX_N)

{

printf("The input n is larger than MAX_N,please redefine the MAX_N.\n");

return 1;

}

if(n<=0)

{

printf("Please input a number between 1 and %d.\n",MAX_N);

}

printf("Now input the (x_i,y_i),i=0,...%d:\n",n);

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

scanf("%lf %lf",&points[i].x,&points[i].y);

//输入被插值点

printf("Now input the x value:"); /*the value of x*/

scanf("%lf",&x); //输入待求的点的第一个分量

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

{

for(j=0;j<=n && j!=i;j++)

tmp*=(x-points[j].x)/(points[i].x-points[j].x);

lagrange+=tmp*points[i].y;

} //用lagrange来求多项式

printf("the results is %lf",lagrange);

return 0;

}

实验报告附页

四、实验结果分析与评价(该部分不够填写.请填写附页)

构造lagrange一次插值多项式,求点f(11.5),选取前两个插值点

构造lagrange一次插值多项式,求点f(12.5),选取后两个插值点

构造lagrange 二次插值多项式,求点f(11.5),结果为:

构造lagrange 二次插值多项式,求点f(12.5),结果为:

误差分析:

当x=11.5时, lagrange一次插值多项式的误差为:

①|R(x)|=|f(2)(a)(x-x0)(x-x1)/2|=|sin(x)(11.5-11)(11.5-12)/2|<=0.125

②当x=12.5时,lagrange一次插值多项式的误差为:

|R(x)|=|f(2)(a)(x-x1)(x-x2)|=|sin(x)(12.5-12)(12.5-13)/2|<=0.125

③当x=11.5时,lagrange二次插值多项式的误差为:

|R(x)|=|f(3)(a)(x-x0)(x-x1)(x-x2)/(3*2)|<=|(11.5-11)(11.5-12)(11.5-13 )/6|=0.0625

④当x=12.5时,lagrange二次插值多项式的误差为:R(x)=

|f(3)(a)(x-x3)(x-x1)(x-x2)/(3*2)|<=|(12.5-12)(12.5-12)(12.5-13)/(3*2) |=0.0625

发现:二次插值的误差要小于一次插值的误差。

注:实验成绩等级分为(90-100分)优,(80-89分)良,(70-79分)中,(60-69分)及格,(59分)不及格

Lagrange插值基函数构造插值多项式

数学与软件科学学院实验报告 学期:至第学期年月日 课程名称:___计算机数值方法___ 专业: 级班 实验编号:1 实验项目一次、二次Lagrange 插值多项式指导教师__张莉_ 姓名:学号:实验成绩: 一、实验目的及要求 实验目的:体会使用Lagrange插值基函数构造插值多项式的特点,熟悉使用一次或二次Lagrange插值多项式近似函数y=f(x)的算法。掌握Lagrange插值多项式近似函数f(x)的误差表达式,并会熟练应用。 实验要求: 1. 给出一次、二次Lagrange插值算法 2. 用C语言实现算法 3. 给出误差分析。 二、实验内容 用下列插值节点数据,构造一次和二次Lagrange插值多项式,并计 三、实验步骤(该部分不够填写.请填写附页) 步骤一:用为代码描述lagrange插值多项式的算法 Step 1:输入:插值节点控制数n,插值点序列(xi,yi),i=0,1,…n,要计算的函数点x. Step 2: for j=0 to n { { for j=0 to n 对于给定的x,计算lagrange基函数li(x) 然后求tmp=tmp*(x-xj)/(xi-xj); } fx=fx+tmp*yi; } Step 3:输出结果。 步骤二:编辑程序如下:

#include #define MAX_N 3 // 定义点的最大维数 typedef struct tagPOINT /*the structer of point */ { double x; double y; }POINT; //点的结构 int main() { int n,i,j; POINT points[MAX_N+1]; double tmp=1.0; double x; double lagrange=0.0; clrscr(); printf("\nInput n value :"); /*the number of the points inserted*/ scanf("%d",&n); //输入被插值点的个数 if(n>MAX_N) { printf("The input n is larger than MAX_N,please redefine the MAX_N.\n"); return 1; } if(n<=0) { printf("Please input a number between 1 and %d.\n",MAX_N); } printf("Now input the (x_i,y_i),i=0,...%d:\n",n); for(i=0;i<=n;i++) scanf("%lf %lf",&points[i].x,&points[i].y); //输入被插值点 printf("Now input the x value:"); /*the value of x*/ scanf("%lf",&x); //输入待求的点的第一个分量 for(i=0;i<=n;i++) { for(j=0;j<=n && j!=i;j++) tmp*=(x-points[j].x)/(points[i].x-points[j].x); lagrange+=tmp*points[i].y; } //用lagrange来求多项式 printf("the results is %lf",lagrange);

拉格朗日多项式插值(C语言)

#include #include #include float lagrange(float *x,float *y,float xx,int n) /*拉¤-格?朗¤¨o日¨?插?值|ì算?法¤?§*/ { int i,j; float *a,yy=0.0; /*a作á??为a临¢¨′时o?à变à?量¢?,ê?记?录?拉¤-格?朗¤¨o日¨?插?值|ì多¨¤项?式o?*/ 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]); }

拉格朗日插值法总结

拉格朗日插值法总结 拉格朗日插值法 2008-05-12 16 : 44 一、问题的背景 在实际问题中常遇到这样的函数y=f(x),其在某个区间[a,b]上是存在的。但是,通过观察或测量或试验只能得到在区间[a,b]上有限个离散点 x0,x1,…,xn上的函数值yi=f(xi),(i=0,1, …,n)。或者f(x)的函数f(x)表达 式是已知的,但却很复杂而不便于计算;希望用一个既能反映函数f(x)的特性, 又便于计算的简单函数来描述它。 二、插值问题的数学提法: 已知函数在n+1个点x0,x1,…,xn上的函数值 yi=f(xi),(i=0,1, …,n) 求一个简单函数y=P(x),使其满足: P(xi)=yi,(i=0,1, …,n)。 即要求该简单函数的曲线要经过y=f(x)上已知的这个n+1个点: (x0,y0),(x1,y1), …,(xn,yn), 同时在其它x€ [a,b]上要估计误差: R(x)=f(x)-P(x) 其中P(x)为f(x)的插值函数,x0,x1,…,xn称为插值节点,包含插值节点的区间[a,b]称为插值区间,求插值函数P(x)的方法称为插值法。若P(x)是次

数不超过n的代数多项式,就称P(x)为插值多项式,相应的插值法称为多项式 插值。若P(x)是分段的多项式,就是分段插值。若P(x)是三角多项式,就称三 角插值。 三、插值方法面临的几个问题 第一个问题:根据实际问题选择恰当的函数类。本章我们选择代数多项式 类,其原因有两个:(1)代数多项式类简单;微分、积分运算易于实行;(2)根据著名的Weierstrass逼近定理,任何连续的函数都可以用代数多项式作任意精确的逼近。 第二个问题:构造插值函数P(x),使其满足:P(xi)=yi,(i=0,1, …,n)与此相关的问题是:插值问题是否可解(存在性的问题),如果有解,是否唯一?(唯一性的问题) 第三个问题:插值误差R(x)=f(x)-P(x) 的估计问题。与此相关的问题是插值过程的收敛性的问题。 第一节拉格朗日插值公式 一.线性插值(一次插值) 已知函数f(x)在区间[xk,xk+1]的端点上的函数值yk=f(xk),yk+仁f(xk+1), 求一个一次函数y=P1(x)使得yk=f(xk),yk+仁f(xk+1), 其几何意义是已知平面上两点(xk,yk),(xk+1,yk+1), 求一条直线过该已知两点。 1.插值函数和插值基函数 由直线的点斜式公式可知: 把此式按照yk和yk+1写成两项: 记 并称它们为一次插值基函数。该基函数的特点如下表:

各种插值方法比较

空间插值可以有很多种分类方法,插值种类也难以举尽。在网上看到这篇文章,觉得虽然作者没能进行分类,但算法本身介绍地还是不错的。 在科学计算领域中,空间插值是一类常用的重要算法,很多相关软件都内置该算法,其中GodenSoftware 公司的Surfer软件具有很强的代表性,内置有比较全面的空间插值算法,主要包括: Inverse Distance to a Power(反距离加权插值法) Kriging(克里金插值法) Minimum Curvature(最小曲率) Modified Shepard's Method(改进谢别德法) Natural Neighbor(自然邻点插值法) Nearest Neighbor(最近邻点插值法) Polynomial Regression(多元回归法) Radial Basis Function(径向基函数法) Triangulation with Linear Interpolation(线性插值三角网法) Moving Average(移动平均法) Local Polynomial(局部多项式法) 下面简单说明不同算法的特点。 1、距离倒数乘方法 距离倒数乘方格网化方法是一个加权平均插值法,可以进行确切的或者圆滑的方式插值。方次参数控制着权系数如何随着离开一个格网结点距离的增加而下降。对于一个较大的方次,较近的数据点被给定一个较高的权重份额,对于一个较小的方次,权重比较均匀地分配给各数据点。计算一个格网结点时给予一个特定数据点的权值与指定方次的从结点到观测点的该结点被赋予距离倒数成比例。当计算一个格网结点时,配给的权重是一个分数,所有权重的总和等于1.0。当一个观测点与一个格网结点重合时,该观测点被给予一个实际为1.0 的权重,所有其它观测点被给予一个几乎为0.0 的权重。换言之,该结点被赋给与观测点一致的值。这就是一个准确插值。距离倒数法的特征之一是要在格网区域内产生围绕观测点位置的"牛眼"。用距离倒数格网化时可以指定一个圆滑参数。大于零的圆滑参数保证,对于一个特定的结点,没有哪个观测点被赋予全部的权值,即使观测点与该结点重合也是如此。圆滑参数通过修匀已被插值的格网来降低"牛眼"影响。 2、克里金法 克里金法是一种在许多领域都很有用的地质统计格网化方法。克里金法试图那样表示隐含在你的数据中的趋势,例如,高点会是沿一个脊连接,而不是被牛眼形等值线所孤立。克里金法中包含了几个因子:变化图模型,漂移类型和矿块效应。 3、最小曲率法 最小曲率法广泛用于地球科学。用最小曲率法生成的插值面类似于一个通过各个数据值的,具有最小弯曲量的长条形薄弹性片。最小曲率法,试图在尽可能严格地尊重数据的同时,生成尽可能圆滑的曲面。使用最小曲率法时要涉及到两个参数:最大残差参数和最大循环次数参数来控制最小曲率的收敛标准。 4、多元回归法 多元回归被用来确定你的数据的大规模的趋势和图案。你可以用几个选项来确定你需要的趋

五种插值法的对比研究---开题报告

五种插值法的对比研究 1. 选题依据 1.1 选题背景 插值法是一种古老的数学方法,插值法历史悠久。据考证,在公元六世纪时, 我国焯(zhuo) 已经把等距二次插值法应用于天文计算。十七世纪时,Newton 和 Gregory(格雷格里) 建立了等距节点上的一般插值公式,十八世纪时,Lagrange(拉格朗日) 给出了更一般的非等距节点插值公式。 而它的基本理论是在微积分产生以后逐渐完善的,它的实际应用也日益增多,特别是在计算机工程中。许多库函数的计算实际上归结于对逼近函数的计算。 1.2 研究的目的和意义 插值法是数值分析中最基本的方法之一。 在实际问题中碰到的函数是各种各样的,有的甚至给不出表达式,只提供了一些离散数据,例如,在查对数表时, 要查的数据在表中找不到,就先找出它相邻的数,再从旁边找出它的修正值, 按一定关系把相邻的数加以修正,从而找出要找的数,这种修正关系实际上就是一种插值。 在实际应用中选用不同类型的插值函数,逼近的效果也不同。在数值计算方法中,我们学习过五种基本的插值方法,即Lagrange 插值、Newton 插值、分段线性插值、分段三次Hermite 插值、样条插值函数。所以通过从这五种插值法的基本思想、特征、性质和具体实例入手,探讨五种插值法的优缺点和适用围,让学习者能够迅速而准确的解决实际问题,掌握插值法的应用。 2. 研究的方法 从具体实例入手并结合Matlab 在科学计算中的优势,通过实验对它们的精度和效率进行比较分析。 3. 论文结构 3.1 论文的总体结构 第一部分 导言 主要介绍选题的背景、目的及意义、研究现状、文献综述等。 第二部分 五种插值法的基本思想、性质及特点 在数值计算方法中,插值法是计算方法的基础,数值微分、数值积分和微分方程数值解都建立在此基础上。 插值问题的提法是:已知f(x)(可能未知或非常复杂函数)在彼此不同的n+1 个实点0x ,1x ,…n x 处的函数值是f(0x ),f(1x ),…,f(n x ),这时我们简单的说f(x)有n+1 个 离散数据对0n i i )}y ,{(x i .要估算f(x)在其它点x 处的函数值,最常见的一种办法就是插值, 即寻找一个相对简单的函数y(x),使其满足下列插值条件:y(i x )=f(i x ),i=0,1,…,n.,并以y(x)作为f(x)的近似值.其中y(x)称为插值函数,f(x)称为被插函数。

拉格朗日插值公式的证明及其应用

拉格朗日插值公式的证明及其应用 摘要: 拉格朗日(Lagrange)插值公式是多项式中的重要公式之一,在理论和实践中都有着广泛的应用.本文阐述了Lagrange 插值的基本理论,譬如:线形插值,抛物插值,Lagrange 多项式等.然后将线形插值,抛物插值,Lagrange 多项式插值分别应用到高中知识中,并且学会用计算机程序来编写.插值法的思想与中国剩余定理一脉相承, 体现了代数中"线性化" (即表示为求和和数乘的形式) 这一基本思路, 大巧若拙.本文的目的是通过介绍拉格朗日插值公式的推导,唯一性,证明过程及其在解题与实际生活问题中的应用来寻找该公式的优点,并且引人思考它在物理,化学等领域的应用.通过实际鉴定过程,利用插值公式计算生活中的成本问题,可以了解它的计算精度高,方法快捷. 关键词: 拉格朗日插值公式 唯一性 证明 解题应用 资产评估 曲线插值问题,直观地说,认为已知的一批数据点()n k k k f x 0,=是准确的,这些数据点所表现的 准确函数关系()x f 是未知的,在这种情况下要作一条近似曲线()x P 且点点通过这些点,插值问题不仅要讨论这种近似曲线()x P 的构造方法,还要讨论点增多时这种近似曲线()x P 是否稳定地收敛于未知函数()x f ,我们先研究一种简单常用的插值——拉格朗日插值. 一.定义,推导及其在解题中的应用 1.线性插值 1.1. 线性插值的定义 假定已知区间[]1,+k k x x 的端点处的函数值()k k x f y =, ()11++=k k x f y ,要求线性插值多项式()x L 1使它满足()k k y x L =1, ()111++=k k y x L . ()x L y 1=的几何意义:通过两点()k k y x ,和()11,++k k y x 的直线, 如图1所示,()x L 1的表达式由几何意义直接给出,即 ()()k k k k k k x x x x y y y x L ---+ =++111 (点斜式), 图1 ()11111++++--+--= k k k k k k k k y x x x x y x x x x x L (两点式). y=L 1x () y=f x () y k+1 y k x k+1 x k o y x

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

课题一:拉格朗日插值法 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)的值。

拉格朗日插值多项式与泰勒多项式的误差分析详全文

i. 拉格朗日插值多項 ii. 式與泰勒多項式的誤差分析 iii. 朱亮儒★ 曾政清☆ 陳昭地★ iv. ★國立臺灣師範大學數學系教授 v. ☆臺北市立建國高級中學數學教師 vi. vii. 摘要:本文旨於提供拉格朗日插值多項式與泰勒多項式誤差項估計值的初 等簡易證明,並探討其應用價值。 viii. 關鍵字:拉格朗日插值多項式、泰勒多項式、誤差項 ix. 一 引言 x. 有鑑於教育部99普通高級中學數學課綱在第一冊多項式的運算為迴避解三元一次方程組,首次出現插值多項式及其應用(以不超過三次插值多項式為限)([1][2][3]),99數學課綱包含插值多項式部分如下: xi. 求 xii. 32()2563f x x x x =-++ xiii. (1)(1)(2)(1)(2)(3)a b x c x x d x x x =+-+--+--- xiv. 中的, , , a b c d . xv. ()f x 除以()()x a x b --的餘式為通過()(),(),,()a f a b f b 的插值多項 式。 xvi. 若f 有,a b 兩實根,則f 可寫成()()()()f x q x x a x b =--的型式。

xvii. 透過因式定理證明插值多項式的唯一性。 xviii. 設通過(1,1),(2,3),(3,7)的多項式為 ()(1)(1)(2)f x a b x c x x =+-+--,求,,a b c 及12f ?? ??? . xix. 插值多項式:通過(11,3),(12,5),(13,8)的多項式可表示為 xx. (12)(13)(11)(13)(11)(12)()358(1112)(1113)(1211)(1213)(1311)(1312) x x x x x x f x ------=? +?+?------, xxi. 求(11.5)f 的值。 xxii. 此處暫不處理下面的題型:「設通過(1, 1), (2, 3), (3, 7)的多項式為 2()f x a bx cx =++,求,,a b c 。」此類題型將在數學的IV 的聯立方程組章節中處理。 xxiii. 此處自然而然讓人想到拉格朗日(Lagrange, J. L., 1736-1816)其人奇事,羅 列如下: xxiv. 他出生於義大利西北部的杜林(Turin),從小就極有數學天分,於18歲開始 撰寫數學論文,在數論上曾提出一個著名的定理:「任意正整數都可以表成四個平方數的和」。 xxv. 他是第一位證明均值定理(The Mean Value Theorem)的大數學家。(均值定理 在高三選修甲微分的單元中會學到([4]),它是僅次於微積分基本定理的極重要的存在定理) xxvi. 他在30歲時,應腓特烈二世的邀請到柏林作為其宮廷數學大師長達20年 之久。

三次埃尔米特插值

《计算方法》课程设计报告 学生姓名:张学阳学号:1009300132 陈洋1009300109 刘睿1009300122 学院:理学院 班级: 数学101 题目: 分段线性及三次埃尔米特插值通用程序 指导教师:宋云飞职称:讲师 朱秀丽讲师 尚宝欣讲师 2012年12月30日

目录 目录............................................................................................... I 一、摘要 (1) 二、算法设计 (1) 2.1分段线性插值 (1) 2.2分段三次埃尔米特插值 (1) 2.3功能框图 (1) 三、例题计算 (1) 四、误差及结果分析 (9) 4.1例题误差分析 (1) 4.2结点个数对插值结果的影响 (1) 五、总结及心得体会 (12) 参考文献 (13) 源程序 (14)

一、摘要 分段线性插值与分段定义的线性插值,在相邻插值节点的区间上对应的是同一个线性函数。由于它们的表现形式不一样从而产生为两种不同的计算方法,相应的误差表现形式也不一样.拉格朗日插值余项利用f(x)的二阶导数,要f(x)的二阶导数存在,对于二阶导数不存在的情况不能估算出它的误差,所以适用范围比较小.现在我们可以利用一阶导数就估 算出误差,给计算带来许多的方便。 为了避免高次插值可能出现的大幅度波动现象,在实际应用中通常采用分段低次插值来提高近似程度,比如可用分段线性插值或分段三次埃尔米特插值来逼近已知函数,但它们的总体光滑性较差。为了克服这一缺点,一种全局化的分段插值方法——三次样条插值成为比较理想的工具。 在代数插值过程中,人们为了获得较好的近似效果,通常情况下是增加插值节点数.由于二次插值比线性插值近似效果好,因此容易错误地认为插值多项式次数越高越好.事实上,随着插值节点的增多,插值多项式不一定收敛到被插值函数.。通过分段低次插值或样条插值可以得到较好的近似逼近函数,分段低次插值具有公式简单、运算量小、稳定性好、收敛性有保证等优点.随着子区间长度h取得足够小,分段低次插值总能满足所要求的精度.因此分段低次插值应用十分广泛.。分段线性插值是分段低次插值中常见的方法之一,在本文中对函数在(-5,5)上进行分段线性插值,取不同节点个数n,得到不同分段线性插值函数.并用MATLAB编写分段线性插值函数,最后比较用不同节点数所得插值函数与真实函数的误差,从而得出节点数与插值效果的关系。

函数的插值方法及matlab程序

6.1 插值问题及其误差 6.1.2 与插值有关的MATLAB 函数 (一) POLY2SYM函数 调用格式一:poly2sym (C) 调用格式二:f1=poly2sym(C,'V') 或f2=poly2sym(C, sym ('V') ), (二) POLYVAL函数 调用格式:Y = polyval(P,X) (三) POLY函数 调用格式:Y = poly (V) (四) CONV函数 调用格式:C =conv (A, B) 例 6.1.2求三个一次多项式、和的积.它们的零点分别依次为0.4,0.8,1.2. 解我们可以用两种MATLAB程序求之. 方法1如输入MATLAB程序 >> X1=[0.4,0.8,1.2]; l1=poly(X1), L1=poly2sym (l1) 运行后输出结果为 l1 = 1.0000 - 2.4000 1.7600 -0.3840 L1 = x^3-12/5*x^2+44/25*x-48/125 方法2如输入MATLAB程序 >> P1=poly(0.4);P2=poly(0.8);P3=poly(1.2); C =conv (conv (P1, P2), P3) , L1=poly2sym (C) 运行后输出的结果与方法1相同. (五) DECONV 函数 调用格式:[Q,R] =deconv (B,A) (六) roots(poly(1:n))命令 调用格式:roots(poly(1:n)) (七) det(a*eye(size (A)) - A)命令 调用格式:b=det(a*ey e(size (A)) - A) 6.2 拉格朗日(Lagrange)插值及其MATLAB程序 6.2.1 线性插值及其MATLAB程序 例 6.2.1 已知函数在上具有二阶连续导数,,且满足条件 .求线性插值多项式和函数值,并估计其误差. 解输入程序 >> X=[1,3];Y=[1,2]; l01= poly(X(2))/( X(1)- X(2)), l11= poly(X(1))/( X(2)- X(1)), l0=poly2sym (l01),l1=poly2sym (l11), P = l01* Y(1)+ l11* Y(2), L=poly2sym (P),x=1.5; Y = polyval(P,x) 运行后输出基函数l0和l1及其插值多项式的系数向量P(略)、插值多项式L和插值Y为l0 = l1 = L = Y = -1/2*x+3/2 1/2*x-1/2 1/2*x+1/2 1.2500 输入程序 >> M=5;R1=M*abs((x-X(1))* (x-X(2)))/2

埃尔米特(Hermite)插值

实验二埃尔米特(Hermite)插值 一、实验目的: 1.掌握埃尔米特插值算法原理; 2.使用C语言编程实现埃尔米特插值算法。 二、实验准备: 阅读《数值分析》2.4节 二、实验要求: 某人从甲地开车去乙地,每隔一段时间对行车距离和速率进行一次采样,得到在n+1 个采样时刻点t i 的里程s i和速率v i(i=0, 1, ..., n)。要求编程构造埃尔米特插值多项式H2n+1(t),满足H2n+1(t i)=s i, H'2n+1(t i)=v i,对所有i=0, 1, ..., n成立,并据此计算m个给定时刻的里程和速率。 函数接口定义: void Hermite_Interpolation( int N, double t[], double s[], double v[], int m, double ht[], double hs[], double hv[] ); 其中N为采样点个数(注意这个N不是公式中的最大下标n,而是等于n+1),采样时刻点t i、里程s i、速率v i分别通过t、s、v传入;m是需要估算的给定时刻的个数,ht传入给定的时刻点,相应计算出的里程和速率应分别存储在hs和hv中。 裁判程序如下:

裁判输入数据: 2 0.0 1.0 0.0 1.0 0.0 0.0 5 0.0 0.2 0.5 0.8 1.0 3 0.0 0.5 1.0 100.0 170.0 200.0 30.0 150.0 0.0 5 0.0 0.25 0.5 0.75 1.0 5 0.0 1.0 2.0 3.0 4.0 0.0 60.0 160.0 260.0 300.0 5.0 70.0 100.0 120.0 20.0 10 0.5 1.0 1.5 2.0 2.5 3.0 3.5 3.8 3.95 4.0 标准输出数据: 0.0000 0.1040 0.5000 0.8960 1.0000 0.0000 0.9600 1.5000 0.9600 0.0000 100.0000 127.9297 170.0000 195.9766 200.0000

多项式插值法和拉格朗日插值

多项式插值法和拉格朗日插值 教案一多项式插值法和拉格朗日插值 基本内容提要 1 多项式插值法的基本概念 2 插值多项式的存在性与唯一性分析 3 拉格朗日插值多 项式的构造及截断误差 4 截断误差的实用估计式 5 逐次线性插值法教学目的和要求 1 熟练掌握多项式插值法的基本概念 2 理解插值多项式的存在性与唯一性 3 掌握拉 格朗日插值法 4 掌握截断误差的估计方法 5 理解逐次线性插值法的基本思想,掌握Aitken逐次线性插值法 6 掌握运用拉格朗 日插值法处理问题的基本过程教学重点 1 拉格朗日插值基函数及拉格朗日插值多项式的构造 2 拉格朗日插值多项式的截断 误差分析 3 逐次线性插值法的基本思想教学难点 1 插值多项式存在唯一性条件的讨论分析 2 插值误差的分析与估计 3 Aitken逐次线性插值法的计算过程课程类型新知识理论课教学方法 结合提问,以讲授法为主教学过程 问题引入 实际问题中许多变量间的依赖关系往往可用数学中的函数概念刻画,但在多数情况下,这些函数的表达式是未知的,或者函数已知,但形式十分复杂。基于未知函数或复杂函数 的某些已知信息,如何构造这些函数的近似表达式?如何计算这些函数在其它点处的函数值?所构造的近似表达式与真实函数的误差是多少?插值理论与方法就是解决这些问题的 有效工具之一。 §2.1 多项式插值 2.1.1 基本概念 假设f(x)是定义在区间[a,b]上的未知或复杂函数,但已知该函数在点a≤x0 P(xi)=yi,i=0,1,2,L,n,即在给定点xi处,P(x)与f(x)是相吻合的。 (2.1) 把P(x)称为f(x)的插值多项式(函通常把上述x0 数), f(x)称为被插函数。[a,b]称为插值区间,条件(2.1)称为插值条件,并把 求P(x)的过程称为插值法。

牛顿形式的埃尔米特插值多项式

期末论文 课程名称:数值分析 院系名称:巢湖学院数学系所在班级:11级数本(2)班学生学号:11020170 学生姓名:张秀丽

目录 【题目】:牛顿形式的埃尔米特插值多项式 【摘要】:......................................................... 【关键词】:.......................................................... 【正文】: 一、引言 二、重节点均差与泰勒插值 三、埃尔米特插值典例 四、牛顿形式的埃尔米特插值多项式的一些应用领域 【结束语】:......................................................... 【参考文献】:..........................................................

牛顿形式的埃尔米特插值多项式 【摘要】:在了解了插值法以后,陆续的又接触和学习到多项式插值、拉格朗日插值、牛顿插值多项式等,但在有些实际问题中,仍需要其它要求,下面又给出有关牛顿的埃尔米特插值的内容。 【关键词】:重节点均差、泰勒插值、泰勒插值多项式、埃尔米特插值。 【正文】: 一、引言 插值法是一种古老的数学方法,它来自生产实践。早在一千多年前的隋唐时期制定历法时就应用了二次插值,隋朝刘绰将等距节点二次插值应用于天文计算。但插值理论都是在17世纪微积分产生以后才逐步发展的,牛顿的等距节点插值公式及均差插值公式都是当时的重要成果。近半世纪由于计算机的广泛使用和造船、航空、精密机械加工等实际问题的需要,使插值法在理论上和实践上得到进一步发展,尤其是20世纪40年代后期发展起来的样条插值,更获得广泛应用,成为计算机图形学的基础。 在插值法的提出后我们了解了多项式插值;应用各种不同的方法对给定的插值点为求得形如01()...n n P x a a x a x =+++的插值多项式我们得到了线性插值与抛物线插值;把线性插值与抛物线插值推广到一般情形,通过讨论如何构造通过n+1个节点01...n x x x <<<的n 次插值多项式()n L x ,我们定义了n 次插值基函数从而得到了拉格朗日插值多项式:()()n n k k k o L x y l x ==?。利用插值基函数很 容易得到拉格朗日插值多项式,公式结构紧凑,在理论分析中甚为重要。但当插值点增减时,计算要全部重新进行,甚为不变,为了计算方便可重新设计一种逐次生成插值多项式的方法,通过一系列的考察与讨论我们利用均差得到了牛顿均差插值多项式001001201()()[,]()[,,]()()...n P x f x f x x x x f x x x x x x x =+-+--++ 101[,...,]()...()n n f x x x x x x ---,随后还涉及了差分形式的牛顿插值公式等。 插值多项式要求在插值节点上函数值相等,有的实际问题还要求在节点上倒数值相等,甚至高阶导数值也相等,满足这种要求的插值多项式称为埃尔米特插值多项式。 二、重节点均差与泰勒插值 先给出一个关于均差的结论。 设01[,],,,...,n n f C a b x x x ?为[,]a b 上的相异节点,则01[,,...,]n f x x x 是其变量的连续函数。 如果[,]a b 上的节点互异,根据均差定义,若1[,]f C a b ?,则有 00'0000 ()()[,]()lim lim x x x x f x f x f x x f x x x -==-. 由此定义重节点均差

拉格朗日多项式插值

拉格朗日多项式插值法浅析 摘要 拉格朗日插值多项式是一种最常见的多项式插值法,也是一种最常用的逼近工具。“学以致用 ”是每一门学科都致力追求的境界,数学自然也不例外。下面,探讨拉格朗日插值法的基本原理、如何构造拉格朗日多项式、拉格朗日多项式的误差界,并用 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.数学模型 在平面上有n个点,然后我们用一个函数来逼近。也就是拉 格朗日插值多项式来逼近。 最后可得: 3.算法及流程 matlab程序 clc; clear; syms x x0=input('请输入对应点x的值'); y0=input('请输入对应点y的值'); m = length(x0); for i=1:m a=1; for j=1:m if j~=i a=expand(a*(x-x0(j)));

end end b=1; for k=1:m if k~=i b=b*(x0(i)-x0(k)); end end A(i)=expand(a/b); end L=0; for p=1:m L=L+y0(p)*A(p); end L plot(x0,y0,'r*'); axis equal grid on hold on x=linspace(x0(1),x0(end),20)'; y=inline(L); y1=y(x); plot(x,y1) 流程图如下图所示:

4.计算结果及分析 请输入对应点x的值[0.2 0.4 0.6 0.8 1.0] 请输入对应点y的值[0.98 0.92 0.68 0.42 0.21]

对应的拟合曲线函数求解得到: L = - (75*x^4)/32 + (385*x^3)/48 - (305*x^2)/32 + (829*x)/240 + 61/100 拟合曲线如图所示: 红色的点是原始数据点,蓝色的线是拟合曲线。通过朗格朗日多项式拟合,波动较大,而且每增加一个点,又得重新计算,计算麻烦。但是逻辑清楚,编程较牛顿多项式要简单。

对拉格朗日插值法与牛顿插值法的学习和比较

对拉格朗日插值法与牛顿插值法的学习和比较 摘要:根据对拉格朗日插值法和牛顿插值法的理解,本文主要介绍了拉格朗日插值法和牛顿插值法的相关内容以及它们的区别。 关键词:拉格朗日插值法;牛顿插值法 The leaning and comparison of the Lagrange interpolation and Newton interpolation Abstract: Based on the understanding of the Lagrange interpolation and Newton interpolation ,this paper mainly describes some related knowledge as well as the difference between these two methods. Keywords: Lagrange interpolation ; Newton interpolation 前言 在工程和科学研究中出现的函数是多种多样的。常常会遇到这样的情况:在某个实际问题中,虽然可以断定所考虑的函数)(x f 在区间],[b a 上存在且连续,但却难以找到它的解析表达式,只能通过实验和观测得到在有限个点上的函数值(即一张函数表)。显然,要利用这张函数表来分析函数)(x f 的性态,甚至直接求出其他一些点上的函数值可能是非常困难的。面对这些情况,总希望根据所得函数表(或结构复杂的解析表达式),构造某个简单函数)(x P 作为)(x f 的近似。这样就有了插值法,插值法是解决此类问题目前常用的方法。 如设函数)(x f y =在区间],[b a 上连续,且在1+n 个不同的点b x x x a n ≤≤,,,10 上分别取值n y y y ,,,10 。 插值的目的就是要在一个性质优良、便于计算的函数类Φ中,求一简单函数)(x P ,使 ),,1,0()(n i y x P i i == 而在其他点i x x ≠上,作为)(x f 的近似。 通常,称区间],[b a 为插值区间,称点n x x x ,,,10 为插值节点,称式i i y x P =)(为插值条件,称函数类Φ为插值函数类,称)(x P 为函数)(x f 在节点n x x x ,,,10 处的插值函数。求插值函数)(x P 的方法称为插值法。 插值函数类Φ的取法不同,所求得的插值函数)(x P 逼近)(x f 的效果就不同。它的选择取决于使用上的需要,常用的有代数多项式、三角多项式和有理函数等。当选用代数多项式作为插值函数时,相应的插值问题就称为多项式插值。本文讨论的拉格朗日插值法与牛顿插值法就是这类插值问题。 在多项式插值中,最常见、最基本的问题是:求一次数不超过n 的代数多项式 n n x a x a a x P +++= 10)( 使),,1,0()(n i y x P i i n ==,其中,n a a a ,,,10 为实数。

基于径向基函数与B样条的散乱数据拟合方法

基于径向基函数与B 样条的散乱数据拟合方法 韩旭里,庄陈坚,刘新儒 中南大学数学科学与计算技术学院,湖南长沙 (410083) E-mail :zcjzym258@https://www.doczj.com/doc/3c1277424.html, 摘 要:本文针对散乱数据的曲面拟合问题,提出了一种径向基函数与B 样条插值结合使用的曲面拟合方法.通过分片径向基函数插值,从三维散乱点获取有序网格点,利用张量积B 样条插值有序网格点,从而得到拟合曲面.该方法较好地解决了散乱数据插值和拟合的计算不稳定性问题.最后给出了算法实例. 关键词:曲面拟合; 高斯函数; 双三次B 样条插值; 径向基函数 1 引言 随着激光测距扫描等三维数据获取硬件技术的日趋完善,人们可以得到精度和密度都越来越高的物体表面三维数据,利用物体表面三维数据来建立真实物体数字模型也成为近年来国际图形学界的一种发展趋势,曲面重构作为这种建模方法的一个重要研究课题也得到了广泛的探讨和研究,成为国际上的研究热点之一.曲面重构可分为插值和逼近两种方法.曲面插值就是重构出来的目标曲面必须通过所有的采样点,包括型值点,边界及曲面内部法矢等信息;逼近曲面只是对采样点进行有权逼近,它不一定要求所有的采样点都落在目标曲面上,而只需要重构曲面满足用户的反求设计要求即可.本文笔者通过分析现有方法存在的困难,提出了一种基于径向基函数与B 样条结合使用的曲面拟合方法,较好地解决了散乱数据插值和拟合的计算不稳定性问题. 4][1][2][3][考虑用于多变量函数插值的径向基函数方法.给定函数R R →+:φ,对于数据{}R R f X d j j ?∈,,径向基函数插值法是要寻找如下形式的函数: ()(||||)j j f X a X X φ=?∑, 使其满足 ∑ (1) (||||).j k j k f a X X φ?=关于径向基函数,学者们已作了很多的工作,常用的径向基函数有: 10][7][8][9][(i) Kriging 方法的Gauss 分布函数: 22/)(σφr e r ?=(ii) Hardy 的Multi-Quadric 函数: ββφφ?+=+=) ()()()(2222r c r r c r ,(iii) Duchon 的薄板样条: 122)(ln )(+==k k r r r r r φφ,方程(1)对任何数据{}R R f X d j j ?∈,,当两两不同时都有解的充要条件是:对任 何两两不同的, 矩阵j X j X ||))(||(j k X X ?φ是非奇异的.正定函数是满足这种性质的函数.我们知道,Gauss 函数、逆Multi-Quadric 函数都是正定函数.对于数据量少的情况,径向基函数插值的结果较令人满意,而且计算也比较简单.但同时也存在一些问题,比如方程系数矩阵的条件数问题.径向基函数插值最终归结为求解一个线性方程组,在大数据时这是一个大规模矩阵的求逆问题.当数据较多时,得到的矩阵一般是数值不稳定的. 张量积B 样条插值也是实际中常用的插值方法.对于较均匀的矩形网格数据,其插值效

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