实 验 报 告
课程名称:计算方 法
院 系:数 学科学系
专业班级:信息与计算科学
学 号:
学生姓名:
指导教师: 沈 林
开课时间:2015至2016学年第一学期
一、学生撰写要求
按照实验课程培养方案的要求,每门实验课程中的每一个实验项目完成后,每位参加实验的学生均须在实验教师规定的时间内独立完成一份实验报告,不得抄袭,不得缺交。
学生撰写实验报告时应严格按照本实验报告规定的内容和要求填写。字迹工整,文字简练,数据齐全,图表规范,计算正确,分析充分、具体、定量。
二、教师评阅与装订要求
1.实验报告批改要深入细致,批改过程中要发现和纠正学生实验报告中的问题,给出评语和实验报告成绩,签名并注明批改日期。实验报告批改完成后,应采用适当的形式将学生实验报告中存在的问题及时反馈给学生。
2.实验报告成绩用百分制评定,并给出成绩评定的依据或评分标准(附于实验报告成绩登记表后)。对迟交实验报告的学生要酌情扣分,对缺交和抄袭实验报告的学生应及时批评教育,并对该次实验报告的分数以零分处理。对单独设课的实验课程,如学生抄袭或缺交实验报告达该课程全学期实验报告总次数三分之一以上,不得同意其参加本课程的考核。
3.各实验项目的实验报告成绩登记在实验报告成绩登记表中。本学期实验项目全部完成后,给定实验报告综合成绩。
4.实验报告综合成绩应按课程教学大纲规定比例(一般为10-15%)计入实验课总评成绩;实验总评成绩原则上应包括考勤、实验报告、考核(操作、理论)等多方面成绩;
5.实验教师每学期负责对拟存档的学生实验报告按课程、学生收齐并装订,按如下顺序装订成册:实验报告封面、实验报告成绩登记表、实验报告成绩评定依据、实验报告(按教学进度表规定的实验项目顺序排序)。装订时统一靠左侧按“两钉三等分”原则装订。
第二篇:实验2计算方法
《计算方法》实验报告
学 院: 计算机学院
专 业: 计算机科学与技术
指导教师: 爨莹
班级学号: 201207010229
姓 名: 图尔荪托合提
实验二 插值法
一、实验目的:
1、掌握直接利用拉格郎日插值多项式计算函数在已知点的函数值;观察拉格郎日插值的龙格现象。
2、了解Hermite插值法原理,结合计算公式,确定函数值。
二、 实验要求:
1、 认真分析题目的条件和要求,复习相关的理论知识,选择适当的解决方案和算法;
2、编写上机实验程序,作好上机前的准备工作;
3、上机调试程序,并试算各种方案,记录计算的结果(包括必要的中间结果);
4、分析和解释计算结果;
5、按照要求书写实验报告;
三、实验内容:
用拉格郎日插值公式、牛顿插值法确定函数值;对函数f(x)进行拉格郎日插值,并对f(x)与插值多项式的曲线作比较。
已知函数表:(0.56160,0.82741)、(0.56280,0.82659)、(0.56401,0.82577)、(0.56521,0.82495)用三次拉格朗日插值多项式、牛顿插值法求x=0.5635时函数近似值。
四、题目、原理、程序及结论:
Lagrange插值
原理:1.Lagrange插值公式
输入,,,取次多项式作为插值函数,构造一组插值基函数
它满足,并称为拉格朗日插值基函数。
插值多项式为,其满足插值条件 ,并称此多项式为拉格朗日插值多项式。
特别地,当时称为线性插值,其插值多项式为
满足,从几何上看,为过两点的直线。
当时,称为抛物线插值,其插值多项式为
满足。从几何上看为过点和的一条抛物线。
程序:
#include<stdio.h>
#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=(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;
}
void main()
{
float x[4]={0.56160,0.56280,0.56401,0.56521};
float y[4]={0.82741,0.82659,0.82577,0.82495};
float xx=0.5635,yy;
float Lagrange(float *,float *,float ,int);
yy=Lagrange(x,y,xx,4);
printf("x=%f,y=%f\n",xx,yy);
getch();
}
运行结果:
x=0.563500,y=0.826116
Newton插值
原理:Newton插值公式
输入,,,对,计算函数的各阶差商,
计算Newton插值函数值
程序:
#include<stdio.h>
void main()
{
float static x[4]={0.56160,0.56280,0.56401,0.56521};
float static y[4]={0.82741,0.82659,0.82577,0.82495};
int i,k;
double c,p;
for (k=1;k<=3;k++)
{
printf("\n%dth is:",k);
for(i=3;i>=k;i--)
{
y[i]=(y[i]-y[i-1])/(x[i]-x[i-k]);
printf("\n%8.6f",y[i]);
}
}
c=0.5635; printf("\np[%4.2f]=%8.6f",c,y[0]+y[1]*(c-x[0])+y[2]*(c-x[0])*(c-x[1])+y[3]*(c-x[0])*(c-x[1])*(c-x[2])+y[4]*(c-x[0])*(c-x[1])*(c-x[2])*(c-x[3]));
p=y[4];
for(i=3;i>=0;i--)
p=p*(c-x[i])+y[i];
}
运行结果
y=0.826116
5、实验体会:
(1).通过实验理解两种插值方法的异同,便于自己理解差值方法。
(2).在实验中自己对于插值公式的构造原理理解不是很清晰,对于公式的运用不是很熟练。
(3).对于C语言中的for循环,变量赋值,输入输出语句的理解不够深刻。对于变量类型的选择有一些问题。
(4).指针和数组的设计问题比较大。同时,关于指针和数组的使用概念不清。(5).对于编程练习较少,导致有些操作比较生疏。因此,今后应该多复习C语言的知识,多练习。做到熟能生巧。
(6)通过本次试验我真的体会到了,要熟练C语言中的一些关键语句,要熟练C语言程序设计的技巧与方法。