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

合集下载

数值分析上机报告(1)

数值分析上机报告(1)

一.上机目的1. 通过上机编程,复习巩固以前所学程序设计语言及上机操作指令;2. 通过上机计算,了解舍入误差所引起的数值不稳定性;3. 熟悉并掌握拉格朗日插值多项式、牛顿插值多项式和分段低次插值,注意其不同特点;4. 了解最小二乘法的基本原理,能通过计算机解决实际问题。

二.上机环境MATLAB 软件等。

三.上机内容1.数值算法稳定性实验;2.插值法实验:拉格朗日插值、牛顿插值以及分段低次插值;3.曲线拟合实验:最小二乘法。

四.实验内容1、数值稳定性实验对n=0,1,2,…20计算定积分dx x x y n n ⎰+=105算法1 利用递推公式151--=n n y ny n=1,2,…,20 取182322.05ln 6ln 51100≈-=+-⎰dx x y 代码:y(1)=log(6)-log(5);for i=1:20y(i+1)=1/i-5*y(i);endk=ones(7,3);for i=1:7for j=1:3k(i,j)=y(3*(i-1)+j);endenddigits(6)vpa(k)结果:[ 0.182322, 0.0883922, 0.0580389][ 0.0431387, 0.0343063, 0.0284684][ 0.0243249, 0.0212326, 0.0188369][ 0.0169265, 0.0153676, 0.0140713][ 0.0129767, 0.0120398, 0.0112295][ 0.0105192, 0.00990388, 0.00930414][ 0.00903483, 0.00745741, 0.012713]算法2 利用递推公式n n y n y 51511-=- n=20,19,.…,1 注意到105151561126110200201020=≤+≤=⎰⎰⎰dx x dx x x dx x 取008730.0)12611051(2120≈+≈y 代码: y(21)=0.008730;for i=2:21j=22-i;y(j)=1/(5*j)-1/5*y(j+1);endk=ones(7,3);for i=1:7for j=1:3k(i,j)=y(3*(i-1)+j);endenddigits(6) ;vpa(k)结果:[ 0.182322, 0.0883922, 0.0580389][ 0.0431387, 0.0343063, 0.0284684][ 0.0243249, 0.0212326, 0.0188369][ 0.0169265, 0.0153676, 0.0140713][ 0.0129766, 0.0120399, 0.0112292][ 0.0105205, 0.0098975, 0.00933601][ 0.00887552, 0.008254, 0.00873]说明:从计算结果可以看出,算法1是不稳定的,而算法2是稳定的。

数值分析实验报告--实验2--插值法

数值分析实验报告--实验2--插值法

1 / 21数值分析实验二:插值法1 多项式插值的震荡现象1.1 问题描述考虑一个固定的区间上用插值逼近一个函数。

显然拉格朗日插值中使用的节点越多,插值多项式的次数就越高。

我们自然关心插值多项式的次数增加时, 是否也更加靠近被逼近的函数。

龙格(Runge )给出一个例子是极著名并富有启发性的。

设区间[-1,1]上函数21()125f x x=+ (1)考虑区间[-1,1]的一个等距划分,分点为n i nix i ,,2,1,0,21 =+-= 则拉格朗日插值多项式为201()()125nn ii iL x l x x ==+∑(2)其中的(),0,1,2,,i l x i n =是n 次拉格朗日插值基函数。

实验要求:(1) 选择不断增大的分点数目n=2, 3 …. ,画出原函数f(x)及插值多项式函数()n L x 在[-1,1]上的图像,比较并分析实验结果。

(2) 选择其他的函数,例如定义在区间[-5,5]上的函数x x g xxx h arctan )(,1)(4=+=重复上述的实验看其结果如何。

(3) 区间[a,b]上切比雪夫点的定义为 (21)cos ,1,2,,1222(1)k b a b ak x k n n π⎛⎫+--=+=+ ⎪+⎝⎭(3)以121,,n x x x +为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果,试分析2 / 21原因。

1.2 算法设计使用Matlab 函数进行实验, 在理解了插值法的基础上,根据拉格朗日插值多项式编写Matlab 脚本,其中把拉格朗日插值部分单独编写为f_lagrange.m 函数,方便调用。

1.3 实验结果1.3.1 f(x)在[-1,1]上的拉格朗日插值函数依次取n=2、3、4、5、6、7、10、15、20,画出原函数和拉格朗日插值函数的图像,如图1所示。

Matlab 脚本文件为Experiment2_1_1fx.m 。

可以看出,当n 较小时,拉格朗日多项式插值的函数图像随着次数n 的增加而更加接近于f(x),即插值效果越来越好。

数值分析实验报告

数值分析实验报告

实验一:拉格朗日插值法实验目的1学习和掌握拉格朗日插值多项式。

2.运用拉格朗日插值多项式进行计算。

2.实验过程作出插值点(1.00,0.00),(-1.00,-3.00),(2.00,4.00)算法步骤已知:某些点的坐标以及点数。

输入:条件点数以及这些点的坐标。

输出:根据给定的点求出其对应的拉格朗日插值多项式的值。

程序流程:(1)输入已知点的个数;(2)分别输入已知点的X 坐标;(3)分别输入已知点的Y 坐标;程序如下:#include <iostream>#include <conio.h>#include <malloc.h>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! 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++) { } The value of n must in (0,20).");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)的值。

插值运算实验报告

插值运算实验报告

#### 一、实验目的1. 理解插值运算的基本概念和原理。

2. 掌握几种常见的插值方法,如拉格朗日插值、牛顿插值等。

3. 通过实验,验证插值方法在数值计算中的应用效果。

4. 培养动手能力和分析问题的能力。

#### 二、实验原理插值运算是指根据已知数据点,构造一个近似函数来描述这些数据点之间的变化规律。

常见的插值方法有拉格朗日插值、牛顿插值、分段线性插值等。

#### 三、实验内容1. 数据准备准备一组数据点,例如:```x: [1, 2, 3, 4, 5]y: [2, 4, 6, 8, 10]```2. 拉格朗日插值根据给定的数据点,构造拉格朗日插值多项式。

以三次拉格朗日插值为例,其公式如下:```L(x) = y0 ((x - x1) (x - x2) (x - x3)) / ((x0 - x1) (x0 - x2) (x0 - x3))+ y1 ((x - x0) (x - x2) (x - x3)) / ((x1 - x0) (x1 - x2) (x1 - x3))+ y2 ((x - x0) (x - x1) (x - x3)) / ((x2 - x0) (x2 - x1) (x2 - x3))+ y3 ((x - x0) (x - x1) (x - x2)) / ((x3 - x0) (x3 - x1)(x3 - x2))```将数据点代入上述公式,得到拉格朗日插值多项式。

3. 牛顿插值根据给定的数据点,构造牛顿插值多项式。

以三次牛顿插值为例,其公式如下:```N(x) = y0 + (x - x0) (y1 - y0) / (x1 - x0) + (x - x0) (x - x1) (y2 - y1) / ((x1 - x0) (x2 - x1)) + (x - x0) (x - x1) (x - x2) (y3 - y2) / ((x1 - x0) (x2 - x1) (x3 - x2))```将数据点代入上述公式,得到牛顿插值多项式。

插值数值实验报告(3篇)

插值数值实验报告(3篇)

第1篇一、实验目的1. 理解并掌握插值法的基本原理和常用方法。

2. 学习使用拉格朗日插值法、牛顿插值法等数值插值方法进行函数逼近。

3. 分析不同插值方法的优缺点,并比较其精度和效率。

4. 通过实验加深对数值分析理论的理解和应用。

二、实验原理插值法是一种通过已知数据点来构造近似函数的方法。

它广泛应用于科学计算、工程设计和数据分析等领域。

常用的插值方法包括拉格朗日插值法、牛顿插值法、样条插值法等。

1. 拉格朗日插值法拉格朗日插值法是一种基于多项式的插值方法。

其基本思想是:给定一组数据点,构造一个次数不超过n的多项式,使得该多项式在这些数据点上的函数值与已知数据点的函数值相等。

2. 牛顿插值法牛顿插值法是一种基于插值多项式的差商的插值方法。

其基本思想是:给定一组数据点,构造一个次数不超过n的多项式,使得该多项式在这些数据点上的函数值与已知数据点的函数值相等,并且满足一定的差商条件。

三、实验内容1. 拉格朗日插值法(1)给定一组数据点,如:$$\begin{align}x_0 &= 0, & y_0 &= 1, \\x_1 &= 1, & y_1 &= 4, \\x_2 &= 2, & y_2 &= 9, \\x_3 &= 3, & y_3 &= 16.\end{align}$$(2)根据拉格朗日插值公式,构造插值多项式:$$P(x) = \frac{(x-x_1)(x-x_2)(x-x_3)}{(x_0-x_1)(x_0-x_2)(x_0-x_3)}y_0 + \frac{(x-x_0)(x-x_2)(x-x_3)}{(x_1-x_0)(x_1-x_2)(x_1-x_3)}y_1 + \frac{(x-x_0)(x-x_1)(x-x_3)}{(x_2-x_0)(x_2-x_1)(x_2-x_3)}y_2 + \frac{(x-x_0)(x-x_1)(x-x_2)}{(x_3-x_0)(x_3-x_1)(x_3-x_2)}y_3.$$(3)计算插值多项式在不同点的函数值,并与实际值进行比较。

数值分析实验报告(插值法)

数值分析实验报告(插值法)

武汉理工大学学生实验报告书实验课程名称数值分析开课学院计算机科学与技术学院指导老师姓名学生姓名学生专业班级2010—2010学年第一学期实验课程名称:数值分析第二部分:实验调试与结果分析(可加页)一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)(1)用拉格朗日插值法计算时,输入及运行结果如下:拉格朗日插值法牛顿插值法(2)利用二次插值计算时,输入及运行结果如下:拉格朗日插值法牛顿插值法(3)用艾尔米特插值法计算时,f(x)的插值多项式H5(x)=(1+4*x)*(x-0.5)*(x-0.5)*(x-2)*(x-2)+(3.90807-6.03838*x)*(x-2)*(x-2)*x*x+(2.34573-4.16674*x)*x*x*(x-0.5)*(x-0.5)(4)各插值算法的精度差异比较经过比较,拉格朗日插值法要比牛顿插值法算法的计算量多一些,拉格朗日插值法后一次计算时用到了前一次计算的结果,提高了运算的效率,但拉格朗日插值法在构造艾尔米特插值法时很方便,将坐标点和对应的导数结合起来的精度比线性插值的精度又要高一些。

但从实验数据来看,在坐标不是很多的情况下,已知的点越多精度也就相对较高。

对于实验要求的第二组数据用拉格朗日插值法(或者牛顿插值法)实验结果如下:一下分别是二阶、三阶、四阶、五阶插值得到的结果以上只是实验结果的一部分,改变插值的位置时,得到的实验结果精度也是有所不同的。

由以上结果分析可知,插值次数并不是越多越好,多了反而会让结果更加偏离真实结果,这充分说明了高次插值存在“病态性质”,在已知点很多的情况下应该采用分段低次插值,将拉格朗日插值法和牛顿插值法运用到分段低次插值法当中,这样得到的结果可能胡更加精确。

数值积分上机报告拉格朗日差值法

数值积分上机报告拉格朗日差值法

图一:线性插值图解
Lagrange 抛物线插值法算法:
假定插值节点为 x0 , x1 , x2 ,要求二次插值多项式 L2 ( x) ,使它满足 L2 ( xi ) yi , (i 0,1,2) , 几何上 y L2 ( x) 就是通过三点 ( x0 , y0 ), ( x1 , y1 ), ( x2 , y2 ) 的抛物线。为了求出 L2 ( x) 的表达式, 可 采用基函数方法。 l0 ( x) 可 表 示 为 l0 ( x) A( x x1 )( x x2 ) , 由 l0 ( x0 ) 1 可 得 A
1 ,于是 ( x0 x1 )( x0 x2 )
l0 ( x )
( x x0 )( x x2 ) 。 ( x0 x1 )( x0 x2 ) ( x x0 )( x x2 ) ( x x0 )( x x1 ) , l2 ( x ) 。 ( x1 x0 )( x1 x2 ) ( x2 x0 )( x2 x1 )
k
式为: L( x) : y j l j ( x) ,其中每个 l j ( x) 为 Lagrange 基本多项式(或称插值基函数),其表
j 0
k
达式为: l j ( x) :
i 0 ,i j
Байду номын сангаас

( x x j 1 ) ( x x j 1 ) x xi ( x x0 ) ( x xk ) 。Lagrange x j xi ( x j x0 ) ( x j x j 1 ) ( x j x j 1 ) ( x j xk )
六、计算中出现的问题,解决方法及体会
问题 1.在做第一题的时候我们没有使用 for 循环语句,每进行一次二次、三次 Lagrange 插 值多项式的时候都会需要重新编程,导致计算过程累赘并且不明了。 2.由于受 C 语言的影响,在写不等于的时候我们常常写成(!=) ,Matlab 软件无法识 别。

拉格朗日和牛顿插值法的C 方法实现(数值分析上机实验)

拉格朗日和牛顿插值法的C  方法实现(数值分析上机实验)

数值分析上机实验实验一一.上机题目:已知: 4 =2,9 =3,16 =4分别用二次Lagrange和Newton插值法求7 的近似值。

二.解题方法:1.lagrange方法:设x0=4,y0=2,x1=9,y1=3,x2=16,y2=4代入方程:(x1-X)(x2-X)/(x1-x0)(x2-x0)*y0+(x0-X)(x2-X)/(x0-x1)(x2-x1)*y1+(x1-X)(x0-X)/(x1-x2)(x0-x2)*y2令X=7代入方程得 Y=2.628572.Newton方法:设x0=4,y0=2,x1=9,y1=3,x2=16,y2=4建表4 29 3 0.216 4 0.14286 -0.00476f(x)=f(x0)+f[x0,x1](X-x0)+f[x0,x1,x2](X-x0)(X-x1)(X-x2)令X=7代入方程得Y=2.62857三.算法公式步骤:grange方法:通过公式写出算法并得出最后的值Y:for(b=0;b<m;b++)//完成公式f(Xn)外层嵌套循环f[b]=i//{double l=1;//保证每次跳出内层循环将L置1 不会将第一项的值带入下一项//for(a=0;a<m;a++)//完成公式f(Xn)内层嵌套循环f[a]=j//{if(a!=b)//完成定义i=1,i!=j//l=(f[a]-F)/(f[a]-f[b])*l;//完成(j-m)/(j-i)//la=l*g[b];//完成公式的F(X0)=f(X0)*Y0并累乘输出结果// }Y=la+Y;//累加x0y0+x1y1+...得最后结果//}2.Newton方法:先建表,通过二维数组的思想建表for(l=2;l<m+2;l++)//外层循环控制y阶数//{for(k=1;k<m+1;k++)//内层循环控制x个数//{a[k][l]=(a[k][l-1]-a[k-1][l-1])/(a[k][0]-a[k-l+1][0]);//完成f(x0,x1,...,xn)并存表//}}填表。

拉格朗日插值实验报告

拉格朗日插值实验报告

实验名称: 实验一 拉格朗日插值1 引言我们在生产生活中常常会遇到这样的问题:某个实际问题中,函数f (x)在区间[a,b]上存在且连续,但却很难找到其表达式,只能通过实验和观测得到有限点上的函数表。

显然,根据这些点的函数值来求其它点的函数值是非常困难的。

有些情况虽然可以写出表达式,但结构复杂,使用不方便。

所以我们总是希望根据已有的数据点(或函数表)来构造某个简单函数P (x)作为f (x)的近似值。

插值法是解决此类问题的一种比较古老的、但却很常用的方法。

它不仅直接广泛地应用于生产实际和科学研究中,而且也是进一步学习数值计算方法的基础。

2 实验目的和要求运用Matlab 编写三个.m 文件,定义三种插值函数,要求一次性输入整张函数表,并利用计算机选择在插值计算中所需的节点。

分别通过分段线性插值、分段二次插值和全区间上拉格朗日插值计算f (0.15),f (0.31),f (0.47)的近似值。

已知函数表如下:3 算法原理与流程图(1)原理设函数y=在插值区间[a,b]上连续,且在n+1个不同的插值节点a≤x 0,x 1,…,x n ≤b 上分别取值y 0,y 1,…,y n 。

目的是要在一个性质优良、便于计算的插值函数类Φ中,求一简单函数P (x),满足插值条件P (x i )=y i (i=0,1,…,n),而在其他点x≠x i 上,作为f (x)近似值。

求插值函数P (x)的方法称为插值法。

在本实验中,采用拉格朗日插值法。

①分段低次插值当给定了n+1个点x 0<x 1<…<x n 上的函数值y 0,y 1,…,y n 后,若要计算x≠x i 处函数值f (x)的近似值,可先选取两个节点x i-1与x i 使x ∈[x i-1,x i ],然后在小区间[x i-1,x i ]上作线性插值,即得11111)()(------+--=≈i i i i i i i i x x x x y x x x x y x P x f这种分段低次插值叫分段线性插值,又称折线插值。

实验1拉格朗日插值与牛顿插值

实验1拉格朗日插值与牛顿插值

西华数学与计算机学院上机实践报告课程名称:计算方法C年级:2011级上机实践成绩:指导教师:严常龙姓名:上机实践名称:拉格朗日插值和牛顿插值法学号:上机实践日期:2012.11.20上机实践编号:1上机实践时间:一、目的1.通过本实验加深对拉格朗日插值和牛顿插值法构造过程的理解;2.能对上述两种插值法提出正确的算法描述编程实现。

二、内容与设计思想自选插值问题,编制一个程序,分别用拉格朗日插值法和牛顿插值法求解某点的函数近似值。

(从课件或教材习题中选题)已知y=f(三、使用环境操作系统:Windows 7软件环境:Microsoft Visual C++ 6.0四、核心代码及调试过程牛顿插值法:#include<stdio.h>#include<iostream.h>void main(){double x[]={0.25,0.40,0.50,0.57,0.70,0.85,0.93,1.00};double y[]={0.904837,0.860708,0.778801,0.670320,0.606531,0.565525,0.496585,0.427415,0.394554,0.367879};double c[8][8],b[8],t=0.63,ft;int n,i,j,k;for(i=0;i<8;i++) c[i][0]=y[i];for(i=1;i<8;i++)for(j=1;j<=i;j++)c[i][j]=(c[i][j-1]-c[i-1][j-1])/(x[i]-x[i-j]);b[7]=c[7][7];for(k=7;k>=1;k--)b[k-1]=c[k-1][k-1]+b[k]*(t-x[k-1]);ft=b[0];cout<<ft<<endl;}运行结果:拉格朗日插值核心代码:double lagrange(double x[N],double y[N],double t,int n){double s,ft;int i,j,k,m;ft=0.0;if(n<1)exit(0);if(n==1){ft=y[0];exit(0);}if(n==2){ft=(t-x[1])*y[0]/(x[0]-x[1])+(t-x[0])*y[1]/(x[1]-x[0]);exit(0);}i=0;while((x[i]<t)&&(i<n))i++;k=i-4;if(k<0)k=0;m=i+3;if(m>n-1)m=n-1;for(i=k;i<=m;i++){s=1.0;for(j=k;j<=m;j++){if(j!=i)s=s*(t-x[j])/(x[i]-x[j]);}ft=ft+s*y[i];}return(ft);}运行结果:五、总结Lagrange插值与牛顿插值都是属n 次多项式插值,其插值条件也相同。

拉格朗日插值法 实验

拉格朗日插值法  实验

实验九 Lagrange 插值法求近似函数实验一、实验内容:设2.12)(2+-=x x x f ,数据点取值如下表分别构造)(),(),(432x L x L x L 来近似)(x f .二、算法原理:插值法是函数逼近的一种重要方法,解决对于只提供离散数据点 ))(,(i i i y x f x =, i=0,1,...,n,而希望在函数空间{}n s p a n ϕϕϕ,...,,2=Φ中选择,)(1i ni i c x S ϕ∑==来近似于真实函数)(x f 的问题,其中i c 是可选择参数,可通过要求曲线)(x S 经过数据点,即满足插值条件n i x f x S i i ,...,1,0),()(==来确定.所谓的代数插值指以代数多项式)(x P n 作为插值函数,即函数空间取为 {}n x x s p a n ,...,,1=Φ,代数插值多项式)(x P n 的表达式,在理论上可通过求解参数i c 满足的1+n 个方程⎪⎪⎩⎪⎪⎨⎧=++++=++++=++++n n n n n n n n n n y x c x c x c c y x c x c x c c y x c x c x c c ...... (22101121211000202010)唯一确定,但实际上不可取。

Lagrange 插值法巧妙利用了基函数法,直接构造出该插值多项式 ),()(x P x L n n =它适用于非等距节点.其基本思想是通过满足在节点i x 处值取1,其余处取0的插值基函数),(x l i 将)(x L n 表达为一个线性结合,)()(1i ni i n y x l x L ∑==其中 n i x x x x x l n i j j j i j i ≤≤--=∏≠=0,)(0 具体算法如下Step1输入数据点总数1+n (即输入n 值),节点i x ,相应的函数值i y ,i =0,1,…,n,令;0)(=x L nStep2 for 0=i to n{计算∏≠=--=n i j j j i j i x x x x x l 0)(s=1,for 0=j to n {如果i j =,s s =, 否则, j i j x x x x s s --=})(x l s i →)())()((x L y x l x L n i i n →+ }Step3输出插值多项式)(x L n .三、实验要求:(1)编制Lagrange 插值法程序,得出实验结果,并进行比较;(2)观察高次代数插值的Runge 现象:1901年,德国数学家runge 考察函数22511)(x x f += 在[]1,1- 上n 等分做等距节点插值时,观察到插值节点∞→n ,插值多项式)(x P n 仅在726.0≤x 内收敛于)(x f ,而此区间以外都发散. 请用10=n ,计算Lagrange 插值多项式10P ,通过图示(在一个坐标上画出10P 和)(x f 的对比图) ,观察这一现象, 并写出你所得到的启示.四、源代码:#include<stdio.h>#include<math.h>void main(){int i,j,n=4;float y=0.7,Ln=0;float s;float x[5]={-1,-0.5,0,0.5,1},f[5]={4.2,2.45,1.2,0.45,0.2},l[5];for(i=0;i<=n;i++){s=1;for(j=0;j<=n;j++){if(j==i)s=s;elses*=(y-x[j])/(x[i]-x[j]);}l[i]=s;Ln+=l[i]*f[i];}printf("%f",Ln);}五、实验结果截图:六、上机体会:。

数值分析实验报告

数值分析实验报告

数值分析实验报告一、实验目的数值分析是一门研究用计算机求解数学问题的数值方法及其理论的学科。

本次实验的目的在于通过实际操作和编程实现,深入理解和掌握数值分析中的常见算法,提高运用数值方法解决实际问题的能力,并对算法的精度、稳定性和效率进行分析和比较。

二、实验环境本次实验使用的编程语言为 Python,使用的开发工具为 PyCharm。

实验所依赖的主要库包括 NumPy、Matplotlib 等。

三、实验内容(一)函数逼近与插值1、拉格朗日插值法通过给定的离散数据点,构建拉格朗日插值多项式,对未知点进行函数值的估计。

2、牛顿插值法与拉格朗日插值法类似,但采用了不同的形式和计算方式。

(二)数值积分1、梯形公式将积分区间划分为若干个梯形,通过计算梯形面积之和来近似积分值。

2、辛普森公式基于抛物线拟合的方法,提高积分近似的精度。

(三)线性方程组求解1、高斯消元法通过逐行消元将线性方程组化为上三角形式,然后回代求解。

2、 LU 分解法将系数矩阵分解为下三角矩阵 L 和上三角矩阵 U,然后通过两次前代和回代求解。

(四)非线性方程求解1、二分法通过不断将区间一分为二,逐步缩小根所在的区间,直到满足精度要求。

2、牛顿迭代法利用函数的切线来逼近根,通过迭代逐步收敛到根的近似值。

四、实验步骤(一)函数逼近与插值1、拉格朗日插值法定义计算拉格朗日基函数的函数。

根据给定的数据点和待求点,计算插值多项式的值。

输出插值结果,并与真实值进行比较。

2、牛顿插值法计算差商表。

构建牛顿插值多项式。

进行插值计算和结果分析。

(二)数值积分1、梯形公式定义积分区间和被积函数。

按照梯形公式计算积分近似值。

分析误差。

2、辛普森公式同样定义积分区间和被积函数。

运用辛普森公式计算积分近似值。

比较与梯形公式的精度差异。

(三)线性方程组求解1、高斯消元法输入系数矩阵和右端项向量。

进行消元操作。

回代求解方程。

输出解向量。

2、 LU 分解法对系数矩阵进行 LU 分解。

实验一 拉格朗日插值法

实验一 拉格朗日插值法
实 验 一: 拉格朗日插值
实验目的: 1. 熟悉拉格朗日插值方法的程序设计; 2. 学会拉格朗日插值方法求函数值的近似值, 以解决其它科学实验的计算问题。 实验内容: 已知函数值表
xi f (xi )
-0.6 1.6
-0.2 2.4
0.2 1.2
0.4 3.2
试分别建立二次插值多项式和三次插值多项式,计算 f (0) 的近似值。 实验要求:屏幕显示 f (0) 的近似值。
三次差值试验结果:
— 4 —
=
k 1 k
结 束
— 2 —
实 验 报 告 (一)
辽宁科技大学 研究生 学院(系) 课名:数值分析 班级:研 12 姓名: 张贺 题目:拉格朗日插值 学号:12208190**** 专业: 矿业工程 任课教师:熊 焱 2012 年 09 月 20 日
实验程序:
— 3 —
实验结果: 二次差值试验
— 1 —
附件:拉格朗日插值算法框图
开 始
输 入 ( x i , y i ) , ( i= 0 ,1 , … , n )
0 x j
t t
j 0 , , k 1, k 1, , n
y t yk y
k n?

输 出 y

数值分析课程实验报告-拉格朗日和牛顿插值法

数值分析课程实验报告-拉格朗日和牛顿插值法

《数值分析》课程实验报告用拉格朗日和牛顿插值法求解函数值算法名称用拉格朗日和牛顿插值法求函数值学科专业 xxxxx作者姓名 xxxx作者学号 xxxxx作者班级 xxxxxxxxx大学二〇一五年十二月《数值分析》课程实验报告得到ln1.54的近似值为0.4318。

拉格朗日插值模型简单,结构紧凑,是经典的插值法。

但是由于拉格朗日的插值多项式和每个节点都有关,当改变节点个数时,需要重新计算。

且当增大插值阶数时容易出现龙格现象。

2.牛顿插值法在命令窗口输入:x=[0.4 0.5 0.6 0.7 0.8];y=[0.6325 0.7071 0.7746 0.8367 0.8944];xt=0.54;[yt,N]=NewtInterp(x,y,xt)z=0.1:0.05:2;yz=subs(N,'t',z);figure;plot(z,sqrt(z),'--r',z,yz,'-b')hold onplot(x,y,'marker','+')hold onplot(xt,yt,'marker','o')h=legend('$\sqrt{x}$','牛顿','$(x_k,y_k)$','$x=0.54$');set(h,'Interpreter','latex')xlabel('x')ylabel('y')得到结果及图像如下:yt =0.7348N =- 0.291667*t^4 + 0.925*t^3 - 1.30208*t^2 + 1.46125*t + 0.2046得到√0.54的近似值为0.7348,插值函数为N =- 0.291667*t^4 + 0.925*t^3 - 1.30208*t^2 + 1.46125*t + 0.2046,其计算精度是相当高的。

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

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

课题一:拉格朗日插值法1.实验目的1.学习和掌握拉格朗日插值多项式。

2.运用拉格朗日插值多项式进行计算。

2.实验过程作出插值点(,),(,),(,)二、算法步骤已知:某些点的坐标以及点数。

输入:条件点数以及这些点的坐标。

输出:根据给定的点求出其对应的拉格朗日插值多项式的值。

3.程序流程:(1)输入已知点的个数;(2)分别输入已知点的X坐标;(3)分别输入已知点的Y坐标;程序如下:#include <iostream>#include <>#include <>拉格朗日float lagrange(float *x,float *y,float xx,int n) /*插值算法*/{int i,j;float *a,yy=; /*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++){牰湩晴尨學搥???※scanf(%f,&x[i]);}printf(\);for(i=0;i<=n-1;i++) {printf(y[%d]:,i);scanf(%f,&y[i]); } printf(\);printf(Input xx:);scanf(%f,&xx);yy=lagrange(x,y,xx,n);牰湩晴尨?春礬┽屦湜?硸礬? getch();}运的值。

数值计算实验:拉格朗日插值多项式

数值计算实验:拉格朗日插值多项式
【实验方案】
用线性差值和二次差值求解p147习题4.
【实验过程】(实验步骤、记录、数据、分析)
1.拉格朗日差值法算法分析
a.输入节点的个数
b.输入节点的横纵坐标
c.输入新插入的节点的横坐标
d.通过几次循环求的新插入节点的纵坐标
【实验结论】(结果)
通过这次试验,分析得到的结果,发现插值次数越多,结果越精确
x = [1.1651.6341.7021.8281.921];
y = [2.41450 2.46459 2.65271 3.03035 3.34066];
x0 = x;
y0 = lagrange(x,y,x0);
x1 =1.682;
y1 = lagrange(x,y,x1);
figure; box on; hold on;
x1 =1.682;
y1 = lagrange(x,y,x1);
figure; box on; hold on;
plot(x, y, 'ro-');
plot(x0, y0, 'k+');
plot(x1, y1, 'mx');
function Ys=lagrange(X,Y,Xs)
n=length(X);
nl=length(Xs);
for i=1:nl
x=Xs(i);
s=0;
for j=1:n
p=1;
for k=1:n
if k~=j
p=p*(x-X(k))/(X(j)-X(k));
end
end
s=s+p*Y(j);
end
Ys(i)=s;
end
F(1.813)如下:

拉格朗日插值法分析报告

拉格朗日插值法分析报告

拉格朗日插值法分析报告一、拉格朗日插值法介绍1、插值概念简介已知)(x f 在区间],[b a 上1+n 个不同点n x x x ,,10处的函数值),,1,0)((n i i f y i ==,求一个至多n 次的多项式n n x a x a a x +++= 10)(ϕ使其在给定点处与)(x f 同值,既满足插值条件),,1,0()()(n i y x f x i i i n ===ϕ)(x n ϕ称为插值多项式,),,1,0(n i x i =称为插值节点,],[b a 称为插值区间。

从几何上看,n 次的多项式插值就是过1+n 个点),,1,0())(,(n i x f x i i =,作一条多项式曲线)(x y n ϕ=近似曲线)(x f y =。

y)(x y n ϕ=)(x f y =x图1 多项式曲线以及近似曲线2、拉格朗日插值法原理在求满足插值条件n 次插值多项式)(x P n 之前,先考虑一个简单的插值问题:对节点),,1,0(n i x i =中任一点)0(n k x k ≤≤,作一n 次多项式)(x l k ,使它在该点上取值为1,而在其余点),,1,1,1,0(n k k i x i +-=上取值为零,即 ⎩⎨⎧≠==ki k i x l i k 01)( 上式表明n 个点n k k x x x x x ,,,,,,1110 +-都是n 次多项式)(x l k 的零点,故可设)())(())(()(1110n k k k k x x x x x x x x x x A x l -----=+-其中,k A 为待定系数。

由条件1)(=k k x l 立即可得)())(()(1110n k k k k k k k x x x x x x x x A ----=+- 故 )())(()()())(()()(110110n k k k k k k n k k k x x x x x x x x x x x x x x x x x l --------=+-+- 由上式可以写出1+n 个n 次插值多项式)(,),(),(10x l x l x l n 。

数值分析Lagrange插值法计算实验

数值分析Lagrange插值法计算实验

数值分析实验报告(01)一、实验目的通过实验锻炼和掌握的能力掌握Lagrange 插值方法并学会利用计算机编程计算函数值。

二、实验内容给出()ln f x x =的数值表 x0.4 0.5 0.6 0.7 0.8 ln x-0.916291 -0.693147 -0.510826 -0.356675 -0.223144用线性插值和二次插值计算的近似值。

计算ln(0.54)。

三、编程思路0.5图1 程序框图四、Matlab 程序代码function y0=lagrange(x,y,x0)nx=length(x);ny=length(y);if nx~=nyreturn;endn=nx;y0=0;for k=1:np=1;for j=1;nif j~=kp=p.*(x0-x(j))./(x(k)-x(j));endendy0=y0+p*y(k);end% x=[0.5 0.6];% y=[-0.693147 -0.510826];x0=0.54;y0=lagrange(x,y,x0);y0% x=[0.4 0.5 0.6];% y=[-0.916296 -0.693147 -0.510826];x0=0.54;y0=lagrange(x,y,x0);y0五、数值结果及分析(数值运行结果及对结果的分析)y0 =-0.6202y0 =-0.6202六、实验体会(计算中出现的问题,解决方法,实验体会)输入程序时括号含义不明,或者输入括号减少,导致结果错误。

仔细检查,寻找错误,一定要仔细认真。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课题一:拉格朗日插值法
1.实验目的
1.学习和掌握拉格朗日插值多项式。

2.运用拉格朗日插值多项式进行计算。

2.实验过程
作出插值点(1.00,0.00),(-1.00,-3.00),(2.00,4.00)二、算法步骤
已知:某些点的坐标以及点数。

输入:条件点数以及这些点的坐标。

输出:根据给定的点求出其对应的拉格朗日插值多项式的值。

3.程序流程:
(1)输入已知点的个数;
(2)分别输入已知点的X坐标;
(3)分别输入已知点的Y坐标;
程序如下:
#include <iostream>
#include <conio.h>
#include <malloc.h>
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)的值。

运行结果如下:
Input n:3
x[0]:1
x[1]:-1
x[2]:2
y[0]:0
y[1]:-3
y[2]:4
Input xx:1.5
x=1.500000,y=1.791667
3、实验总结
拉格朗日插值模型简单,结构紧凑,是经典的插值法。

但是由于拉格朗日的插值多项式和每个节点都有关,当改变节点个数时,需要重新计算。

且当增大插值阶数时容易出现龙格现象。

在物理化学,资产价值鉴定工作和计算某一时刻的卫星坐标和钟差等这些方面可以应用Lagrange插值。

采用拉格朗日插值法计算设备等功能重置成本,计算精度较高,方法快捷。

但是这方法只能针对可比性较强的标准设备,方法本身也只考虑了单一功能参数,它的应用范围因此受到了一定的限制。

作为一种探索,我们可以将此算法以及其它算法集成与计算机评估分析系统中,作为传统评估分析方法的辅助参考工具,以提高资产价值鉴定工作的科学性和准确性。

相关文档
最新文档