这是一个令人难以置信的平凡集成,但由于某种原因,我无法发现错误。我只是在球坐标中执行一个简单的 3d 积分,它应该返回 1.0 的值:
Nr = N;
Nt = round(pi*N);
Np = round(2*pi*N);
rs = linspace(R0, Rf, Nr);
ts = linspace(0, pi, Nt);
ps = linspace(0, 2*pi, Np);
dr = rs(2)-rs(1);
dt = ts(2)-ts(1);
dp = ps(2)-ps(1);
%fprintf('Total number of nodes: %i\n', Nr*Nt*Np);
C = 1/((4/3)*pi);
fint = 0.0;
for ir = 2:Nr
r = rs(ir);
r2dr = r*r*dr;
for it = 1:Nt-1
t = ts(it);
sintdt = sin(t)*dt;
for ip = 1:Np-1
p = ps(ip);
fint = fint + C*r2dr*sintdt*dp;
end
end
end
这与
我在哪里
因为这是球体体积的倒数。
但是,我发现我返回的整数值有一个一致的错误,大约是(1/N)/(1.0 - numeric_integral) ~= 0.66. 所以我在某个地方犯了一个错误,但我不知道在哪里或为什么。
