- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
—
北京XX大学计算机与通信工程学院
实验报告
实验名称: 《数值计算方法》课程实验
学生姓名: XX
专 业: 计算机科学与技术
班 级: XXXX
学 号: XXXXXX
指导教师: XXXXX
实验成绩: 实验地点: XXXXXXX
实验时间: 2017 年 6 月 6 日
欢迎下载
—
一、实验目的与实验要求
1、实验目的
实验1:
探究非线性方程的解法,比较不同解法的优劣性,针对具体问题对解法进行
实践,并迭代达到指定的精确度。
实验2:
探究一般化曲线拟合的方法,采用最小二乘法对含有多项式,指数和对数多
种形式的函数进行拟合,确定拟合结果中的系数。
实验3:
探究多种积分的数值解法,根据给定的精度,选择恰当的数值积分方法,确
定迭代步数与步长,分析积分数值解法的优劣性。
2、实验要求
实验1:
采用两种算法求解非线性方程,比较两种算法的性能。
实验2:
用最小二乘法拟合由不超过三阶多项式和指数、对数函数线性组合成的符合
函数,确定各个项的系数
实验3:
自选一种数值积分方法求解积分值,根据要求的精度给出最终的迭代步数和
步长,分析优缺点。
二、实验设备(环境)及要求
实验1,3采用C语言编写,编译环境为DEVC++。
实验2涉及矩阵操作,故采用MATLAB编写。
三、实验内容与步骤
1、实验1
实验内容
·采用至少两种不同的算法求解ex+3*x3-x2-2=0在[0,1]范围内的一个根,要求
欢迎下载
—
两次迭代误差小于10-4。
·根据实验结果,比较分析不同算法的性能。
主要步骤
本实验由C语言实现。
在两种不同的算法上选用简单迭代法和牛顿迭代法。简单迭代法是将方程化成一个与原方程同解的方程,方程一端化成自变量x,然后判断迭代函数是否收敛,如果收敛的话,不停地迭代将使x趋于一个定值,这个定值就是原方程的近
似解。而牛顿迭代法是直接给出形如 的迭代函数进行迭代,如
果满足两个端点异号,f’(x)在[a,b]上不等于零,f’’(x)在[a,b]上不变号且初值 满
足条件f( )f’’( )≥0,则由牛顿迭代法产生的序列单调收敛于[a,b]内的唯一根。两种算法在理论上,牛顿迭代法的收敛速度要大于简单迭代法,以下进行迭
代解非线性方程组并验证收敛速度的差异。
简单迭代法:
将 移项,整理,得到迭代函数如下:
,选取收敛的初值点 =0。在实现上利用for循环进行迭代,
直到相邻两次的误差小于简单迭代函数:
。C语言代码如下:
floatSimpleIteration(floatx) //简单迭代
{
returnpow((x*x+2-exp(x))/3.0,1.0/3); //pow(doublex,doubley);
函数为求x的y次方
}
主函数中简单迭代法部分:a[0]=SimpleIteration(0); //简单迭代法printf(简单迭代法:\n);
printf(迭代值\t\t相邻两次误差\n);
printf(%f\n,a[0]);for(i=1;;i++)
{
[ai]=SimpleIteration(a[i-1]);
欢迎下载
—
d=1fabs(a[i]a[i1])
print(f%f\t%f\n,a[i],d1)if(d11e-4)break
}
牛顿迭代法:
根据牛顿迭代法迭代函数的一般形式可以得到具体的迭代函数如下:
,选取与简单迭代法相同的初值
牛顿迭代函数:
floatNewtonIteration(floatx) //牛顿迭代
{
=0。C语言代码如下:
returnx(exp(x)+3*x*x*xx*x2)/(exp(x)+9*x*x2*x)
}
主函数中牛顿迭代法的部分:
b[0]=NewtonIteration(0) //牛顿迭代法printf(\n牛顿迭代法:\n)
printf(迭代值\t\t相邻两次误差\n)
printf(%f\n,b[0])for(j=1 j++)
{
[bj]=NewtonIteration(b[j1])
d=2fabs(b[j]b[j1])
print(f%f\t%f\n,b[j],d2)if(d21e-4)break
}
两个迭代法完整C语言代码如下:
#includestdio.h#includemath.h#includestdlib.h#defineMAXSIZE30
floatSimpleIteration(floatx) //简单迭代
{
returnpow((x*x+2exp(x))/3.0
您可能关注的文档
最近下载
- 2024霸王茶姬- 以东方茶会世界友品牌简介手册-65P.pptx VIP
- 焊点标准(DIP部分).pdf
- 大职赛生涯闯关参考答案.docx VIP
- 宁夏水务投资集团有限公司招聘笔试题库2023.pdf
- eo体系内审检查表.doc
- 桉木P-RC+APMP化机浆废水的污染特征与生物处理的研究.pdf VIP
- 《基于项目式学习在初中物理教学中培养学生问题解决能力的实践研究》课题研究方案.doc
- Unit4Funwithnumbers.(课件)-外研版(三起)(2024)英语三年级上册.pptx VIP
- 城市轨道交通全自动运行系统场景技术规范.pdf VIP
- 大学本科优质生源基地建设管理办法.docx
文档评论(0)