“没有足够的输入参数。”使用嵌套函数的fsolve时

时间:2012-10-23 14:55:40

标签: matlab

我试图在matlab中创建自己的函数来解决两个非线性方程组的系统,同时使用嵌套函数来共享一些参数,这里是一个示例代码:

function y=solve(a,x0)
a;
y=fsolve(nle,x0);                       % this is line 3

    function f=nle(x)
        f(1)=x(1)-a*x(1)^2-x(1)*x(2);   % this is line 6
        f(2)=2*x(2)-x(2)+3*x(1)*x(2);
    end

end

此处a是我要从命令行传递给函数的参数,x0fsolve的起点。

但是,当我在指定a=4x0=[1 1]'后调用malab中的函数时,它给了我以下错误:

Error using solve/nle (line 6)
Not enough input arguments.

Error in solve (line 3)
y=fsolve(nle,x0);

我是matlab的新手,有人能告诉我我做错了什么吗?

提前致谢。

修改 我尝试用函数句柄nle替换@nle,但似乎出现了其他问题:

Undefined function 'fsolve' for input arguments of type 'function_handle'.

Error in solve (line 3)
y=fsolve(@nle,x0);

自检查fsolve的文档后似乎没有意义,它说它确实应该使用函数句柄......

1 个答案:

答案 0 :(得分:4)

你错过了nle前面的'@',即

 y = fsolve(@nle,x0);

应该有用。