我想从此article复制一个数字。更具体地说,我想复制第4号图,我认为它是公式9的表示。
到目前为止,我已经提出了这个代码:
% implementing equation 9 and figure 4
step = 0.01; t = 1:step:3600;
d = 3; % dimension
N = 8000; % number of molecules
H = 0.01; % H = [0.01,0.1,1] is in mol/micrometer^3
H = H*6.02214078^5; % hence I scaled the Avogadro's number (right or wrong?)
D = 10; % diffusion coefficient in micrometer^2/sec
u(1) = 1./(1.^(d/2)); % inner function in equation 9; first pulse
for i = 2:numel(t)/1000
u(i) = u(i-1)+(1./(i.^(d/2))); % u-> the pulse number
lmda(i) = (1/(4*pi*D))*((N/(H)).*sum(u)).^(2/d);
end
figure;plot(lmda)
但我无法复制它。
公式9
有关参数的详细信息,请参阅上面的代码。作者确实提到等式9中的总和是Reimann Zeta系列。不知道这与结果有什么关系吗?
图4,我试图复制:
有人可以告诉我我犯的错误吗?
P.s:这不是作业。
答案 0 :(得分:4)
问题1:您认为您正在使用此线路上的Avogadro号码进行扩展
H = H*6.02214078^5;
事实上,您按大约7920=6.022^5
进行缩放。如果您想按Avogadro数字进行扩展,那么您应该这样做:
H = H * 6.02214078e23 % = 6.02214078 * 10^23 : the Avogadro number
问题2:您没有针对t
进行策划,您正在针对的样本编号进行绘图,这样做并不合理(除非您的t
恰好是整数秒)。从循环中删除/1000
for i = 2:numel(t)
% ...
end
% Then plot
plot(t, lmda)
在这个阶段,我们可以看到一些错误。现在我们正在按正确的Avo数量进行缩放,数量级已经逐渐消失。我建议你相信图4中的H
,而等式9中的H
是相同的H
,如果作者想要的不同,那将会非常混乱!
在此基础上,我建议您使用错误的D
,N
或脉冲之间的时间。我在下面的代码中设置了更清晰的脉冲时序。我还使用矢量化在某种程度上简化了循环,并删除了H
缩放。
如果你调整它dtPulses=100
以及D=100
,那么这些图几乎是相同的。您可能需要考虑这两个数字如何影响结果...
% implementing equation 9 and figure 4
d = 3; % dimension
N = 8000; % number of molecules
D = 100; % diffusion coefficient in micrometer^2/sec
dtPulses = 10; % Seconds between pulses
tPulses = 1:dtPulses:3600; % Time array to plot against
nt = numel(tPulses);
i = 1:nt; % pulse numbers
u = 1 ./ (i.^(d/2)); % inner function in equation 9: individual pulse
for k = 2:nt % Running sum
u(k) = u(k-1)+u(k);
end
% Now plot for different H (mol/micrometer^3)
H = [0.01, 0.1, 1];
figure; hold on; linestyles = {':k', '--k', '-k'};
for nH = 1:3
lmda = ((1/(4*pi*D))*(N/H(nH)).*u).^(2/d);
plot(tPulses, lmda, linestyles{nH}, 'linewidth', 2)
end