声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1267|回复: 2

[编程技巧] 如何积出如下积分?

[复制链接]
发表于 2006-8-24 20:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
syms x y p s1 s2
f = exp(-(x^2/s1^2-2*p*x*y+y^2/s2^2)/(2*(1-p^2)))/(2*pi*s1*s2*sqrt(1-p^2));
midf=int(abs(x*y)*f,y,-inf,inf);                %先对y求积分
result=int(midf,x,-inf,inf);                        %再对x求积分
在对y积分时出现这样的情况:
midf =
int(1/2*abs(x*y)*exp((-x^2/s1^2+2*p*x*y-y^2/s2^2)/(2-2*p^2))/pi/s1/s2/(1-p^2)^(1/2),y = -Inf .. Inf)
自然再对x求积分就进行不下去了。
发现若去掉积分上下限 –inf 和 inf,采用默认的上下限,即
midf =int(abs(x*y)*f,y);                        %先对y求积分
result=int(midf,x);                        %再对x求积分
处理时,对y积分得到如下结果:
midf =
1/4/pi/s1*s2/(1-p^2)^(1/2)*x*signum(x*y)*(-2*exp(1/2*(y^2*s1^2-2*p*x*y*s2^2*s1^2+x^2*s2^2)/s2^2/(p+1)/(p-1)/s1^2)+2*exp(1/2*(y^2*s1^2-2*p*x*y*s2^2*s1^2+x^2*s2^2)/s2^2/(p+1)/(p-1)/s1^2)*p^2+p*x*(2-2*p^2)^(1/2)*s2*pi^(1/2)*exp(-1/2*x^2*(p*s2*s1-1)*(p*s2*s1+1)/(p-1)/(p+1)/s1^2)*erf((y-p*x*s2^2)/s2/(2-2*p^2)^(1/2)))
结果中出现了signum()函数,不认识,不知如何理解,还有误差函数erf(),接下来对x积分,matlab不认识signum,对erf()积分也会出错

请高手指点,如何才能得到所要求的积分,谢!
111.JPG
回复
分享到:

使用道具 举报

发表于 2006-8-24 21:04 | 显示全部楼层
signum是符号计算中的符号取值函数,其含义和数值计算中的sign一致

对Inf积分的时候无法进行的话估计可能是该积分不收敛,不太了解你这个方程的背景,所以没办法给出确切的答案

这个问题你可以尝试采用数值积分求解

[ 本帖最后由 happy 于 2006-8-24 21:07 编辑 ]
 楼主| 发表于 2006-8-24 21:47 | 显示全部楼层
f(x,y)为x,y分布的联合概率密度,服从N(0,0,s1^2,s2^2,p)的二维正态分布,s1,s2分别为标准方差,p为相关系数
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-10-4 07:25 , Processed in 0.064567 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表