Matlab &引用;输入参数不足。”;将fsolve与嵌套函数一起使用时
我试图在matlab中创建自己的函数来求解两个非线性方程组,同时使用嵌套函数共享一些参数,下面是一个示例代码: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)
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)无论如何都不会收敛并发出警告。是的,这只是一个测试示例;)尽管如此,了解警告还是有帮助的。谢谢