我正在尝试为Bisection方法编写程序,但我还没有完全理解如何正确定义函数并运行脚本。我搜索了谷歌并观看了关于这些内容的YouTube视频和MATLAB教程,但我只是不明白。我希望有人在我提交我的代码后能够帮助我,以及我得到的错误消息,以及我期望看到的内容......
代码:
function [f] = Bisection(a,b,Nmax,TOL)
f(x)= x^3 - x^2 + x;
i=1;
BisectA=f(a);
while i <= Nmax
p=a+(b-a)/2;
BisectP=f(p);
if BisectP == 0 || (b-a)/2 < TOL
disp('p');
end
i=i+1;
if BisectA*BisectP > 0
a=p;
BisectA=BisectP;
else
b=p;
end
end
disp('Method failed after num2str(Nmax) iterations, Nmax=', Nmax);
当我运行此代码时,收到错误消息:
??? Undefined function or variable 'x'.
Error in ==> Bisection at 2
f(x)= x^3 - x^2 + x;
我无法弄清楚如何来定义'x'?另外,我应该创建多个功能吗?我想将它们全部放在一个文件中。
感谢。
答案 0 :(得分:1)
您发生了错误,因为x
确实未定义。如果你试图创建一个以x
作为参数的anonymous function,你就会这样做:
f = @(x)x.^3-x.^2+x;
然后您可以像以后一样致电f(a)
。另一个潜在问题是您的Bisection
函数正在返回f
。你想让它返回函数句柄吗?
答案 1 :(得分:0)
f = @(x)(x.^3 - x.^2 + x);
然后将您的主要功能定义为
function [f0] = Bisection(@f,a,b,Nmax,TOL)