2023年数值实验报告.docx

上传人:太** 文档编号:86735007 上传时间:2023-04-14 格式:DOCX 页数:15 大小:34.73KB
返回 下载 相关 举报
2023年数值实验报告.docx_第1页
第1页 / 共15页
2023年数值实验报告.docx_第2页
第2页 / 共15页
点击查看更多>>
资源描述

《2023年数值实验报告.docx》由会员分享,可在线阅读,更多相关《2023年数值实验报告.docx(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、北京XX大学 计算机与通信工程学院实验报告实验名称:数值计算方法课程实验学生姓名:XX专 业:计算机科学与技术班级:XXXX学号:XXXXXX指导教师:XX XXX实验成绩:实验地点:XXXXXXX实验时间:2023 年6月 6 日e nd end endf or 1=1: 6 for m= :11F (l)=f (X (m) ,1) .*Y (m) +F( 1 ); e nd end a=DF %求解 end 得出的结果如下: a =-2. 0 0 0 6 0 .00 0 6 -1.000 03. 0 000 1 . 0 000 -5.0008所 以,拟 合 出 的 复 合 函 数 应 为f

2、(x) =- 2.0006 + 0.0006X - lx2 + 3x3 + ex - 5.00081n (x)3、实验3(1)实验内容选择一种数值积分方法求解下列函数在区间0 ,2内的积分值,规定精度小于10-5:f(x)(3 x-x2+ x 3 +ex) 0.5给出迭代步数和最终的步长,并分析你所采用方法的优缺陷。(2 )重要环节在积分难求出解析解时通常用数值解的方法求积分结果的近似值,在本题的实现方法上选用复合S i mpson公式进行数值积分的计算,并从步数n=2,步长 1h=2开始逐步细化步长,增大步数,直到精度满足题目中的规定10-5。一方面在定义一个题目中给出的待积分的函数,C语言

3、代码如下:d ouble f u n ct i on (do u ble x)(d oub 1 e s ;s= s qr t ( 3 *x-x*x+x* x *x + exp ( x ) ) r e turn s ;然后编写复合Simpson公式,将其定义在一个独立的函数中,C代码如下:double Rei t e r a tionOfSim p s o n (d o u ble a , do u b 1 e bzdo u blen,double f(double x)(double hzfa , f b ,xk,xj ;h = (b- a ) /n;f a=f ( a );fb=f ( b)

4、;d ouble sl=0.0;dou ble s2=0.0;int k,j;for ( k = I ;kn; k+ + )(xk=a+k*h;s 1 =sl+ f (xk);)for(j = 0 ;j=L e - 5;i+)n = i +2;h=l/n;S i = Rei t e r a t ionOf S im p son ( 0 , 2 z n z f unction);P r i nt f ( t t % f t f t%fn , (i n t) nzh,S i , S i-Si-1);程序执行的结果如下:复合 Simpson公式法= = = = = = = = = = = = = =

5、 = = = = = = =迭代步数步长积分数值误差20.5000004.93742530.3333334.9400870.00266240.2500004.9407210.00063450.20OQ0O4.9409340.00021360.1666674.9410220.00008870.1428574.9410630.00004180.1250004.9410850.00002190.1111114.9410970.000012100.1000004.9411040.000007可见,在迭代步数n为10时,即步长为0.1时,精度达成规定,且此时的积分数值约为 4.9 4 1 1 04 o优

6、劣性分析见实验结果与分析。四:实验结果与分析实验1:通过采用简朴迭代法和牛顿迭代法解决同一问题,观测达成指定精度时所需的不 同迭代次数,简朴迭代法通过7步之后误差小于10-1牛顿迭代法通过6步之后误 差小于1 ,所以在收敛速度上来讲,牛顿迭代法的性能优于简朴迭代法。实验2:通过采用最小二乘法拟合一个由不超过3阶多项式和指数、对数函数线性组合形 成的复合函数,通过解法方程组求解,在求解过程中熟悉了最小二乘法的求解方 法和基本概念,涉及最小二乘法和插值的区别所在。在计算机中可以通过循环较 容易地求得各个基函数的内积,从而构建求解法方程组。实验3:通过用数值积分方法求解一个函数在一个积分区间的积分值

7、,并根据具体的精度 规定给出迭代步数和最终步长。在方法上我选用了复合S i mpson公式法,复合 Simp s on公式在S i mpson公式的基础上提高/求积的精度,将a, b等提成n 个子区间,在每个子区间上使用低阶求积公式计算,然后把所有子区间上的计算 结果求和。复合S i mpson公式的优点在于通过增长子区间的个数可以缩小误差 提高精度,这一点比单纯的Simpson公式,梯形公式和C o tes公式要好。但是缺 陷在于复合S i mps o n公式是4阶收敛的,在收敛速度上没有复合Cotes公式 收敛的快,所以需要n =10时才干达成精度规定。五:结论(讨论)1、实验结论在本次数

8、值计算实验课中一共完毕了三个实验,分别相应理论课程中三章的 内容,分别复习并实践了非线性方程的迭代解法,插值与拟合,积分的数值解法 等内容。这三个实验涉及到了数值计算方法的重要内容,熟悉了数值计算方法的 理论知识,并加以应用,在有一定创新度并结合各种具体编程环境的基础上,在 实践中体会到了数值计算方法在实际问题中的作用。在具体实现上,分别用C语言实现了 1,3两个实验,用MATLAB实现了第2个 实验,锻炼了把数值计算方法结合到不同应用场景的能力,为此后在各领域的使 用打下基础。在具体的实验上,在第一个实验中,应用了简朴迭代法和牛顿迭代法解常见的 非线性方程,熟悉了各种非线性方程的解法,涉及二

9、分法,简朴迭代法,牛顿迭 代法弦截法和牛顿下山法等。其中应用简朴迭代法和牛顿迭代法求解了题目中的 问题,理解了两者的区别,牛顿迭代法直接通过迭代函数的一般形式给出具体的 迭代函数,且收敛速度比简朴迭代法要快。在第二个实验中,应用了最小二乘法拟合一个由不超过3阶多项式和指数、对 数函数线性组合形成的复合函数,熟悉了最小二乘法的概念及求解方法,通过构造 法方程组来求解最小二乘法拟合的问题,并在一定限度上了解了最小二乘法拟合 后平方误差的计算方法。在第三个实验中,应用了数值积分方法中的复合Simps on公式法解一个函 数在固定区间中的积分值。由于复杂的函数在一定情况下难以找到解析解,所以 要通过数

10、值积分的方法求数值解。在求数值解的方法上重要有梯形公式,Simps o n公式,Cote s公式,复合梯形公式,复合S imps。n公式,复合Cote s公式等, 其中复合的公式通过在区间内等分子区间提高数值积分的精度,子区间个数越 多,精度越高,直到达成目的的精度为止。在实验中重要应用了复合Simpson 公式求解积分,熟悉并理解了相关的理论知识并加以实践,在一定限度上掌握了 相关的方法。2、讨论在本次数值计算实验课程中,完毕了课程中规定的实验,进一步掌握了实验中 涉及的知识点,涉及非线性方程的解法,最小二乘法拟合,数值积分法等等,但是 对于实验题目中未涉及到的内容仍有些掌握不牢,比如说线性

11、方程组的解法,插 值,常微分方程的数值解法等等,所以我认为实验课中涉及的知识点可以覆盖到 各章最佳,这将在熟悉知识点上提供很大的帮助。六、教师评审教师评语实验成绩署名:日期:一、实验目的与实验规定1、实验目的实验1:探究非线性方程的解法,比较不同解法的优劣性,针对具体问题对解法进行 实践,并迭代达成指定的精确度。实验2:探究一般化曲线拟合的方法,采用最小二乘法对具有多项式,指数和对数多种 形式的函数进行拟合,拟定拟合结果中的系数。实验3:探究多种积分的数值解法,根据给定的精度,选择恰当的数值积分方法,拟定 迭代步数与步长,分析积分数值解法的优劣性。2、实验规定实验1:采用两种算法求解非线性方程

12、,比较两种算法的性能。实验2:用最小二乘法拟合由不超过三阶多项式和指数、对数函数线性组合成的符合 函数,拟定各个项的系数实验3:自选一种数值积分方法求解积分值,根据规定的精度给出最终的迭代步数和 步长,分析优缺陷。二、实验设备(环境)及规定实验1 ,3采用C语言编写,编译环境为DEV C+ +。实验2涉及矩阵操作,故采用MATLAB编写。三、实验内容与环节1、实验1(1)实验内容采用至少两种不同的算法求解ex+3*x3-x 2-2= 0在0,1范围内的一个根, 规定两次迭代误差小于10-4 o根据实验结果,比较分析不同算法的性能。(2)重要环节。本实验由C语言实现。在两种不同的算法上选用简朴迭

13、代法和牛顿迭代法。简朴迭代法是将方程化 成一个与原方程同解的方程,方程一端化成自变量x ,然后判断迭代函数是否收 敛,假如收敛的话,不断地迭代将使x趋于一个定值,这个定值就是原方程的近似解。而牛顿迭代法是直接给出形如1 =一府的迭代函数进行迭代,假如满足两个端点异号,f(x)在a,b上不等于零,产(x)在a,b上不变号且初值x。满足 条件f(xo)f“(xo)(),则由牛顿迭代法产生的序列单调收敛于a,b内的唯一根。两种算法在理论上,牛顿迭代法的收敛速度要大于简朴迭代法,以下进行迭代解 非线性方程组并验证收敛速度的差异。1.简朴迭代法:璃炉移项,整理,得到迭代函数如下:_ 3卜。 + + 2一

14、3 一,选取收敛的初值点无。=0。在实现上运用for循环进行迭代,直 到相邻两次的误差小于C语言代码如下:简朴迭代函数:float S i m p lelt e r atio n (f 1 o at x) /简朴迭代(re t ur n pow ( x *x+2-exp (x) ) /3 . 0 , 1 . 0/3) ;/ / P ow (dou b lex, double y);函数为求x的y次方)主函数中简朴迭代法部分:a 0 = S imple I t eration ( 0 ) ;/简朴迭代法p rintf (简朴迭代法:n);print f 送代俏tt相邻卜.);P rint f (

15、% fn,aC);f or(i= 1 ; ;i+)(a i = S implelte r at i on (a i 1);dl = f a b s ( a i -a i-1 );printf ( % f t%fn* a i , d 1);i f (d 1 le 4) break;2.牛顿迭代法:根据牛顿迭代法迭代函数的一般形式可以得到具体的迭代函数如下:ex + 3x3-x2-2X- e + 9,_2x,选取与简朴迭代法相同的初值C语言代码如下: 牛顿迭代函数:f loat New t onlt eration (flo at x )/ / 牛顿迭代(return x - ( e xp (x)

16、 +3*x* x*x x*x-2) / (exp ( x ) +9*x* x -2*x);主函数中牛顿迭代法的部分:b ( = N e wtoniteration (C) ;/ / 牛顿迭代法p r i牛顿迭代法:;printf (迭代值 t t相邻两次误差n );prin t f (,%fn b 0);f o r (j=l? ; j+) b j =Newt o nite r a t ion (b ;d2=fabs(bj -bj-1);print f (u%f t %fn,bj, d2);i f (d2l c - 4 ) br e a k ;)两个迭代法完整C语言代码如下:# includ e

17、 i n elude # inclu d e d efin e MAXS I ZE 3 0fl o at S implelteration (fl o at x)简朴迭代(r e tur n pow ( (x* x + 2 -exp (x) )/3.0, I .0 / 3 ) ; /pov; (dou b 1 e x, d o ubl e y );函数为求x的y次方 )float New t o n I t e ratio n (f lo a t x)/ / 牛顿迭代(retur n x- ( e xp (x) +3* x *x*xx* x 2) / (exp (x) + 9 *x*x-2*

18、x );void main()(float a MA XS I ZE ;flo a t b MAXSIZE;f 1 o at dl= 1 ;f loa t d 2=1;in t i , j;a 0=Sim p 1 e I ter a t i o n ( 0 ) ;/简朴迭代法prin t (简朴迭代法:n”);printf (“迭代值Et相邻两次误差 n ;printf ( %fna0);for(i=L;i+)(a i =Sim p lelter a t i o n (a i-1);dl=fabs(a i-ai-l);printf (%f t %fn, a i ,dl);if (dl 1 e-

19、4) b reak;)b c =Ne w t o n I terati 0 n (0) ;/牛顿迭代法prin t f(n 牛顿迭代法:n );prin t f (迭代值tt相邻两次误差n );printf (%fn , b o);for (j=l;j + + )(b j =N e w tonlt e r at i on ( b j -1 );d2=fabs ( b j - b j - 1 );p r i ntf ( % f t%fn ,b j ,d2);if (d2Le-4) b r eak;执行程序,结果如下:简单迭代法:迭代值相邻两次误差0.6933610.5430050.1503570

20、.5761250.0331210.569G4U0.0070810.5705650.0015210.5702390.0003260.5703090.000070牛顿迭代法:迭代值相邻两次误差1.0000000.7202920.2797080.5958900.1244Q20.5711860.0247040.5702980.0008880.5702970.000001可见,牛顿迭代法的收敛速度大于简朴迭代法,具体详见实验结果与分析。2、实验2(1)实验内容已知如下数据:x: 1. 00001.4 0 001. 8 00 02. 2 0232. 6 00 03. 00003.40003. 80004.

21、 2 0 2 34 .6 0 0 05. 0 000y: 2.718 36.644815.366 730.186752.6 5 4 284.5 9251 2 8. 19 721 86.2 0 2 32 62. 1 3 4 9 360. 7020 48 8.3660数据也许来自于不超过3阶多项式和指数、对数函数线性组合形成的复合函数 (1,x,x2, x3, e x , ln(x),请采用最小二乘算法拟定复合函数中各个函数项的系数。(2)重要环节最小二乘法是在拟定函数形式的情况下,找出一条最靠近所有数据点的直线, 其鉴定规则是 =。卬,相达成最小。在求解的过程中,用最小二乘法拟合复合函数的过程事

22、实上就是求法方程组的过程。分别写出各项的内积(平汹D和(fk)(POAPO)*然后求解方程组如,仪)(POAPO)*然后求解方程组如,仪)(年0,伙)(Pn9)(ty=log(x);endend然后在M命令文献中调用上述函数,并输入相应的n0整个法方程组的系数矩阵可 以用一个三重for循环实现,等号右侧的矩阵用另一个二重循环实现,实现系数矩 阵的MATL AB代码如下:for k=L: 6 常匚控制行for i =1: 6%口控制列for j=L: 1 1为口控制所有元素求和D( k ,i)=f (X(j) ,k) .*f (X( j ) , i )+D(k, i); end endend等式

23、右边的矩阵的MATLAB代码如下:for 1= 1 : 6 c%控制行for m= L: 11 o%控制所有元素求和F (1) =f (X(m) ,1) .*Y(m)+F( 1 ); end end 完整的MAT LAB代码如下: f u n c t ion a =LS () clc c 1 ea r format sh o rtX= 1 1.4 1.8 2.2 2. 6 3 3.4 3.8 4 .2 4. 6 b ; %11 个元素Y= 2.7183 6.64 48 15.3 6 6 7 30.186 7 5 2 . 6 5 42 84.5 9 25 1 2 8.1 9 72 8 6.2023 2 62. 1 3 4 9 3 60. 7 0 2 0 488. 3 66 0 ;D=z e ros(6);F=zero s (1,6),;a=;for k =1 : 6 f or i= L: 6for j = 1 : 11D(k, i )=f (X (j) , k) .*f (x( j ) Zi)+D(k, i);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁