我已经确认问题在于尝试计算GLonball_2,但我不知道它为什么会产生错误。函数funct_2应该只返回实数。至于"与输入相同的大小"部分,我不认为我正确地解释了错误信息。 funct_2接受两个参数并返回一个值,但funct_1也是如此,它没有引起错误,所以不是它。有人可以解释一下吗?这是我的代码:
function GLonball = GLonball(alpha)
epsilon = 1;
rmin = 0;
rmax = 1;
thmin = 0;
thmax = 2*pi;
funct_1 = @(r,th) (2).*(abs(alpha).^2-1).^(2)./abs(1-conj(alpha).*r.*exp(i.*th)).^4;
GLonball_1 = dblquad(funct_1, rmin, rmax, thmin, thmax);
funct_2 = @(r,th) (abs(alpha.-r.*exp(i.*th))/abs(1-conj(alpha).*r.*exp(i.*th))).^2;
GLonball_2 = dblquad(funct_2, rmin, rmax, thmin, thmax);
GLonball = .5*GLonball_1 + (1/((4).*epsilon^2))*GLonball_2;
end
这是我尝试为0到1之间的任何输入参数(感兴趣的区域)运行它时收到的错误:
error: quadcc: integrand F must return a single, real-valued vector of the same
size as the input
error: called from:
error: C:\Software\Octave-3.6.4\share\octave\3.6.4\m\general\dblquad.m at line
72, column 10
error: at line -1, column -1
error: quadcc: integrand F must return a single, real-valued vector
error: C:\Software\Octave-3.6.4\share\octave\3.6.4\m\general\dblquad.m at line
65, column 5
error: C:\Software\Octave-3.6.4\GLonball.m at line 10, column 13
答案 0 :(得分:1)
.-在上面的评论中没有必要,但它不会导致Octave中的任何错误。它会在Matlab中给出语法错误。同样地,/而不是./是给你主要错误的东西。
更改了这两个功能后,您的功能在Octave 4.0.0和Matlab 2015a中都运行良好。
GLonball(1)
ans = 1.5708