我试图在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
的文档后似乎没有意义,它说它确实应该使用函数句柄......
答案 0 :(得分:4)
你错过了nle前面的'@',即
y = fsolve(@nle,x0);
应该有用。