二分法代码中的错误

时间:2017-10-22 07:16:50

标签: matlab

我使用了二分法的代码,它应该是有效的,不幸的是它不是,我不知道是什么问题。此代码还包括用户定义的精度和迭代次数的计数器。我得到的错误是代码中的最后一行:未定义的函数或变量'c'。

a=-5;
b=0;
tol = input('What precision would you like? ','s')
fa=a^3-20+exp(a);
fb=b^3-20+exp(b);
counter=1
while abs(b-a) > tol
  c=(a+b)/2;
  fx = c*c-2;
  if fa*fc<0
      b=c;
      fb=fc;
  elseif fb*fc<0
      a=c;
      fa=fc;
  else
      break
  end
  fprintf('Just finished iteration #%d\n', counter);
  counter=counter+1;
end
x=c;

1 个答案:

答案 0 :(得分:1)

由于您将input作为字符串加载(带有s参数),因此tol变量将是一个字符数组。例如,为当前脚本输入1E-10会将tol定义为字符数组,while构造中对表达式的第一次评估将等同于

>> abs(0 - -5) > '1E-10'
ans =
     0     0     0     0     0

因此完全跳过while循环。

因此,请从s来电中移除input,或将input来电换入str2double