#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]);
}
printf("\n");
printf("Input xx:");
scanf("%f",&xx);
yy=lagrange(x,y,xx,n);
printf("x=%f,y=%f\n",xx,yy);
getch();
}
牛顿(Newton)插值公式
#include
#include
#include"math.h"
#define N 4
using namespace std;
void main()
{ void lin(double x[],double y[],double t,int n);
void newton(double a[],double b[],double t,double h,int n);
double t,h,d; int i,j,n,k;
double x[N]={0.4,0.55,0.65,0.80};
double y[N]={0.41075,0.57815,0.69675,0.88811};
double a[N],b[N];
h=0.1; //h为a等쨨距¨¤节¨2点ì?宽¨a度¨¨,ê?t为a插?值|ì点ì?
t=0.596;
if(!h) cout<<"此??函?¥数oy为a常?ê数oy"< else { if(t cout< else { cout<<"利¤?用??分¤?段?线?性?插?值|ì:êo"< lin(x,y,t,N); cout<<"利¤?用??等쨨距¨¤节¨2点ì?牛?ê顿¨′插?值|ì:êo"< newton(x,y,t,h,N); } } system ("pause"); } void lin(double x[],double y[],double t,int n) { int i;double w,e,c; //w为a逼à?近¨1值|ìe为a余?¨¤项? for(i=0;i {if(t==x[i]) { cout<<"sin("< } else if (t>x[i]) { w=y[i]*(t-x[i+1])/(x[i]-x[i+1])+y[i+1]*(t-x[i])/(x[i+1]-x[i]); c=fabs(cos(x[i])) > fabs(cos(x[i+1])) ? fabs(cos(x[i])) : fabs(cos(x[i+1])); e=c*(t-x[i])*(t-x[i+1]); cout<<"sin("< break; } } } void newton(double a[],double b[],double t,double h,int n) { int i,j,c; double d=0.0; double r=1.0,k=0.0,m=1.0,s=0.0; //d为a所¨′求¨?近¨1似?值|ì,ê?r为a差?值|ì余?¨¤项? double f(double b[],int n,int a); for(i=0;i if (t break; d=b[i-1]; //b[i-1]为a牛?ê顿¨′向¨°前??插?值|ì的ì?第ì¨2一°?个?点ì?函?¥数oy值|ì k=(t-a[i-1])/h; //k为a(ê?§插?值|ì点ì?—a相¨¤邻¢¨2前??一°?点ì?)ê?/等쨨距¨¤h c=j=i-1; for(i=j,j=0;i { m*=(k-j)/(j+1); if((i+1) s=m * f(b,i,c); d+=s; r*=h*(k-j)/(j+1); } r*=h*(k-j)/(j+1)*fabs(cos(a[c])); cout<<"si n("< } double f(double b[],int n,int a) //求¨?n阶?á差?分¤?,ê?用??p【?a】?或¨°q【?a】?存??储??én阶?á差?分¤?值|ì { double p[N-1]; double q[N-1]; //定?§义°?两¢?个?数oy组á¨|存??储??é差?分¤? int i,j; for(i=0;i<=n;i++) { p[i]=b[i+1]-b[i]; } for(i=1;i<=n;i++) { for(j=0;j<=(N-i-1);j++) { if((i%2)==1) q[j]=p[j+1]-p[j]; else p[j]=q[j+1]-q[j]; } } if (n%2) return p[a]; else return q[a]; } 拉格朗日插值公式的证明及其应用 摘要: 拉格朗日(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 #include 课题一:拉格朗日插值法 1.实验目的 1.学习和掌握拉格朗日插值多项式。 2.运用拉格朗日插值多项式进行计算。 2.实验过程 作出插值点(1.00,0.00),(-1.00,-3.00),(2.00,4.00)二、算法步骤 已知:某些点的坐标以及点数。 输入:条件点数以及这些点的坐标。 输出:根据给定的点求出其对应的拉格朗日插值多项式的值。 3.程序流程: (1)输入已知点的个数; (2)分别输入已知点的X坐标; (3)分别输入已知点的Y坐标; 程序如下: #include 插值算法*/ { 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)的值。 数值计算方法作业 专业:测控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) 浅析拉格朗日插值法 目录: 一、 引言 二、 插值及多项式插值的介绍 三、 拉格朗日插值的理论及实验 四、 拉格朗日插值多项式的截断误差及实用估计式 五、 参考文献 一、引言 插值在数学发展史上是个古老问题。插值是和拉格朗日(Lagrange )、牛顿(Newton )、高斯(Gauss )等著名数学家的名字连在一起的。在科学研究和日常生活中,常常会遇到计算函数值等一类问题。插值法有很丰富的历史渊源,它最初来源人们对天体研究——有若干观测点(我们称为节点)计算任意时刻星球的位置(插值点和插值)。现在,人们在诸如机械加工等工程技术和数据处理等科研都有很好的应用,最常见的应用就是气象预报。插值理论和方法能解决在实际中当许多函数表达式未知或形式复杂,如何去构造近似表达式及求得在其他节点处的值的问题。 二、插值及多项式插值 1、插值问题的描述 设已知某函数关系()y f x =在某些离散点上的函数值: 插值问题:根据这些已知数据来构造函数()y f x =的一种简单的近似表达式,以便于计算点,0,1,,i x x i n ≠= 的函数值()f x ,或计算函数的一阶、二阶导数值。 x 0x 0 y y 1 y 1 n y -n y 1 x 1 n x -n x 2、插值的几何意义 插值的几何意义如图1所示: 图1 3、多项式插值 3.1 基本概念 假设()y f x =是定义在区间,a b ????上的未知或复杂函数,但一直该函数在点01n a x x x b ≤<<<≤ 处的函数值01,,n y y y 。找一个简单的函数,例如函数 ()P x ,使之满足条件 (),0,1,2,, i P x y i n == (3.1) 通常把上述01n x x x <<< 称为插值节点,把()P x 称为()f x 的插值多项式,条件(3.1)称为插值条件,并把求()P x 的过程称为插值法。 3.2 插值多项式的存在性和唯一性 如果插值函数是如下m 次的多项式: 1 011()m m m m m P x a x a x a x a --=+++ 那么插值函数的构造就是要确定()m P x 表达式中的m+1个系数 011,,,m m a a a a - 。由于插值条件包含n+1独立式,只要m=n 就可证明插值函数多项式是唯一存在。 实际上,由n+1个插值条件可得 数值分析实验报告三 插值法(2学时) 一实验目的 1.掌握不等距节点下的牛顿插值公式以及拉格朗日插值公式。二实验内容 1.已知函数表: 用牛顿插值公式求) (y的近似值。 102 2. 已知函数表: 用拉格朗日插值公式计算01 x以及所对应的近似值。 =y .5 4.1= 三实验步骤(算法)与结果 1.不等距节点下的牛顿插值公式 Ⅰ.按差商表计算n阶差商 12111[,,,][,,,] [,,,]i i i n i i i n i i i n i n i f x x x f x x x f x x x x x +++++-+++-= - 其中 Ⅱ.按以下公式,带入x 值 00010120101101()() ()[,] ()()[,,]()()()[,,] n n f x f x x x f x x x x x x x f x x x x x x x x x f x x -=+-+--++--- Ⅲ.得出结果()f x 程序代码: #include"stdio.h" #include"math.h" int main() { int a,i,j; printf("输入x 系数的个数:"); scanf("%d",&a); float d,e=0,c; float x[a]; float y[a-1][a]; printf("输入x 的系数:"); for(i=0;i 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年 之久。拉格朗日插值公式的证明及其应用
拉格朗日多项式插值(C语言)
课题一: 拉格朗日插值法
数值计算方法—拉格朗日插值
拉格朗日插值法理论及误差分析
不等距节点下的牛顿插值公式以及拉格朗日插值公式实验课报告
拉格朗日插值多项式与泰勒多项式的误差分析详全文
拉格朗日插值、克劳德迭代法