版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、匕京XX大学计算机与通信工程学院实验报告实验名称:数值计算方法课程实验学生姓名:XX专业:计算机科学与技术班级:XXXX学号:XXXXXX指导教师:XXXXX实验成绩:实验地点:XXXXXXX实验时间:2017年 6 月6 日一、实验目的与实验要求1、实验目的实验1:探究非线性方程的解法,比较不同解法的优劣性,针对具体问题对解法进行 实践,并迭代达到指定的精确度。实验2:探究一般化曲线拟合的方法,采用最小二乘法对含有多项式,指数和对数多 种形式的函数进行拟合,确定拟合结果中的系数。实验3:探究多种积分的数值解法,根据给定的精度,选择恰当的数值积分方法,确 定迭代步数与步长,分析积分数值解法的优
2、劣性。2、实验要求实验1:采用两种算法求解非线性方程,比较两种算法的性能。实验2:用最小二乘法拟合由不超过三阶多项式和指数、对数函数线性组合成的符合 函数,确定各个项的系数实验3:自选一种数值积分方法求解积分值, 根据要求的精度给出最终的迭代步数和 步长,分析优缺点。二、实验设备(环境)及要求实验1, 3米用C语言编写,编译环境为 DEV C+。实验2涉及矩阵操作,故采用 MATLAB编写。三、实验内容与步骤1、实验1(1)实验内容采用至少两种不同的算法求解 ex+3*x3-x2-2=0在0,1范围内的一个根,要求 两次迭代误差小于10-4。根据实验结果,比较分析不同算法的性能。(2)主要步骤
3、本实验由C语言实现。在两种不同的算法上选用简单迭代法和牛顿迭代法。简单迭代法是将方程化 成一个与原方程同解的方程,方程一端化成自变量 x,然后判断迭代函数是否收 敛,如果收敛的话,不停地迭代将使x趋于一个定值,这个定值就是原方程的近 似解。而牛顿迭代法是直接给出形如sr 監的迭代函数进行迭代,如 果满足两个端点异号,f'(在a,b上不等于零,f''在:)a,b上不变号且初值:满足条件f()f'0,则由牛顿迭代法产生的序列单调收敛于a,b内的唯一根。两种算法在理论上,牛顿迭代法的收敛速度要大于简单迭代法,以下进行迭代解非线性方程组并验证收敛速度的差异。1.简单迭代
4、法:将移项,整理,得到迭代函数如下: ,选取收敛的初值点.=0o在实现上利用for循环进行迭代, 直到相邻两次的误差小于。C语言代码如下: 简单迭代函数:floatSimplelteration(float x )/ 简单迭代return pow ( x* x +2- exp ( x)/ 3.0 , 1.0 / 3);pow (double x,double y);函数为求x的y次方主函数中简单迭代法部分:a 0=Simplelterati on(0); /printf("简单迭代法:n");printf("迭代值tt相邻两次误差n"printf(&qu
5、ot;%fn", a 0);for ( i=1 ; i +)i = Simplelteration(a i - 1);a简单迭代法);di =fabs ( a i - a i - 1);printf("%ft%fn", a i , di);if (d1<1e-4 ) break ;2牛顿迭代法:根据牛顿迭代法迭代函数的一般形式可以得到具体的迭代函数如下:,选取与简单迭代法相同的初值.:=00 C语言代码如下:牛顿迭代函数:floatNewt on Iteration(float x )/ 牛顿迭代returnx -( exp ( x)+ 3*x*x*x- x
6、*x - 2)/( exp ( x)+ 9* x*x- 2* x);主函数中牛顿迭代法的部分:b 0= Newt on Iteration(0);/牛顿迭代法pri ntf("n牛顿迭代法:n");pri ntf("迭代值tt 相邻两次误差n");pri ntf("%fn", b 0);for (j=1 ; j +)b j = Newtoniteration( b j - 1 );d2 =fabs ( b j - b j - 1);printf("%ft%fn",bj, d2);if ( d2 <1e-4 )
7、 break ;两个迭代法完整C语言代码如下:#i nclude <stdio.h>#in elude <math.h>#i nclude <stdlib.h>#defi ne MAXSIZE 30floatSimpleiteration(float x )/ 简单迭代return pow ( x* x +2- exp ( x)/ 3.0 , 1.0 / 3);pow (double x,double y);函数为求x的y次方floatNewt on Iteration(float x )/ 牛顿迭代returnx -( exp ( x)+ 3* x*x*
8、x-x*x - 2)/( exp ( x)+ 9* x*x- 2* x);void mai n()floata MAXSIZE ;floatb MAXSIZE ;floatd1 =1;floatd2 =1 ;int i,j ;a 0=SimpleIterati on(0);/简单迭代法pri ntf(“简单迭代法:n");pri ntf("迭代值tt相邻两次误差n");pri ntf("%fn", a 0);for ( i=1; i +)ai = SimpleIteration(ai - 1);di= fabs ( a i - a i -1);
9、pri ntf("%ft%fn",a i ,d1 );if(d1 <1e-4 ) breakJb 0=Newt on Iterati on(0);/牛顿迭代法pri ntf("n牛顿迭代法:n");pri ntf("迭代值tt相邻两次误差n");pri ntf("%fn", b 0);for (j=1 ; j +)bj = Newt on Iterati on(bj - 1);d2= fabs ( b j - b j -1);pri ntf("%ft%fn",b j ,d2);if(d2
10、<1e-4 ) breakJ执行程序,结果如下:覽卓送优法: 迭代值9.6933510.5430059.576125 e.5&90H4 9.5FB5650.5F0239e.5739牛氛迭代汪: 喘代匱1.0990699.T20292e.5958996.571186A.5?Q29&e.570297相邻两次煤圣Q.15O35TQ.0331210 097081Q.0915219 Q99?2SQ eS0G7D相弐苗賓忒雀0 2797689.124492S 0270*+s.eeassBB esooei可见,牛顿迭代法的收敛速度大于简单迭代法,具体详见实验结果与分析2、实验2(1)
11、实验内容已知如下数据:x:1.00001.40001.80002.20002.60003.00003.40003.80004.20004.60005.0000y:2.71836.644815.366730.186752.654284.5925128.1972186.2022 262.1349 360.7020 488.3660数据可能来自于不超过3阶多项式和指数、对数函数线性组合形成的复合函数(1, x, x2, x3, ex, ln(x),请采用最小二乘算法确定复合函数中各个函数项的系数。(2) 主要步骤最小二乘法是在确定函数形式的情况下,找出一条最靠近所有数据点的直线,其判定规则是 %*达
12、到最小。在求解的过程中,用最小二乘法拟合复合函数的过程实际上就是求法方程组的过程。分别写出各项的内积g 品和(Cq>oy然后求解方程组9R=E»V匕中小(冲J根据题目中给出的数据点和复合函数形式,可以定义出如下的6种基函数, 具体的MATLAB代码如下:functiony =f ( x, n)if n = 1 y =1 ;endif n = 2 y =x;endif n = 3 y =x.A 2;endif n =4 y =x .a 3;endif n = 5 y =exp ( x);endif n = 6 y =log ( x);endend然后在M命令文件中调用上述函数,并
13、输入相应的n。整个法方程组的系数矩 阵可以用一个三重for循环实现,等号右侧的矩阵用另一个二重循环实现,实现 系数矩阵的MATLAB代码如下:for k =1: 6%控制行for i =1:6%控制列for j =1: 11%控制所有元素求和D (k, i )= f (X(j ), k).* f (X(j ), i )+ D( k, i );endendend等式右边的矩阵的MATLAB代码如下:for l =1 : 6%控制行for m =1 : 11 %控制所有元素求和F ( l )= f (X( m), l ).* Y(m)+ F( l );endend完整的MATLAB代码如下:fun
14、 cti ona =LS()clcclearformat shortX= 11.41.8 2.22.63 3.43.84.24.65; %11个元素Y= 2.71836.644815.366730.186752.654284.5925128.1972262.1349360.7020488.3660;186.2022D=zeros ( 6);F = zeros (1,6)'a=;for k =1: 6for i =1: 6for j =1:11D(k, i )= f (X(j ), k).* f (X(j ), i )+ D( k, i );endendendfor l =1: 6for
15、 m =1 : 11F ( l )= f (X( m), l ).* Y(m)+ F( l );endenda = D F %求解end得出的结果如下:a =-2.00060.0006-1.00003.00001.0000-5.0008所 以, 拟 合 出 的 复 合 函 数 应 为f(x) = -2.0006 + 0.0006X 一 lx2 4- 3x3 + 护一 5.00081n(x)3、实验3(1)实验内容选择一种数值积分方法求解下列函数在区间0,2内的积分值,要求精度小于10-5:f(x) = (3x-x2+x3+ex)0.5给出迭代步数和最终的步长,并分析你所采用方法的优缺点。(2)
16、主要步骤在积分难求出解析解时通常用数值解的方法求积分结果的近似值,在本题的实现方法上选用复合Simpson公式进行数值积分的计算,并从步数n=2,步长h= 开始逐步细化步长,增大步数,直到精度满足题目中的要求。首先在定义一个题目中给出的待积分的函数,C语言代码如下:double function( double x )double s ;s =sqrt ( 3*x_ x* x+x* x* x+exp ( x);return s ;然后编写复合Simpson公式,将其定义在一个独立的函数中,C代码如下:double ReiterationOfSimpson( double a , double
17、b , double n , double f ( doublex)double h , fa , fb , xk , xj ;h =( b- a)/ n;fa=f ( a);fb=f ( b);double s1 =0.0 ;double s2 =0.0 ;int k , j ;for ( k = 1 ; k <n; k+)xk=a+k* h;s1=s1 +f ( xk );for (j =0; j <n; j +)xj =a+( j +0.5 )* h;s2 =s2 + f ( xj );double sn ;sn =h/ 6*( fa +fb +2* s1 +4*s2 );r
18、eturn sn ;最后在主函数中定义初始步数 n为2,初始步长h为0.5,并通过for循环逐步增大n,直到相邻两次误差小于i:r:',具体的C代码如下:void mai n()doublen =2;doubleh =1 / n;int iJdoubleS MAXN;pri ntf("复合Simpson 公式法nn");pri ntf("迭代步数t步长tt积分数值t误差n");S 0=Reiterati onO fSimps on(0,2, n, function);pri ntf("%dtt%ft%fn",(int)n, h
19、, S0);n +;h =1/n;S 1=Reiterati onO fSimps on(0,2, n, function);pri ntf("%dtt%ft%ft%fn",(int ) n, h, S 1, S 1- S 0);for ( i=2; S i - 1- S i - 2>=1e-5 ;i +)in=:i +2;h=:1 / n;Si = ReiterationOfSimpson(0, 2, n, function);printf("%dtt%ft%ft%fn",( int )n, h, S i , S i - S i - 1);程序执
20、行的结果如下:= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =迭代步数步长积分数值误差20.500GQO4.33742530.3333334.940087O.QG26G240.25000094Q7210.00063450r 200000.Se33G.000213G9J666G74,9410220.00003370.1428574.9410630.0006180,1250094.941G850.00002190.1111114.9410976 0OOG12100.1000004.9411040.O000G7可见,在
21、迭代步数n为10时,即步长为0.1时,精度达到要求,且此时的积分数值约为4.941104优劣性分析见实验结果与分析。四:实验结果与分析实验1:通过采用简单迭代法和牛顿迭代法处理同一问题,观察达到指定精度时所需的不 同迭代次数,简单迭代法经过7步之后误差小于二一,牛顿迭代法经过6步之后 误差小于巧:心,所以在收敛速度上来讲,牛顿迭代法的性能优于简单迭代法。实验2:通过采用最小二乘法拟合一个由不超过 3阶多项式和指数、对数函数线性组合形 成的复合函数,通过解法方程组求解,在求解过程中熟悉了最小二乘法的求解方 法和基本概念,包括最小二乘法和插值的区别所在。 在计算机中可以通过循环较 容易地求得各个基
22、函数的内积,从而构建求解法方程组。实验3:通过用数值积分方法求解一个函数在一个积分区间的积分值,并根据具体的精度要求给出迭代步数和最终步长。在方法上我选用了复合Simps on公式法,复合Simpson公式在Simpson公式的基础上提高了求积的精度,将a,b等分成n个子 区间,在每个子区间上使用低阶求积公式计算, 然后把所有子区间上的计算结果 求和。复合Simpson公式的优点在于通过增加子区间的个数可以缩小误差提高精 度,这一点比单纯的Simpson公式,梯形公式和Cotes公式要好。但是缺点在于 复合Simpson公式是4阶收敛的,在收敛速度上没有复合 Cotes公式收敛的快, 所以需要n=10时才能达到精度要求。五:结论(讨论)1、实验结论在本次数值计算实验课中一共完成了三个实验,分别对应理论课程中三章的内容,分别复习并实践了非线性方程的迭代解法,插值与拟合,积分的数值解法等内容。这三个实验涉及到了数值计算方法的主要内容,熟悉了数值计算方法的理论知识,并加以应用,在有一定创新度并结合各种具体编程环境的基础上,在实践中体会到了数值计算方法在实际问题中的作用。在具体实现上,分别用C语言实现了 1,3两个实验,用MATLAB实现了第2 个实验,锻炼了把数值计算方法结合到不同应用场景的能力,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2022年大学力学专业大学物理下册开学考试试题B卷-含答案
- 石河子大学《语言与文化》2021-2022学年第一学期期末试卷
- 石河子大学《水工程法规》2021-2022学年第一学期期末试卷
- 石河子大学《口腔解剖生理学一》2021-2022学年第一学期期末试卷
- 石河子大学《工程制图》2021-2022学年第一学期期末试卷
- 沈阳理工大学《数字图象处理》2023-2024学年期末试卷
- 沈阳理工大学《流体与工程热力学》2022-2023学年第一学期期末试卷
- 沈阳理工大学《俄汉笔译》2023-2024学年第一学期期末试卷
- 沈阳理工大学《超精密制造工程》2022-2023学年第一学期期末试卷
- 合伙人开足疗店合同协议书范本
- 河南省周口市川汇区2024-2025学年八年级上学期期中质量监测地理试卷
- 2024年新人教版一年级数学上册第4单元《第1课时 10的再认识》课件
- 2024年检察院招录书记员考试法律基础知识及答案
- 二年级乘除法口算题计算练习大全2000题(可直接打印)
- 初中数学教学“教-学-评”一体化研究
- 七年级期中考试考后分析主题班会课件
- 净水设备采购务投标方案(技术方案)
- 病例报告表(样板)
- 【芝麻灰】石材检测报告
- 抗美援越烈士们永垂不朽
- 2021年村法制宣传台账(替换图片 拿来即用)
评论
0/150
提交评论