日博官网

NLP工具屋,专注NLP教练技术8年,为您自学NLP,教练技术助力打气!

1-matlab-二分法求解非线性方程的近似解.doc 3页

  二分法求解非线性方程的近似解:M-文件funn1+fun

  程序:

  function [x0 fval]=funn1(fun,a,b,D)

  if nargin<3

  error('a and b should redefinated');

  else if nargin==3

  D=1e-6;

  end

  end

  fa=feval(fun,a);

  fb=feval(fun,b);

  if fa*fb>0

  error('this equation has no answer');

  else if fa==0

  m=a;

  fm=fa;

  else if fb==0

  m=b;

  fm=fb;

  else

  while abs(b-a)>D

  m=(a+b)/2;

  fm=feval(fun,m);

  if fa*fm>0

  a=m; fa=fm;

  else if fb*fm>0

  b=m; fb=fm;

  else if fm==0

  break;

  end

  end

  end

  end

  end

  end

  end

  x0=m;%用x0来表示非线性方程的最终近似解,如果没有准确解,则取最终区间的中点作为近似解。

  fval=fm;%fval来表示近似解处的函数值。

  if nargout==2

  fval=fm;

  end

  M-文件定义函数fun:

  function f=fun(x)

  f=x^3*cos(x)+2*x^2-2*sin(x);

  结果

  x0=2.3978

  fval=-4.1724e-006