MATLAB - 正确定义函数和运行脚本

时间:2013-12-16 02:08:06

标签: matlab

我正在尝试为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'?另外,我应该创建多个功能吗?我想将它们全部放在一个文件中。

感谢。

2 个答案:

答案 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)