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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验一报告拉格朗日插值法一、实验目的1、学习和掌握拉格朗日插值多项式2、运用拉格朗日插值多项式进行计算二、实验原理根据x0,x1,…xn;y0,y1,…yn构造插值多项式其表达式为:将插值点x代入上式,就可得到函数f(x)在点x处的函数值的近似值。三、运行结果四、代码usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceConsoleApplication3{classProgram{staticdoublelglr(double[]x,double[]y,doublex1,intn){doubleresult=0.0;for(inti=0;in;i++){doubletemp=y[i];for(intj=0;jn;j++){if(j==i)continue;temp=temp*(x1-x[j]);temp=temp/(x[i]-x[j]);}result=result+temp;}returnresult;}staticvoidMain(string[]args){double[]x;double[]y;Console.WriteLine(请输入插值点数:);intlength=Convert.ToInt32(Console.ReadLine());x=newdouble[length];y=newdouble[length];for(inti=0;ilength;i++){Console.Write(请输入第{0}个点的x值:,i+1);x[i]=Convert.ToDouble(Console.ReadLine());Console.Write(请输入第{0}个点的y值:,i+1);y[i]=Convert.ToDouble(Console.ReadLine());}Console.WriteLine(请输入x1值:);doublex1=Convert.ToDouble(Console.ReadLine());doubleresult=lglr(x,y,x1,length);Console.Write(插值计算结果为:{0}:,result);Console.ReadLine();}牛顿插值法一、实验目的体会并了解牛顿插值法,用计算机插入x值,输出相应的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),因此,在构造牛顿差值公式时,常常先把均差列成一个表,此表称为均差表。三、运行结果四、代码usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespacenewton{classProgram{staticdoublechashang(intn,double[]x,double[]y){doublef=0;doubletemp=0;for(inti=0;in+1;i++){temp=y[i];for(intj=0;jn+1;j++)if(i!=j)temp/=(x[i]-x[j]);f+=temp;}returnf;}staticdoubleniudun(double[]x,double[]y,doublex1){doubleresult=0.0;for(inti=0;ix.Length;i++){doublef=chashang(i,x,y);doubletemp=1.0;for(intj=0;ji;j++){temp=temp*(x1-x[j]);}result=result+f*temp;}returnresult;}staticvoidMain(string[]args){double[]x;double[]y;Console.WriteLine(请输入插值点数:);intlength=Convert.ToInt32(Console.ReadLine());x=newdouble[length];y=newdouble[length];for(inti=0;ilength;i++){Console.Write(请输入第{0}个点的x值:,i+1);x[i]=Convert.ToDouble(Console.ReadLine());Console.Write(请输入第{0}个点的y值:,i+1);y[i]=Convert.ToDouble(Console.ReadLine());}Console.WriteLine(请输入x1值:);doublex1=Convert.ToDouble(Console.ReadLine());doubleresult=niudun(x,y,x1);Console.Write(插值计算结果为:{0}:,result);Console.ReadLine();}}}五、分析当插值多项式从n-1次增加到n次时,拉格朗日型插值必须重新计算所有的基本差值多项式;二对于牛顿插值,只需要表格再计算一个n阶均差,然后加上一项就可以了。这样大大减少了计算量,特别在计算结构复杂的多项式的时候,当然本实验中的数据组很少,计算机的计算速度快慢不明显而难以比较两种方法的优劣。

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功