sérsic表面亮度分布的精确反投影。
sersic的Python项目详细描述
#-*-编码:utf-8-*-
==
sérsic
=
这是sérsic表面精确投影的实现,如:
"投影sérsic模型的解析表达式"中所述。/abs/1009.4713
此代码依赖于mpmath python库
(http://mpmath.googlecode.com)来实现baes和gentile(以下简称b+g)公式所需的meijer g
函数,用于sérsic索引的
有理值。b+g也给出了非有理sérsic指数的公式,但我找不到所需的fox h函数的实现。因此,这段代码需要有理
sérsic指数,但任何无理数都可以用某个有理数任意逼近
,所以…没问题。
代码也依赖于scipy(http://scipy.org),但依赖性主要用于测试:进行数值积分等等。如果您相信代码通过了测试,并且不想自己运行它们(ha!),对scipy的唯一依赖是在函数bg_constants()中找到根
(scipy.optimize.newton),它很容易被替换。
《皇家天文学会月报》,424:635(2012年)
http://arxiv.org/abs/1205.2533
b+g公式并不简单,但并不十分复杂。但是,我想确定我已经正确地实现了公式
(并且公式本身是正确的),所以我把显著的
努力放在了综合测试中。这个测试是b+g公式这个特殊实现的主要优点,也是我发布这个代码的原因。
为了测试b+g公式的实现,我还实现了
"椭圆星系中的暗物质-i.是总质量密度
NFW形状或更陡的外形?"
Mamon and Lokas
《皇家天文学会月刊》,第362:95卷(2005年)
http://arxiv.org/abs/astro ph/0405466
http://pypi.python.org/pypi/sersic/
scipy(http://www.scipy.org)。
但是你已经安装好了,对吧?
sersic模块可以通过以下任何一种方式安装:
r/>
用法
=
任何用户都很可能关心的唯一功能是:
def luminity(pp,qq,reff=1.0,lum=1.0),其中pp和qq是sersic索引(两个整数)的分子和分母,因此
nn=pp/qq,reff是投影半光半径,luminity是总亮度。这将返回一个取半径的函数,并返回亮度密度。
>lum=亮度(5,3)
>>lum(1.1)
>>lum([1.1,2.2,3.3])
.
如果您发现计算需要很长时间,可以尝试降低meijer g函数计算的精度。
mpmath库设计为能够工作到任意精度,并且默认设置为~double precision。有关更改精度的信息,请参见:
http://mpmath.googlecode.com/svn/trunk/doc/build/basics.html;设置精度
请记住,分子和分母的小值比大值快(例如,亮度(2,1)快,
亮度(200,99)慢。
由mpmath
库定义的y精度浮点。它们的行为应该像普通的float一样,但是您可能希望将它们转换成python float,以避免调用mpmath更为小心的算术运算。
license
==
代码是在mit许可下发布的,因此您应该可以对它执行任何您想要的操作。
==
sérsic
=
这是sérsic表面精确投影的实现,如:
"投影sérsic模型的解析表达式"中所述。/abs/1009.4713
此代码依赖于mpmath python库
(http://mpmath.googlecode.com)来实现baes和gentile(以下简称b+g)公式所需的meijer g
函数,用于sérsic索引的
有理值。b+g也给出了非有理sérsic指数的公式,但我找不到所需的fox h函数的实现。因此,这段代码需要有理
sérsic指数,但任何无理数都可以用某个有理数任意逼近
,所以…没问题。
代码也依赖于scipy(http://scipy.org),但依赖性主要用于测试:进行数值积分等等。如果您相信代码通过了测试,并且不想自己运行它们(ha!),对scipy的唯一依赖是在函数bg_constants()中找到根
(scipy.optimize.newton),它很容易被替换。
《皇家天文学会月报》,424:635(2012年)
http://arxiv.org/abs/1205.2533
b+g公式并不简单,但并不十分复杂。但是,我想确定我已经正确地实现了公式
(并且公式本身是正确的),所以我把显著的
努力放在了综合测试中。这个测试是b+g公式这个特殊实现的主要优点,也是我发布这个代码的原因。
为了测试b+g公式的实现,我还实现了
"椭圆星系中的暗物质-i.是总质量密度
NFW形状或更陡的外形?"
Mamon and Lokas
《皇家天文学会月刊》,第362:95卷(2005年)
http://arxiv.org/abs/astro ph/0405466
http://pypi.python.org/pypi/sersic/
scipy(http://www.scipy.org)。
但是你已经安装好了,对吧?
sersic模块可以通过以下任何一种方式安装:
r/>
用法
=
任何用户都很可能关心的唯一功能是:
def luminity(pp,qq,reff=1.0,lum=1.0),其中pp和qq是sersic索引(两个整数)的分子和分母,因此
nn=pp/qq,reff是投影半光半径,luminity是总亮度。这将返回一个取半径的函数,并返回亮度密度。
>lum=亮度(5,3)
>>lum(1.1)
>>lum([1.1,2.2,3.3])
.
如果您发现计算需要很长时间,可以尝试降低meijer g函数计算的精度。
mpmath库设计为能够工作到任意精度,并且默认设置为~double precision。有关更改精度的信息,请参见:
http://mpmath.googlecode.com/svn/trunk/doc/build/basics.html;设置精度
请记住,分子和分母的小值比大值快(例如,亮度(2,1)快,
亮度(200,99)慢。
由mpmath
库定义的y精度浮点。它们的行为应该像普通的float一样,但是您可能希望将它们转换成python float,以避免调用mpmath更为小心的算术运算。
license
==
代码是在mit许可下发布的,因此您应该可以对它执行任何您想要的操作。