二分法、简单迭代法地matlab代码实现.docVIP

  • 60
  • 0
  • 约8.48千字
  • 约 10页
  • 2019-01-03 发布于安徽
  • 举报

二分法、简单迭代法地matlab代码实现.doc

实用标准文案 精彩文档 实验一 非线性方程的数值解法(一) 信息与计算科学金融 崔振威 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); disp( [ n xa xb xc fc ]); for i=1:n xc=(xa+xb)/2;x=xc;fc=eval(fx); X=[i,xa,xb,xc,fc]; disp(X), if fc*fa0 xb=xc; else xa=xc; end if (xb-xa)delta,break,end end (二)、简单迭代法程序: function [x0,k]=iterate (f,x0,eps,N) if nargin4 N=500; end if nargin3 ep=1e-12; end x=x0; x0=x+2*eps; k=0; while abs(x-x0)eps kN x0=x; x=feval(f,x0); k=k+1; end x0=x; if k==N end 解:a、g(x)=x5-3x3-2x2+2 二分法求方程: (1)、 在matlab的命令窗口中输入命令: fplot([x^5-3*x^3-2*x^2+2],[-3,3]);grid 得下图: 由上图可得知:方程在[-3,3]区间有根。 (2)、二分法输出结果 f=x^5-3*x^3-2*x^2+2 f = x^5-3*x^3-2*x^2+2 bisect(f,-3,3,20,10^(-12)) 2.0000 -3.0000 0 -1.5000 0.0313 3.0000 -3.0000 -1.5000 -2.2500 -31.6182 4.0000 -2.2500 -1.5000 -1.8750 -8.4301 5.0000 -1.8750 -1.5000 -1.6875 -2.9632 6.0000 -1.6875 -1.5000 -1.5938 -1.2181 7.0000 -1.5938 -1.5000 -1.5469 -0.5382 8.0000 -1.5469 -1.5000 -1.5234 -0.2405 9.0000 -1.5234 -1.5000 -1.5117 -0.1015 10.0000 -1.5117 -1.5000 -1.5059 -0.0343 11.0000 -1.5059 -1.5000 -1.5029 -0.0014 12.0000 -1.5029 -1.5000 -1.5015 0.0150 13.0000 -1.5029 -1.5015 -1.5022 0.0068 14.0000 -1.5029 -1.5022 -1.5026 0.0027 15.0000 -1.5029 -1.5026 -1.5027 0.0007 16.0000 -1.5029 -1.5027 -1.5028 -0.0003 17.0000 -1.5028 -1.5027 -1.5028 0.0002 18.0000 -1.5028 -1.5028 -1.5028 -0.0001 19.0000 -1.5028 -1.5028 -1.5028 0.0001 20.0000 -1.5028 -1.5028 -1.5028 -0.0000 2、迭代法求方程: 迭代法输出结果: f=inline(x^5-3*x^3-2*x^2+2); [x0,

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档