好,所以我定义了函数MetBisectiei,它具有以下代码:
function [xaprox] = MetBisectiei(Fun,a,b,eps)
Fa = Fun(a);
Fb = Fun(b);
if Fa*Fb>0
xaprox = ('Error: The function has the same sign at points a and b.');
else
N=ceil((log10(b-a)-log10(eps))/log10(2));
for i = 1:n
xaprox = (a+b)/2;
Fxaprox=Fun(xaprox);
if(Fxaprox == 0)
break
end
if Fa*Fxaprox<0
b=Fxaprox;
else
a=xaprox;
Fa=Fxaprox;
end
end
end
当我尝试实际使用该函数查找方程式的解时,出现以下错误,该错误实际上并不能解释问题所在:
Error in tema2_2 (line 8)
xaprox = MetBisectiei(f,0,1,eps);
找到方程式解的代码是这样的:
syms x
f = x^3-7*x^2+14*x-6;
f = matlabFunction(f);
x = 0:4;
y = f(x);
plot(x,y);
eps = 10^(-5);
xaprox = MetBisectiei(f,0,1,eps);
答案 0 :(得分:1)
我在这里看到的错误很少。首先,您应该终止
end
使用if
,在您的示例中可见的那个只需关闭n
语句。第二个问题是N
未定义,可能您错过了matlab区分大小写的情况,并且n
不等于n=ceil((log10(b-a)-log10(eps))/log10(2));
。所以你应该:
xaprox = 0.5210
如果您解决了这两个问题-您的代码完成无误,({{1}})已在Matlab R2017b上进行了测试。