《数值分析实验报告:拉格朗日插值法和牛顿插值法》由会员分享,可在线阅读,更多相关《数值分析实验报告:拉格朗日插值法和牛顿插值法(5页珍藏版)》请在金锄头文库上搜索。
1、实验一报告拉格朗日插值法一、实验目的1、学习和掌握拉格朗日插值多项式2、运用拉格朗日插值多项式进行计算二、实验原理根据x0,x1,xn; y0,y1,yn构造插值多项式其表达式为:A X - = 愆二 瓦1 二勺-二 勺+J0 二%:!_* 展么勺一叫(勺一或 (灼一叼顼(勺一叼十J (叼一瓦) 将插值点乂代入上式,就可得到函数f(x)在点x处的函数值的近似值。三、运行结果Cil:/ZC :,、*/施希 ffi E/fift M S/bin/DelE/g格,日 EIEE?AUJlr -JLJr 点点点I个.“.1- C-BIA-UIA上iA 瑜柄绡荆圮菊缶9 3 14 3 6四、代码using
2、 System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication3class Programstatic double lglr(double x, double y, double x1, int n) double result = 0.0;for (int i = 0; i n; i+)double temp = yi;for (int j = 0; j n; j+)if (j = i)continue;temp = temp * (x1 -
3、xj);temp = temp / (xi - xj);result = result + temp;return result;static void Main(string args)double x;double y;Console.WriteLine(请输入插值点数:);int length = Convert.ToInt32(Console.ReadLine();x = new doublelength;y = new doublelength;for (int i = 0; i length; i+)Console.Write(请输入第0个点的x值:,i + 1);xi = Con
4、vert.ToDouble(Console.ReadLine();Console.Write(请输入第0个点的y值:,i + 1);yi = Convert.ToDouble(Console.ReadLine();Console.WriteLine(请输入x1值:);double x1 = Convert.ToDouble(Console.ReadLine();double result=lglr(x,y,x1,length);Console.Write(插值计算结果为:0: , result);Console.ReadLine();牛顿插值法一、实验目的体会并了解牛顿插值法,用计算机插值,输
5、出相应的y值。二、实验原理根据x0,x1,xn; y0,y1,yn构造插值多项式Nn(x)=f(x0)+f(x0,x1)(x-x0)+ +f(x0,x1,xn)(x-x0)(x-x1)(x-xn-1)牛顿差值公式中各项的系数就是函f(x)的各 阶均差(差商)f(x0),f(x0,x1),f(x0,x1,xn),因此,在构造牛顿差值公式时, 常常先把均差列成一个表,此表称为均差表。三、运行结果c -r file;/C; fnvuiBHUts uud SettiiiAdfliiiiis.tm.of/面F牛萄牛i/bia/Del牛工EI I I请输入插值点数昌 3;:;:- X y- M V- X
6、u-497插值计算结果为:S.97916666666667=四、代码using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace newtonclass Programstatic double chashang(int n, double x, double y)double f = 0;double temp = 0;for (int i = 0; i n + 1; i+)temp = yi;for (int j = 0; j n + 1; j+)if (i != j)
7、 temp /= (xi - xj);f += temp;return f;static double niudun(double x, double y, double x1)double result = 0.0;for (int i = 0; i x.Length; i+)double f = chashang(i, x, y);double temp = 1.0;for (int j = 0; j i; j+)temp = temp * (x1 - xj);result = result + f * temp;return result;static void Main(string
8、args)double x;double y;Console.WriteLine(请输入插值点数:);int length = Convert.ToInt32(Console.ReadLine();x = new doublelength;y = new doublelength;for (int i = 0; i length; i+)Console.Write(请输入第0个点的x值:,i + 1); xi = Convert.ToDouble(Console.ReadLine();Console.Write(请输入第0个点的y值:,i + 1); yi = Convert.ToDouble
9、(Console.ReadLine();Console.WriteLine(请输入x1 值:);double x1 = Convert.ToDouble(Console.ReadLine();double result = niudun(x, y, x1);Console.Write(插值计算结果为:0: , result);Console.ReadLine();五、分析当插值多项式从n-1次增加到n次时,拉格朗日型插值必须重新计算所有的基本差值多 项式;二对于牛顿插值,只需要表格再计算一个n阶均差,然后加上一项就可以了。这样大 大减少了计算量,特别在计算结构复杂的多项式的时候,当然本实验中的数据组很少,计算 机的计算速度快慢不明显而难以比较两种方法的优劣。