Matlab &引用;输入参数不足。”;将fsolve与嵌套函数一起使用时

Matlab &引用;输入参数不足。”;将fsolve与嵌套函数一起使用时,matlab,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)

我试图在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
是我想从命令行传递到函数的参数,
x0
fsolve
的起点

但是,当我在指定了
a=4
x0=[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
的文档,它说它确实应该在那里使用函数句柄…

你错过了nle前面的“@”,即

 y = fsolve(@nle,x0);

应该有效。

您错过了nle前面的“@”,即

 y = fsolve(@nle,x0);

应该有用。

谢谢Andreas,我试过了,但似乎还有其他错误:它说“未定义函数'fsolve',用于'function_handle'类型的输入参数。求解错误(第3行)y=fsolve(@nle,x0);”嗯,我的Matlab帮助说fsolve在优化工具箱中。是不是你没有安装这个工具箱?(不幸的是,Matlab基本包中类似的命令fzero仅适用于标量变量)。。。我尝试了一个非常简单的函数,它说fsolve是未定义的。。。似乎我们实验室的版本是课堂版本,因此非常原始。非常感谢!顺便说一句:您陈述的问题是可以解析解决的(以防您的函数不仅仅是一个测试示例)。我认为它没有解,除了a的特定值。因此数值算法(如fsolve)无论如何都不会收敛并发出警告。是的,这只是一个测试示例;)尽管如此,了解警告还是有帮助的。谢谢谢谢Andreas,我试过了,但似乎还有其他错误:它说“未定义函数'fsolve',用于'function_handle'类型的输入参数。solve(第3行)中的错误y=fsolve(@nle,x0);”嗯,我的Matlab帮助说fsolve在优化工具箱中。是不是你没有安装这个工具箱?(不幸的是,Matlab基本包中类似的命令fzero仅适用于标量变量)。。。我尝试了一个非常简单的函数,它说fsolve是未定义的。。。似乎我们实验室的版本是课堂版本,因此非常原始。非常感谢!顺便说一句:您陈述的问题是可以解析解决的(以防您的函数不仅仅是一个测试示例)。我认为它没有解,除了a的特定值。因此数值算法(如fsolve)无论如何都不会收敛并发出警告。是的,这只是一个测试示例;)尽管如此,了解警告还是有帮助的。谢谢