平滑BrokernPowerLaw1d#
- class astropy.modeling.powerlaws.SmoothlyBrokenPowerLaw1D(amplitude=1, x_break=1, alpha_1=-2, alpha_2=2, delta=1, **kwargs)[源代码]#
-
一维光滑破幂律模型。
- 参数:
笔记
模型公式(带 \(A\) 对于
amplitude
, \(x_b\) 对于x_break
, \(\alpha_1\) 对于alpha_1
, \(\alpha_2\) 对于alpha_2
和 \(\Delta\) 对于delta
):\[f(x)=A\左(\frac{x}{x}b}\右)^{-\alpha_1}\]斜率的变化发生在值之间 \(x_1\) 和 \(x_2\) 因此:
\[\log{10}\frac{x}2}{x}=\log{10}\frac{x}{x}{1}\]At值 \(x \lesssim x_1\) 和 \(x \gtrsim x_2\) 该模型近似为一个带指数的简单幂律 \(\alpha_1\) 和 \(\alpha_2\) 分别。两个幂律在值上平滑地结合在一起 \(x_1 < x < x_2\) ,因此 \(\Delta\) 参数设置坡度变化的“平滑度”。
这个
delta
参数被限定为大于1e-3的值(对应于 \(x_2 / x_1 \gtrsim 1.002\) )以避免溢出错误。这个
amplitude
参数被限制为正值,因为此模型通常用于表示正数量。实例
import numpy as np import matplotlib.pyplot as plt from astropy.modeling import models x = np.logspace(0.7, 2.3, 500) f = models.SmoothlyBrokenPowerLaw1D(amplitude=1, x_break=20, alpha_1=-2, alpha_2=2) plt.figure() plt.title("amplitude=1, x_break=20, alpha_1=-2, alpha_2=2") f.delta = 0.5 plt.loglog(x, f(x), '--', label='delta=0.5') f.delta = 0.3 plt.loglog(x, f(x), '-.', label='delta=0.3') f.delta = 0.1 plt.loglog(x, f(x), label='delta=0.1') plt.axis([x.min(), x.max(), 0.1, 1.1]) plt.legend(loc='lower center') plt.grid(True) plt.show()
属性摘要
此属性用于指示evaluate方法所需的单元或单元集,并返回将输入映射到单元(或
None
如果接受任何单位)。描述此类型模型的参数的名称。
方法总结
evaluate
(x, amplitude, x_break, alpha_1, ...)一维平稳破解的幂函数模型。
fit_deriv
(x, amplitude, x_break, alpha_1, ...)一维光滑破坏的关于参数的幂定律导数。
属性文档
- alpha_1 = Parameter('alpha_1', value=-2.0)#
- alpha_2 = Parameter('alpha_2', value=2.0)#
- amplitude = Parameter('amplitude', value=1.0, bounds=(0, None))#
- delta = Parameter('delta', value=1.0, bounds=(0.001, None))#
- input_units#
- param_names = ('amplitude', 'x_break', 'alpha_1', 'alpha_2', 'delta')#
描述此类型模型的参数的名称。
此元组中的参数与初始化特定类型的模型时应传入的顺序相同。某些类型的模型,如多项式模型,根据模型的某些其他属性(如阶数)有不同数量的参数。
定义自定义模型类时,此属性的值由
Parameter
在类中定义的body属性。
- x_break = Parameter('x_break', value=1.0)#
方法文件