글쎄, 티카의 상징적 표현을 다루는, 그것은 대략적인 숫자, 정확한 일을 계속 즉 않도록하는 것이 가장 좋습니다 :
In[56]:= cvr =
First[Solve[{10 x + y == u, (10 y - x)/101 == v}, {x, y}]]
Out[56]= {x -> (10 u)/101 - v, y -> u/101 + 10 v}
: 문제를 공격하기 위해
In[36]:= pdf = PiecewiseExpand[Rationalize[E^(-(x^2/2) - y^2/2)*
(-1 + E^(-1.*(x + 0.1*y)*UnitStep[x + 0.1*y]))^2],
Element[{x, y}, Reals]]
Out[36]= Piecewise[{{E^(-2*x - x^2/2 - y/5 - y^2/2)*(-1 +
E^(x + y/10))^2, 10*x + y >= 0}}, 0]
를,이 변수를 변경하는 것이 좋습니다
In[42]:= jac = Simplify[Det[Outer[D, {x, y} /. cvr, {u, v}]]]
Out[42]= 1
: 계수가 코비안 있도록 선택되었는지
공지 화합 인 지금 변수 'U'이고 'v에'
In[45]:= npdf = FullSimplify[jac*pdf /. cvr]
Out[45]= Piecewise[{{E^(-(u/5) - u^2/202 - (101*v^2)/2)*(-1 +
E^(u/10))^2, u >= 0}}, 0]
는 독립적 인 : 변수의 변경 후 414,, 당신은 밀도가 제품에 factorizes 것을 알 수있다. 'v'변수는 NormalDistribution[0, 1/101]
이고 'u'변수는 좀 더 복잡하지만 이제는 ProbabilityDistribution
으로 처리 할 수 있습니다.{u,v}
와 {x,y}
사이의 관계를 알고 있기 때문에
dist = ProductDistribution[NormalDistribution[0, 1/101],
ProbabilityDistribution[updf, {u, 0, Infinity}]];
이 {x,y}
의 생성이 variates
은 간단하다 :
XYRandomVariates[len_] :=
RandomVariate[dist, len].{{-1, 10}, {10/101, 1/101}}
In[53]:= updf =
Refine[npdf/nc, u >= 0]/PDF[NormalDistribution[0, 1/Sqrt[101]], v]
Out[53]= (E^(-(u/5) - u^2/202)*(-1 + E^(u/10))^2*Sqrt[2/(101*Pi)])/
(1 - 2*E^(101/200)*Erfc[Sqrt[101/2]/10] +
E^(101/50)*Erfc[Sqrt[101/2]/5])
그래서 당신은 지금 벡터 {u,v}
의 공동 분배를 정의 할 수 있습니다 축적 된 지식을 TransformedDistribution
:을 사용하여 캡슐화 할 수 있습니다.
origdist =
TransformedDistribution[{(10 u)/101 - v,
u/101 + 10 v}, {Distributed[v, NormalDistribution[0, 1/101]],
Distributed[u, ProbabilityDistribution[updf, {u, 0, Infinity}]]}];
예컨대 :
In[68]:= Mean[RandomVariate[origdist, 10^4]]
Out[68]= {1.27198, 0.126733}
더 완전한 문제의 진술과 그것을 해결하는 접근 방식을 볼 유용 할 것이다. 그러나 변수에 대한 주 변화는 밀도를 대수 양식으로 사용하는 경우 Mathematica가 수행 할 수있는 통합을 통해 이루어집니다. 또는 주 변화가 소외 대상이 될 변수에 대해 전혀 알지 못하는 척도로 간주하는 것이 유용 할 수 있습니다. – Microserf