Simulace součinu dvou normálně rozdělených veličin
numerický výpočet konvoluce (Gaussova kvadratura)
from scipy import integrate
def multiple(wid=3,infty=100):
sgau=lambda x:exp(-x**2/wid**2)
n1=integrate.quad(sgau,-infty,infty)
ssqr=lambda x,z: sgau(z/x)*sgau(x)/abs(x)
smul=lambda z:integrate.quad(ssqr,-infty,infty+10,(z,))[0]/n1[0]**2
return smul
x=r_[0.1:5:0.1]
fun=multiple()
plot(x,[fun(p) for p in x])
modifikovaná Besselova funkce 2. druhu ($K_0$)
from scipy import special
x=r_[0.05:5:.05]
plot(x,special.k0(abs(x)))
#special.k0?
v1=normal(size=500)
v12=normal(size=500)
p=r_[-10:10:0.4]
w1=hist(v1,p,alpha=0.3)
w2=hist(v1**2,p,alpha=0.3)
w3=hist(v1*v12,p,alpha=0.3)
porovnání součinu necentrálních Gaussovek
posun vpravo o 1,2,3
w3a=hist((v1+1)*(v12+1),p,alpha=0.4)
w3b=hist((v1+2)*(v12+2),p,alpha=0.4)
w3c=hist((v1+3)*(v12+3),p,alpha=0.4)
Výpočet šikmosti a špičatosti pro součin 2 norm. rozd. veličin s postupně rostoucí střed. hodnotou
def moms(xd):
xm=xd.mean()
x2=((xd-xm)**2).mean()
x3=((xd-xm)**3).mean()/pow(x2,1.5)
x4=((xd-xm)**4).mean()/x2**2-3
return xm,x2,x3,x4
comps=[moms((v1+i)*(v12+i)) for i in range(1,11)]
array(comps).transpose()
acomp=array(comps).transpose()
a=range(1,11)
plot(a,sqrt(acomp[1])/a)
plot(a,acomp[2])
plot(a,acomp[3])
legend(["disp./a","skew","kurt"])
xlabel("necentralnost")
grid()
nahodna promenna: (gaus + A)*(gaus + A)=A^2 + 2A gaus + chi2(1 d.f.)
$\exp(-(x-A)^2/2/s^2)=\exp(-A^2/2/s^2)*\exp(xA/s^2)*\exp(-x^2/2/s^2)$
v2=normal(loc=10,size=1000)
v4=normal(loc=14,size=1000)
w1=hist(v2,10)
w2=hist(v2**2,20)
w4=hist(v4**2,20)