华中科技大学计算方法报告

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

=
printf("*************************************************************** ************\n"); printf("k Xk Yk Fk F01k F02k F0123k \n" ); printf("*************************************************************** ************\n"); printf("0%12.4f%12.4f\n",x[0],y[0]); for(k =1;k<N;) {f[0] = y[k]; printf("%d%12.4f%12.4f",k,x[k],y[k]); for(i = 0;i<=k-1 ;i++) {f[i+1] = (f[i]-y[i])/(x[k]-x[i]); printf(" "); printf("%.4f",f[i+1]);} printf("\n"); y[k] = f[k]; k++; } n1 = f[N-1]; n2 = f[N-1]; printf("*************************************************************** ************\n");
四、
流程图
五、 源程序(数据来源于课本的实验例子) #include<stdio.h> #define N 4
void main() { float x[N]={0.56160,0.56280,0.56401,0.56521}, y[N]={0.82742,0.82659,0.82577,0.82495}, xl,l = 0,li = 1; int i,j; printf("Please Input X \n"); scanf("%f",&xl); for(i = 0;i < N;i++) { for(j = 0,li = 1;j < N; j++) {if(j == i) goto h; li = li * ((xl-x[j])/(x[i]-x[j])); h: 百度文库i = li;} l = l + li*y[i]; } printf("4 \t Ln(x) = %f \n",l); } 截图:
… 四、 流程图





开始
读入 , (i=0,1,2…,N) k=1
k++;
否 k=N 是 输入 x
输出
结束
五、
源程序(数据来源于课本的实验例子)
#include<stdio.h> #define N 5 void main() {float x[N] = {0.4,0.55,0.65,0.8,0.9},y[N] {0.41075,0.57815,0.69675,0.88811,1.02652}, f[N],n1,n2; int k=0 ,i;
课程实验报告
课程名称:数值分析
专业班级:重修 学号: 姓名: 指导教师:许如初 报告日期:2014.6.26
计算机科学与技术学院
实验一 一、 题目 用 C 语言实现 Lagrange 插值算法。 二、 实验目的 理解 Lagrange 插值原理,以及在计算机上的实现过程。 三、 实验原理 Lagrange 插值法公式:
������
������������ ������ =
������ =0 ������
������������ (������)������������ ������ − ������������ ������������ − ������������
������������ ������ =
������ =0 j ≠i
由截图可知,经过验算符合预期实验结 果。 实验二 一、 题目 用 C 语言实现 Newton 插值算法。 二、 实验目的 理解 Newton 插值原理,以及在计算机上的实现过程。 三、 实验原理 Newton 插值公式: ������������ ������ = ������ ������0 + ������ ������0 , ������1 ������ − ������0 + ⋯ + ������[������0 , ������1 , … , ������������ ]������������ (������) ������ ������0 , ������1 , … , ������������−2 , ������������ − ������[������0 , ������1 , … , ������������−1 ] ������ ������0 , ������1 , … , ������������ = ������������ − ������������−1 ������������ ������ = ������ − ������0 ������ − ������1 … (������ − ������������ −1 ) 构造差商表如下:
for(i = N-1;i >= 0;i--) { n1 = n1 *(0.596-x[i])+y[i]; n2 = n2 *(0.895-x[i])+y[i];}
printf("%f\t%f\n",n1,n2);}
由截图可知,经过验算符合预期实验结果。
实验心得: 经过本次实验,我不仅对拉格朗日插值、牛顿插值公式的一些特性有了 更加深刻的了解同时我对 C 语言的编程也更加熟练了。 拉格朗日插值法与牛顿插值法都是二种常用的简便的插值法。但牛顿法 插值法则更为简便,与拉格朗日插值多项式相比较,它不仅克服了“增加一 个节点时整个计算工作必须重新开始”的缺点,而且可以节省乘、除法运算 次数。同时,在牛顿插值多项式中用到的差分与差商等概念,又与数值计算 的其他方面有着密切的关系。 而用编程实现,我们通过观察程序的时间复杂度可以清晰的看到插值结 点数量的改变而造成的运算时间的改变,这就比通过理论推导来的更加直观 了。 这次实验让我认识到计算方法是一门理论与实践相结合的学科。从中 我们不仅学到了很多有用的算法,而且也让我进一步了解了计算机是怎样实 现数据之间的“计算”的。总之,通过这次实验,让我收获了一份将理论付 诸实践的乐趣,领略到了不同的计算方法的魅力。
相关文档
最新文档