【发布时间】:2017-08-10 19:48:28
【问题描述】:
我正在尝试使用 MATLAB 绘制以下方程的错误概率,我想使用命令 trapz 进行数值积分,问题是我得到了一个很好的绘图形状,但是值在 y 轴上是错误的,整个曲线应该在 0 和 1.2 之间,但它在 0.492 和 0.5 之间!!谁能告诉我我的代码有什么问题,或者只是给我一个提示?我真的需要帮助。这是我需要绘制的公式(使用 Maketex 编写):
这是我的代码:
close all; clear;clc;
Nr=2;Ns=2;
lmda1=.3; lmda2=.3;
lmdas=.1; lmdar=.1;
z= 0.0001:1:40;
k1=2;k2=2;
kr=2.*Nr;ks=2.*Ns;
ax=0;
avg=0.0001:1:40;
em=1;
ch=2;
for alp=1-k1.*.5:ch
for beta=1-k2.*.5:ch
for eta=0:ch
for N=0:ch
for M=0:ch
for Q=0:ch
for id=0:eta
for jd=0:N
for A=0:N-jd
%
up=.25.*exp(-lmda1./2).*(lmda1./2).^(alp).*(lmda2.^2./(4)).^(beta./2).*exp(-lmda2./2).*(lmda1./(4.*em.*avg)).^eta.*(lmda2./(4.*em.*avg)).^N.*exp(-lmdas.*Ns.*.5).*.25.^(ks.*.25-.5).*exp(-lmdar.*Nr.*.5).*.25.^(kr.*.25-.5).*(Ns.*lmdas.*.25).^M.*(Nr.*lmdar.*.25).^Q;
cy=up.*(1./(factorial(eta).*factorial(N).*factorial(M).*factorial(Q).*gamma(eta+alp+1).*gamma(N+beta+1).*gamma(M+ks.*.5).*gamma(Q+kr.*.5)));
cj=cy.*(factorial(eta)./(factorial(id).*factorial(eta-id))).*(factorial(N)./(factorial(jd).*factorial(N-jd))).*gamma(M+id+jd+ks.*.5);
f1=(cj.*(factorial(N-jd)./(factorial(A).*factorial(N-jd-A))).*em.^A.*(((em+1).^(N-jd-A))).*gamma(kr.*.5+Q+A));
f2=f1.*(2.^(kr.*.5+Q+A)).*avg.^(eta+N);
ax=ax+f2;
end
end
end
end
end
end
end
end
end
q2=2;n2=2;N2=1;eta2=1;
fun2 = exp(-z.*avg.*(1+1.5./avg)).*z.^(eta2+N2-1./2).*(1./((1+z).^(q2).*(1./2+z).^(n2)));
out= trapz(z,fun2);
b=.5.*(1-ax.*(1./sqrt(pi)).*out.*avg.^(1./2));
plot(avg,b);grid;
【问题讨论】:
-
看你怎么说形状是正确的,但值是错误的,看来你的归一化有问题(即,将所有内容乘以某个错误的常数)。您可以“作弊”,只需将
plot(avg,b)更改为plot(avg,(b-min(b))/(max(b)-min(b))*1.2)... -
@Dev-iL 我不能在这样的事情上作弊!!这个很重要。我知道错误很小,但我真的尝试了一切,我找不到错误。
-
积分是总和的一部分,还是在 sigma 项之外并使用一组独立的参数?
-
@Yvon 我都试过了,但我认为它应该在里面,因为它包含 eta 和 N 以及在 for 循环中定义的其他变量。
-
您可能想要修复 TeX 代码中的最后一个右括号;它不应该是上标,甚至可以完全省略。
标签: matlab plot numerical-methods axis-labels numerical-integration