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许可下发布的,因此您应该可以对它执行任何您想要的操作。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在ElasticSearch中将SearchHit转换为Java对象   第三方库类的java重写XmlAdapter   java如何使用动画类获得平滑的动画效果?   Java PDFBox如果文本内容超过PDF的第一页,如何添加新页面?   Java二叉搜索树u根到最近叶的距离   java什么是diff Scanner和BufferedReader   java如何设计不生成并行数组的程序   java多次声明变量会降低执行速度吗?   java如何使用JXLAPI读取下拉列表的值   多线程为什么自定义阻塞队列在Java中不是线程安全的   java在一个变量中每输入1000个单位,就从另一个变量中减去1?   java Mapstruct通用映射器   Java中的类能否确定它是否已被修改?   java如何在MogoOperations聚合函数中定义输出类型?