为什么我在 Matlab 中出现 'output argument not assigned during call to' 错误

Why am I getting 'output argument not assigned during call to' error in Matlab

我有一个函数可以找到函数的临界点。

function [ cr ] = CritPt(f, var1, var2)
f = sym(f);
fx = diff(f,var1);
fy = diff(f,var2);
[xcr,ycr] = solve(fx,fy);
crpt = [xcr,ycr]

我应该在命令 Window 中使用函数 CritPt 来定义一个名为 cp 的变量,它包含 f(x,y)=x^2*y+(1-y) 的临界点^2

当我尝试这样做时,我得到:

>> cp=CritPt('x^2*y+(1-y)^2','x','y')

crpt =

[        0, 1]
[  2^(1/2), 0]
[ -2^(1/2), 0]

Error in CritPt (line 2)
f = sym(f);

Output argument "cr" (and maybe others) not assigned
during call to
"C:\Users\GTAV\Documents\MATLAB\CritPt.m>CritPt".

我已经尝试了很多替代方案,例如 syms cp= [cp] = 等等,但显然有一些我不理解的地方。任何帮助将不胜感激

您在命令 window.

中正确使用了函数

问题出在函数 CritPt 本身:您需要为变量 cr 赋值。函数完成后,它会尝试 return 您在 function 之后列出的任何变量的值,但如果该变量不存在,则会出现错误。

如果你想return最后一行的变量值,那么把你的最后一行改为

cr = [xcr,ycr]

或者,您可以保留最后一行,但更改第一行,这样您 return crpt:

function [ crpt ] = CritPt(f, var1, var2)