- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算方法课程实验报告精选
课 程 实 验 报 告
课程名称: 计算方法
专业班级: 信安1302班
学 号: U201315130
姓 名: 王超
指导教师: 付才
报告日期: 2015.5.2
计算机科学与技术学院
目录
实验一:Lagrange插值法 1
实验二:Newton插值法 4
实验三:复化梯形法 7
实验四:复化辛普森法 9
实验一:Lagrange插值法
1.1实验内容及要求
掌握Lagrange插值法的存在意义,推导过程,以及公式运用;通过编程实现Lagrange插值法的应用
1.2公式与算法描述
pn(x)=
li(x)=
1.3程序流程图
见图1.1
图1.1
1.4程序清单
#includeiostream
#includestring
#includevector
using namespace std;
double lagrange(int n,vectordoublex,vectordoubley,double x);
int main(){
char a=n;
do{
coutn的值:endl;
int n;
cinn;
vectordoublex(n,0);
vectordoubley(n,0);
cout请输入插值点对应的值及函数值(xi,yi):endl;
for(int a=0;an;a++){
cinx[a]y[a];
}
cout请输入要求值x的值:endl;
double x;
cinx;
double result=lagrange(n,x,y,x);
cout由拉格朗日插值法得出结果: resultendl;
cout是否要继续?(y/n):;
cina;
}while(a==y);
return 0;
}
double lagrange(int n,vectordoublex,vectordoubley,double x){
double result=0;
for(int i=0;in;i++){
double temp=y[i];
for(int j=0;jn;j++){
if(i!=j){
temp = temp*(x-x[j]);
temp = temp/(x[i]-x[j]);
}
}
result += temp;
}
return result;
};
1.5运行结果
见图1.2
图1.2
1.6结果分析
结果与实验预期吻合,实验效果良好
1.7实验小结
通过这项实验,加深了对Lagrange插值法的理解,强化了对Lagrange插值法的运用
实验二:Newton插值法
2.1实验内容及要求
掌握Newton插值法的来源,推导过程,以及公式运用;通过编程实现Lagrange插值法的应用
2.2公式及算法描述
Nn(x)=f(x0)+f[x0,x1](x-x0)+…+f[x0,x1….,xn]wn(x)
wn(x)=(x-x0)x-x1)..(x-xn-i)
2.3流程图
图2.0
2.4程序清单
#includestdio.h
#define Max_N 20 //最大插值节点个数
float newton (float x[],float y[],float xx,int n)
{
int i,k;
float Nt,f[Max_N], t[Max_N];
for(k=1;k=n;k++) // 计算差商
{
for(i=k;i=n;i++)
t[i]=(y[i]-y[i-1])/(x[i]-x[i-k]);
f[k]=t[k];
for(i=k;i=n;i++)
y[i]=t[i];
}
Nt=f[n];
f[0]=y[0];
for(i=n-1;i=0;i--) // 计算牛顿插值多项式的值
Nt=Nt*(xx-x[i])+f[i];
return(Nt);
}
main()
{float x[Max_N],y[Max_N];
文档评论(0)