matlab二分法求解非线性方程精度的问题
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/08/25 22:37:21
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才停止呢?
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才停止呢?
你设置的是esp,请注意eps是‘e’‘p’‘s’,不是esp程序中两个变量不一样