光滑函数摄动的三重随机约束曲线发生器
smurves的Python项目详细描述
smurves
光滑函数摄动的三重随机约束曲线发生器
smurves是一个随机平滑曲线生成工具,允许在生成过程中设置多个约束。if提供了一个更具约束性的替代方案,例如,为此目的使用高斯过程。该方法基于牛顿定律,灵感来源于布兰登·桑德森的系列丛书The Stormlight Archive和书籍中称为“涌动绑定”的魔法系统。更具体地说,这种方法记录了处理飞行物体重力方向和大小变化的部分,这提供了最初的概念。
考虑到这一想法,smurves通过随机抽样重力,以及梯度符号变化的位置和数量,为每个曲线路径一个弹丸生成平滑曲线,并确保遵守所有约束,在重力方向切换后保持速度和飞行角度。
从本质上讲,代码的内部工作可以想象为,根据用户偏好,从x轴间隔的左边或右边的指定点或随机点发射任意角度或任意角度的子弹。在任意数量的随机点上,当子弹继续飞行时,重力会以新的随机大小颠倒过来,所有这些都受用户为所需曲线的属性设置的约束。这种方法的动机是寻找一种新的方法来产生具有一定约束的完全随机曲线来平滑扰动函数,例如宇宙学中的matter power spectrum。在this paper关于sn-ia超新星数据检验宇宙学标准模型的可行性的文章中,可以找到对该方法的更详细描述,以及该工具在科学研究中的首次应用。
因为这是小说里的。本文档中完全包含了恶作剧。
安装
smurves可以通过PyPI安装,只需在终端中使用一个命令:
pip install smurves
或者,可以从存储库中的文件夹smurves
下载文件smurves.py
,并通过将该文件放入给定项目的工作目录在本地使用。但是,强烈建议通过终端进行安装,因为安装过程将检查软件包要求,并自动更新或安装任何缺少的依赖项,从而节省用户进行故障排除和自行安装的工作量。
快速启动指南
下面的描述和示例用法提供了有关smurves的快速教程。此外,此存储库中examples
文件夹中的examples.ipynb
Jupyter笔记本显示了该工具用于各种约束、解释每个参数集以及绘制曲线所需的代码。
除了x轴和y轴之外的曲线数和间隔约束之外,曲线不应该散列,该工具需要测量点的数量和每个曲线的方向变化的最大数目。
六个可选参数包括曲线应收敛的点的位置、x轴的对数刻度的选择、随机地启动曲线轨迹的选择而不是零角度的选择、如果提供收敛点,则允许曲线在右侧而不是在左侧收敛;沿X轴的百分位数之前和没有方向重力变化应该被实施,以及放置阈值点之前,不偏离收敛点的X轴值应该发生。下表描述了这些参数。
Variables | Explanations | Default |
---|---|---|
n_curves | The number of curves you want to generate | |
x_interval | The allowed x-axis interval for the curves | |
y_interval | The allowed y-axis interval for the curves | |
n_measure | The number of equally-spaced measurement points | |
direction_maximum | The maximum number of allowed gradient changes | |
convergence_point (optional) | The left-side point of convergence for curves | |
log_scale (optional) | Whether measurements should be on a log-scale | False |
random_launch (optional) | Whether the first launch angle should be random | False |
right_convergence (optional) | Whether convergence should be on the right side | False |
change_range (optional) | The x-axis percentiles before and after which no gradient changes should take place for curves | [0.1, 0.9] |
change_spacing (optional) | The minimum space in measurement points between the different points of a gravitational force change | None |
change_ratio (optional) | The multiplier for the last partial trajectory to get the upper limit for the next partial trajectory's force | None |
start_force (optional) | The point of the first deviation from unity | None |
在通过PyPI或在本地使用smurves.py
文件进行安装之后,可以使用ut可选参数如下:
fromsmurvesimportsurgebindercurves=surgebinder(n_curves=10,x_interval=[0.1,10.0],y_interval=[0.0,1.0],n_measure=100,direction_maximum=1)