1——matlab——二分法求解非线性方程的近似解

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

二分法求解非线性方程的近似解: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

相关文档
最新文档