二分法、简单迭代法的matlab代码实现_第1页
二分法、简单迭代法的matlab代码实现_第2页
二分法、简单迭代法的matlab代码实现_第3页
二分法、简单迭代法的matlab代码实现_第4页
二分法、简单迭代法的matlab代码实现_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、p(' nxaxbxcfc ');for i=1:nxc=(xa+xb)/2;x=xc;fc=eval(fx);X=i,xa,xb,xc,fc;disp(X),if fc*fa<0xb=xc;else xa=xc;endif (xb-xa)<delta,break,endend(二)、简单迭代法程序:function x0,k=iterate (f,x0,eps,N)if nargin<4N=500;endif nargin<3ep=1e-12;endx=x0;x0=x+2*eps;k=0;while abs(x-x0)>eps & k&l

3、t;N x0=x;x=feval(f,x0);k=k+1;endx0=x;if k=N end 解:a、 g(x)=x5-3x3-2x2+2二分法求方程:(1)、 在matlab的命令窗口中输入命令:>> fplot('xA5-3*xA3-2*xA2+2',-3,3);grid得下列图:由上图可得知:方程在-3,3区间有根.(2)、二分法输出结果>> f='xA5-3*xA3-2*xA2+2' f =xA5-3*xA3-2*xA2+2>> bisect(f,-3,3,20,10A(-12)2.0000-3.00000-1.50

4、000.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-1.5000-1.5117-0.101510.0000-1.5117-1.5000-1.5059-0.034311.0000-1.5059-1.5

5、000-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.0000-1.5028-1.5028-1.5028-0.000119.0000-1.5028-1.5028-1.50280.000120.0000-1

6、.5028-1.5028-1.5028-0.00002、迭代法求方程:迭代法输出结果:>> f=inline('xA5-3*xA3-2*xA2+2');>> x0,k=iterate(fun1,2)x0 =2k =1>> x0,k=iterate(fun1,1.5)x0 =NaNk =6>> x0,k=iterate(fun1,2.5)x0 =NaNk =5(3)、误差分析:由二分法和迭代法输出结果可知,通过定点迭代法得出方程的解误差比二分法大,而利用二分法求出的结果中,可以清楚看出方程等于零时的解,其误差比迭代法小.b、g(x)

7、=cos(sin(x)二分法求方程:(1)、 在matlab的命令窗口中输入命令:>> fplot('cos(sin(x)',-4,4);grid得下列图:由上图可得知:方程在-4,4区间无根.(2)、二分法输出结果>>f='cos(sin(x)' f =cos(sin(x)>> bisect(f,-4,4,20,10A(-12)2.000004.00002.00000.61433.00002.00004.00003.00000.99014.00003.00004.00003.50000.93915.00003.50004.0

8、0003.75000.84116.00003.75004.00003.87500.78427.00003.87504.00003.93750.75548.00003.93754.00003.96880.74129.00003.96884.00003.98440.734110.00003.98444.00003.99220.730511.00003.99224.00003.99610.728812.00003.99614.00003.99800.727913.00003.99804.00003.99900.727514.00003.99904.00003.99950.727315.00003.9

9、9954.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=inline('cos(sin(x)');>> x0,k=iterate(f,0.5)x0 =0.7682k =15>> x0,k=iterate(f,

10、1)x0 =0.7682k =15>> x0,k=iterate(f,1.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)、由于该方程无解,所以无法比拟误差.c、g(x)=x2-sin(x+0.15)二分法求方程:(1)、 在matlab的命令窗口中输入命令:>> fplot('xA2-sin(x+0.15)',-10,10);grid得下列图:-10 -B *64-20246810由上图可得知:

11、方程在-3,3区间有根.(2)、二分法输出结果>> f='xA2-sin(x+0.15)' f =xA2-sin(x+0.15)>> bisect(f,-3,3,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.14

12、060.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.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.

13、1324-0.13250.000017.0000-0.1325-0.1324-0.1324-0.000018.0000-0.1325-0.1324-0.1325-0.000019.0000-0.1325-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-

14、0.1325-0.1325-0.1325-0.000026.0000-0.1325-0.1325-0.13250.000027.0000-0.1325-0.1325-0.13250.000028.0000-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=inline('xA2-sin(x+0.15),);>> x0,k=iterate(f,1.96)x0 =NaNk =12>

15、;> 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>> x0,k=iterate(f,0.001)x0 =0.3234k =500(3)、误差分析:由二分法和迭代法输出结果可知,利用二分法求出的结果中,可以清楚 看出方程等于零时的解,其误差比迭代法小.x-cos(x)d、g(x)=x ''二分法求方程:(1)、 在matlab的命令窗口中输入命令:>>

16、 fplot('xA(x-cos(x)',-1,1);grid得下列图:1210864202x10LLLLLLLL-08-06-04-02()02040608由上图可得知:方程在-1,1区间有根.(2)、二分法输出结果>> f='xA(x-COS(x)'f =xA(x-COS(x)>> bisect(f,-0.1,0.1,20,10A(-12)1.0000-0.10000.1000Inf2.0000-0.10000-0.0500-22.8740 + 3.5309i3.0000-0.05000-0.0250-43.6821 + 3.3947

17、i4.0000-0.02500-0.0125-84.4110 + 3.2958i1.0e+002 *0.0500-0.00010-0.0001-1.6511 + 0.0323i1.0e+002 *0.0600-0.00010-0.0000-3.2580 + 0.0319i1.0e+002 *0.0700-0.00000-0.0000-6.4648 + 0.0317i1.0e+003 *0.0080-0.00000-0.0000-1.2872 + 0.0032i1.0e+003 *0.0090-0.00000-0.0000-2.5679 + 0.0032i1.0e+003 *0.0100-0.0

18、0000-0.0000-5.1285 + 0.0031i1.0e+004 *0.0011-0.00000-0.0000-1.0249 + 0.0003i1.0e+004 *0.0012-0.00000-0.0000-2.0490 + 0.0003i1.0e+004 *0.0013-0.00000-0.0000-4.0971 + 0.0003i1.0e+004 *0.0014-0.00000-0.0000-8.1931 + 0.0003i1.0e+005 *0.0001-0.00000-0.0000-1.6385 + 0.0000i1.0e+005 *0.0002-0.00000-0.0000-3.2769 + 0.0000i1.0e+005 *-0.00000.0002-0.00000-6.5537 + 0.0000i1.0e+006 *-0.00000.0000-0.00000-1.3107 + 0.0000i1.0e+006 *-0.00000.0000-0.00000-2.6215 + 0.0000i1.0e+006 *-0.00000.0000-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论