二分法、简单迭代法的matlab代码实现.docx

上传人:牧羊曲112 文档编号:5004176 上传时间:2023-05-28 格式:DOCX 页数:14 大小:277.23KB
返回 下载 相关 举报
二分法、简单迭代法的matlab代码实现.docx_第1页
第1页 / 共14页
二分法、简单迭代法的matlab代码实现.docx_第2页
第2页 / 共14页
二分法、简单迭代法的matlab代码实现.docx_第3页
第3页 / 共14页
二分法、简单迭代法的matlab代码实现.docx_第4页
第4页 / 共14页
二分法、简单迭代法的matlab代码实现.docx_第5页
第5页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《二分法、简单迭代法的matlab代码实现.docx》由会员分享,可在线阅读,更多相关《二分法、简单迭代法的matlab代码实现.docx(14页珍藏版)》请在三一办公上搜索。

1、实验一非线性方程的数值解法(一)信息与计算科学金融崔振威201002034031一、实验目的:熟悉二分法和简单迭代法的算法实现。二、实验内容:教材 P40 2.1.5三、实验要求1根据实验内容编写二分法和简单迭代法的算法实现2简单比较分析两种算法的误差3试构造不同的迭代格式,分析比较其收敛性(一)、二分法程序:function ef=bisect(fx,xa,xb ,n, delta)% fx是由方程转化的关于x的函数,有fx=0。% xa解区间上限% xb解区间下限% n最多循环步数,防止死循环。%delta为允许误差x=xa;fa=eval(fx);x=xb;fb=eval(fx);dis

2、p( nxaxbxcfc );for1: nxc=(xa+xb)/2;x=xc;fc=eval(fx);X=i,xa,xb,xc,fc;disp(X),if fc*fa0xb=xc;else xa=xc;endif (xb-xa)delta,break,e ndend(二)、简单迭代法程序:fun ctio n x0,k=iterate (f,x0,eps,N)if nargin4N=500;endif nargineps & k fplot(xA5-3*xA3-2*xA2+2,-3,3);grid得下图:由上图可得知:方程在-3,3抠间有根。(2 )、二分法输出结果 f=xA5-3*xA3-

3、2*xA2+2 f =xA5-3*xA3-2*xA2+2 bisect(f,-3,3,20,10A(-12)2.0000-3.00000-1.50000.03133.0000-3.0000-1.5000-2.2500-31.61824.0000-2.2500-1.5000-1.8750-8.43015.0000-1.8750-1.5000-1.6875-2.96326.0000-1.6875-1.5000-1.5938-1.21817.0000-1.5938-1.5000-1.5469-0.53828.0000-1.5469-1.5000-1.5234-0.24059.0000-1.5234-

4、1.5000-1.5117-0.101510.0000-1.5117-1.5000-1.5059-0.034311.0000-1.5059-1.5000-1.5029-0.001412.0000-1.5029-1.5000-1.50150.015013.0000-1.5029-1.5015-1.50220.006814.0000-1.5029-1.5022-1.50260.002715.0000-1.5029-1.5026-1.50270.000716.0000-1.5029-1.5027-1.5028-0.000317.0000-1.5028-1.5027-1.50280.000218.00

5、00-1.5028-1.5028-1.5028-0.000119.0000-1.5028-1.5028-1.50280.000120.0000-1.5028-1.5028-1.5028-0.00002、迭代法求方程:迭代法输出结果: f=inlin e(xA5-3*xA3-2*xA2+2); xO,k=iterate(fu n1,2) x0 =2k =1 xO,k=iterate(fu n1,1.5) x0 =NaNk =6 xO,k=iterate(fu n1,2.5) x0 =NaN k =5(3)、误差分析:由二分法和迭代法输出结果可知,通过定点迭代法得出方程的解误差比二分法大,而利用二

6、分法求出的结果中,可以清楚看出方程等于零时的解,其误差比迭代法小。b、g(x)=cos(sin(x)二分法求方程:(1)、在matWb的命令窗口中输入命令: fplot(cos(si n(x),-4,4);grid得下图:由上图可得知:方程在4,4区间无根。(2 )、二分法输出结果f=cos(si n( x)f =cos(s in( x) bisect(f,-4,4,20,10A(-12)2.00003.00004.00005.00006.00007.00008.00009.000010.000011.000012.000013.000002.00003.00003.50003.75003.8

7、7503.93753.96883.98443.99223.99613.99804.00004.00004.00004.00004.00004.00004.00004.00004.00004.00004.00004.00002.00003.00003.50003.75003.87503.93753.96883.98443.99223.99613.99803.99900.61430.99010.93910.84110.78420.75540.74120.73410.73050.72880.72790.727514.00003.99904.00003.99950.727315.00003.99954

8、.00003.99980.727116.00003.99984.00003.99990.727117.00003.99994.00003.99990.727118.00003.99994.00004.00000.727019.00004.00004.00004.00000.727020.00004.00004.00004.00000.72702、迭代法求方程:迭代法输出结果: f=in li ne(cos(s in( x); x0,k=iterate(f,0.5)x0 =0.7682k =15 xO,k=iterate(f,1)x0 =0.7682k =15 x0,k=iterate(f,1.

9、5)x0 =0.7682k =16 x0,k=iterate(f,2)x0 =0.7682k =15 x0,k=iterate(f,2.5)x0 =0.7682k =14(3)、由于该方程无解,所以无法比较误差。2c、g(x)=x -sin(x+0.15)二分法求方程:(1)、在matWb的命令窗口中输入命令:-20-10 -B *6-28010 fplotCQ-si n(x+0.15),-10,10);grid 得下图:由上图可得知:方程在-3,3 区间有根。(2 )、二分法输出结果 f=xA2-s in( x+0.15) f =xA2-s in( x+0.15) bisect(f,-3,3

10、,30,10A(-12)1.0000-3.00003.00000-0.14942.0000-3.00000-1.50003.22573.0000-1.50000-0.75001.12714.0000-0.75000-0.37500.36375.0000-0.37500-0.18750.07266.0000-0.18750-0.0938-0.04747.0000-0.1875-0.0938-0.14060.01048.0000-0.1406-0.0938-0.1172-0.01919.0000-0.1406-0.1172-0.1289-0.004510.0000-0.1406-0.1289-0.

11、13480.002911.0000-0.1348-0.1289-0.1318-0.000812.0000-0.1348-0.1318-0.13330.001113.0000-0.1333-0.1318-0.13260.000114.0000-0.1326-0.1318-0.1322-0.000315.0000-0.1326-0.1322-0.1324-0.000116.0000-0.1326-0.1324-0.13250.000017.0000-0.1325-0.1324-0.1324-0.000018.0000-0.1325-0.1324-0.1325-0.000019.0000-0.132

12、5-0.1325-0.13250.000020.0000-0.1325-0.1325-0.13250.000021.0000-0.1325-0.1325-0.13250.000022.0000-0.1325-0.1325-0.13250.000023.0000-0.1325-0.1325-0.1325-0.000024.0000-0.1325-0.1325-0.13250.000025.0000-0.1325-0.1325-0.1325-0.000026.0000-0.1325-0.1325-0.13250.000027.0000-0.1325-0.1325-0.13250.000028.00

13、00-0.1325-0.1325-0.13250.000029.0000-0.1325-0.1325-0.13250.000030.0000-0.1325-0.1325-0.1325-0.00002、迭代法求方程:迭代法输出结果: f=i nlin e(xA2-si n(x+0.15); x0,k=iterate(f,1.96)x0 =NaNk =12 x0,k=iterate(f,0,2) x0 =-0.1494k =1 x0,k=iterate(f,0.2) x0 =0.3234k =500 x0,k=iterate(f,0.3) x0 =0.3234k =500 xO,k=iterate

14、(f,O.OO1) x0 =0.3234 k =500(3)、误差分析:由二分法和迭代法输出结果可知,利用二分法求出的结果中,可以清楚 看出方程等于零时的解,其误差比迭代法小。x-cos(x)d、g(x)=x二分法求方程:(1)、在matlab的命令窗口中输入命令: fplot(xA(x-cos(x),-1,1);grid得下图:12x 10*10iiir III |Ri 1i141*1ii att iiir1111VIII44114flI9iIIilli8rHI11Il|*diiiiitWill till mini L 一J. , 一LBill |iIVVBBM1lilt I|IIAll*

15、VP1|ill! Illi illiidfill VIl|Illi 11i1vflii1111fill Illi Hill viI1ii|1J _ _ _ J= _ 二=, _ _ _ L4lilt Rill till Mt1Will tiltI1UKlilt-j.1iiii teii 4111Kill till 4flfl1idIII2 v Wr - % - r illVBflitill nitt ttifi1*InIIt Hl till IRBBAt4ftt11 i * 广r 1111 VIII 1111 |111ill! 111 till aii Alli iii14I11till id

16、411-2n V V i| f V | V i t ft A t i 4 I t I i h i i h B | | | l| 1 1 1 1 J1flIII1VIIIliiiiIii|411inflii14I1|_L_L1 OB -0.614-0.200.2040.61由上图可得知:方程在-1,1区间有根。(2 )、二分法输出结果 f=x 人(x-cos(x)xa(x-cos(x) bisect(f,-0.1,0.1,20,10A(-12)Inf1.0000 -0.1000 0.10002.0000-22.8740 + 3.5309i3.0000-43.6821 + 3.3947i4.000

17、0-84.4110 + 3.2958i1.0e+002 *0.0500-1.6511 + 0.0323i1.0e+002 *0.0600-3.2580 + 0.0319i1.0e+002 *0.0700-6.4648 + 0.0317i1.0e+003 *0.0080-1.2872 + 0.0032i1.0e+003 *0.0090-2.5679 + 0.0032i1.0e+003 *0.0100-5.1285 + 0.0031i1.0e+004 *0.0011-1.0249 + 0.0003i1.0e+004 *0.0012-2.0490 + 0.0003i1.0e+004 *0.0013-

18、4.0971 + 0.0003i1.0e+004 *0.0014-8.1931 + 0.0003i1.0e+005 *0.0001-1.6385 + 0.0000i1.0e+005 *0.0002-3.2769 + 0.0000i-0.1000-0.0500-0.0250-0.0001-0.0001-0.0000-0.0000-0.0000-0.0000-0.0000-0.0000-0.0000-0.0000-0.0000-0.0000-0.0500-0.0250-0.0125-0.0001-0.0000-0.0000-0.0000-0.0000-0.0000-0.0000-0.0000-0.

19、0000-0.0000-0.0000-0.0000-0.00001.0e+005 * 0.0002-0.00000-6.5537 + 0.0000i-0.00001.0e+006 * 0.0000-0.00000-1.3107 + 0.0000i-0.00001.0e+006 * 0.0000-0.00000-2.6215 + 0.0000i-0.00001.0e+006 * 0.0000-0.00000-5.2429 + O.OOOOi2、迭代法求方程:迭代法输出结果: f=i nlin e(xA2-si n(x+0.15);x0 =0.3234k =500 x0,k=iterate(f,0.01)x0 =0.3234k =500 x0,k=iterate(f,0.81)x0 =0.3234k =500 x0,k=iterate(f,0.61)x0 =0.3234k =500可以清楚看(3)、误差分析:由二分法和迭代法输出结果可知,利用二分法求出的结果中,出方程等于零时的解,其误差比迭代法小。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号