我想获得MATLAB
中各点的v(U,n0)
值
eq = @(q,U,n0) 2*(1-cos(2*pi*q));
hq = @(q,U,n0) ((eq)^2+2*U*n0*(eq))^(1/2);
y = @(q,U,n0) (((eq)+(U*n0))/hq)-1;
a = -0.5;
b = 0.5;
v = @(U,n0) quad(@(q) y(q,U,n0),a,b);
但我收到很多错误,比如
>> v(1,2)
Undefined function 'plus' for input arguments of type 'function_handle'.
Error in @(q,U,n0)(((eq)+(U*n0))/hq)-1
Error in @(q)y(q,U,n0)
Error in quad (line 72) y = f(x, varargin{:});
Error in @(U,n0)quad(@(q)y(q,U,n0),a,b)
有人可以帮我解决错误吗?
答案 0 :(得分:4)
您正在使用函数句柄而未指定其参数。例如,在您定义eq(q,U,n0)
后,您可以在hq
中使用它,就像变量(eq
)一样,没有任何输入。无论何时使用函数,都必须为其提供输入,因此请使用eq(q,U,n0)
,而不仅仅是eq
。