平滑BrokernPowerLaw1d#

class astropy.modeling.powerlaws.SmoothlyBrokenPowerLaw1D(amplitude=1, x_break=1, alpha_1=-2, alpha_2=2, delta=1, **kwargs)[源代码]#

基类:Fittable1DModel

一维光滑破幂律模型。

参数:
amplitude : floatPython :浮点

断裂点处的模型振幅。

x_break : floatPython :浮点

断点。

alpha_1 : floatPython :浮点

幂律指数 x << x_break .

alpha_2 : floatPython :浮点

幂律指数 x >> x_break .

delta : floatPython :浮点

平滑度参数。

笔记

模型公式(带 \(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()

(png, svg, pdf)

../_images/astropy-modeling-powerlaws-SmoothlyBrokenPowerLaw1D-1.png

属性摘要

alpha_1 

alpha_2 

amplitude 

delta 

input_units 

此属性用于指示evaluate方法所需的单元或单元集,并返回将输入映射到单元(或 None 如果接受任何单位)。

param_names 

描述此类型模型的参数的名称。

x_break 

方法总结

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)#

方法文件

static evaluate(x, amplitude, x_break, alpha_1, alpha_2, delta)[源代码]#

一维平稳破解的幂函数模型。

static fit_deriv(x, amplitude, x_break, alpha_1, alpha_2, delta)[源代码]#

一维光滑破坏的关于参数的幂定律导数。