nataf转换求积分问题
mathematica吧
全部回复
仅看楼主
level 1
tong11go 楼主
本人在做nataf转换求相关系数的积分问题,不知为啥一直显示计算错误,程序如下
ClearAll[distx1, distx2, U1, U2, UU1, UU2, t1, t2, deta]
mu1 = 1;
mu2 = 1;
sigma1 = 0.1;
sigma2 = 0.1;
v1 = sigma1/mu1;
v2 = sigma2/mu2;
cs1 = N[Sqrt[Log[1 + v1^2]]];
lmd1 = N[Log[mu1] - 0.5*cs1^2];
distx1 = LogNormalDistribution[lmd1, cs1];
ksolve = FindRoot[
Gamma[1 + 2/k] == (1 + v2^2)*Gamma[1 + 1/k]^2, {k, 0.5, 0.5, 40.}];
alf = k /. ksolve;
ba = mu2/Gamma[1 + 1/alf];
distx2 = WeibullDistribution[alf, ba];
dist0 = NormalDistribution[0, 1];
t1 = 1;
t2 = -1;
UU1 = -mu1*mu2/(sigma1*sigma2) +
1/(2 \[Pi]*sigma1*
sigma2)*(NIntegrate[
Boole[InverseCDF[distx1, CDF[dist0, U1]]*
Quantile[distx2, CDF[dist0, U1]]*
Exp[-(U1^2 + U2^2)/
2] \[DifferentialD]U1 \[DifferentialD]U2], {U1, \
-\[Infinity], \[Infinity]}, {U2, -\[Infinity], \[Infinity]}]);
UU2 = -mu1*mu2/(sigma1*sigma2) + 1/(2 \[Pi]*sigma1*sigma2)*(\!\(
\*SubsuperscriptBox[\(\[Integral]\), \(-\[Infinity]\), \
\(\[Infinity]\)]\(
\*SubsuperscriptBox[\(\[Integral]\), \(-\[Infinity]\), \
\(\[Infinity]\)]Quantile[distx1, CDF[dist0, U1]]*
Quantile[distx2, CDF[dist0, \(-U1\)]]*
Exp[\(-\((U1^2 + U2^2)\)\)/
2] \[DifferentialD]U1 \[DifferentialD]U2\)\));
但结果一直输出不了,好像是存在分段函数,请大神帮忙看看怎么回事,万分感激!~
2020年02月17日 14点02分 1
level 1
tong11go 楼主
2020年02月17日 14点02分 2
吧务
level 10
你做的领域我完全不了解,稍微看了一眼,感觉InverseCDF第二参数的用法和Boole的出现比较奇怪
2020年02月19日 13点02分 3
1