matlab二分法求解非线性方程精度的问题clear all;clc;a=0.05;b=0.2;fa=fun(a);fb=fun(b);m=(a+b)/2;esp=0.00001;tic;if fa==0;m=a;fzhi=fa;elseif fb==0;m=b;fzhi=fb;else n=1;while abs(a-b)>epsm=(a+b)/2;if fa*fun(m)>0a=m;fa=fun(m);elseif fb*fun(m
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/19 08:55:45
matlab二分法求解非线性方程精度的问题clear all;clc;a=0.05;b=0.2;fa=fun(a);fb=fun(b);m=(a+b)/2;esp=0.00001;tic;if fa==0;m=a;fzhi=fa;elseif fb==0;m=b;fzhi=fb;else n=1;while abs(a-b)>epsm=(a+b)/2;if fa*fun(m)>0a=m;fa=fun(m);elseif fb*fun(m
matlab二分法求解非线性方程精度的问题
clear all;
clc;
a=0.05;
b=0.2;
fa=fun(a);
fb=fun(b);
m=(a+b)/2;
esp=0.00001;
tic;
if fa==0;
m=a;
fzhi=fa;
elseif fb==0;
m=b;
fzhi=fb;
else
n=1;
while abs(a-b)>eps
m=(a+b)/2;
if fa*fun(m)>0
a=m;
fa=fun(m);
elseif fb*fun(m)>0
b=m;
fb=fun(m);
else
break
end
e=abs(a-b)
m
fm=fun(m)
n=n+1;
end
end
toc;
answer=m
n
其中fun.m为
function f=fun(x)
f=1000*exp(x)+(435/x)*(exp(x)-1)-1564;
end
设定的eps=0.00001,为什么结果中abs(a-b)达到了1.2490e-16才停止呢?
matlab二分法求解非线性方程精度的问题clear all;clc;a=0.05;b=0.2;fa=fun(a);fb=fun(b);m=(a+b)/2;esp=0.00001;tic;if fa==0;m=a;fzhi=fa;elseif fb==0;m=b;fzhi=fb;else n=1;while abs(a-b)>epsm=(a+b)/2;if fa*fun(m)>0a=m;fa=fun(m);elseif fb*fun(m
你设置的是esp,请注意eps是‘e’‘p’‘s’,不是esp程序中两个变量不一样