资源描述:
《数值分析实验报告(包含源程序).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、课程实验报告课程名称计算方法班级实验日期姓名学号实验成绩实验名称实验一插值多项式实验目的及要求1、掌握拉格郎日插值多项式的用法,适用范围及精确度。2、掌握牛顿插值多项式的用法,适用范围及精确度。实验环境MicrosoftVisualC++6.0实验内容1、Lagrange插值多项式:,其中2、Newton插值多项式:3、计算实例以2.0,2.1,2.2,2.3,2.4为节点,用牛顿插值求函数在2.51处的近似值;取正弦函数4、如果有错,修改直至运行成功,查看运行结果算法描述及实验步骤1、实验1实验步骤:(1)程序设计(2)
2、计算实例(3)撰写实验报告2、实验2实验步骤(1)程序设计(2)计算实例以2.0,2.1,2.2,2.3,2.4为节点,用牛顿插值求函数在2.51处的近似值;(3)撰写实验报告1、拉格朗日插值实验结果如图:调试过程及实验结果以0.32,0.34,0.36为节点,分别用线性插值和抛物插值求正弦函数在0.3367处的近似值1、牛顿插值实验结果如图:进行测试:2、使用牛顿插值计算实例以2.0,2.1,2.2,2.3,2.4为节点,用牛顿插值求函数在2.51处的近似值:总结1、通过本次实验,使我进一步加深了对拉格朗日插值多项式的了
3、解,掌握拉格朗日插值多项式的用法,能够正确的运用拉格朗日插值多项式进行运算。2、通过本次实验,使我加深了对牛顿插值的认识,能够熟练的运用公式进行运算,掌握牛顿插值多项式的用法。附录1、拉格朗日插值程序清单:#include#includedoubleLagrange(doublex,intn,doublea[],doubleb[]);voidmain(){doublea[20],b[20],x,y;inti=0,n;printf("请输入数值个数:n=");scanf("%d",&n);
4、printf("请输入%d个不同的x的数值:",n);for(i=0;i5、;}doubleLagrange(doublex,intn,doublea[],doubleb[]){doubley=0,L;inti,j;for(i=0;i#include#includedoubleNewton(doublex,
6、intn,doublea[],doubleb[]);doubleChashang(inta1,intb1,doublea[],doubleb[]);voidmain(){doublea[20],b[20],x,y;inti=0,n;printf("请输入数值个数:n=");scanf("%d",&n);printf("请输入%d个不同的x的数值:",n);for(i=0;i7、canf("%lf",&b[i]);}printf("请输入需计算的数:x=");scanf("%lf",&x);y=Newton(x,n,a,b);printf("根据牛顿插值公式计算后的数为:y=%f",y);}doubleNewton(doublex,intn,doublea[],doubleb[]){inti;doublet=1.0,zhi=b[0],p=0.0;for(i=1;i<=n;i++){t=(x-a[i-1])*t;p=Chashang(0,i,a,b)*t;zhi=zhi+p;}returnzhi
8、;}doubleChashang(inta1,intb1,doublea[],doubleb[]){doublec;if(b1==a1+1)c=(b[b1]-b[a1])/(a[b1]-a[a1]);elsec=(Chashang(a1+1,b1,a,b)-Chashang(a1,b1-1,a,b))/