Lorentz1D существует, хотя и не Lorentz2D, но вы можете определить его, следуя руководству по реализации пользовательских моделей . Вот базовый пример c:
from astropy.modeling import Fittable2DModel, Parameter
class Lorentz2D(Fittable2DModel):
amplitude = Parameter()
x_0 = Parameter()
y_0 = Parameter()
fwhm = Parameter
@staticmethod
def evaluate(x, y, amplitude, x_0, y_0, fwhm):
hwhm = fwhm / 2.0
return (amplitude * hwhm /
((x - x_0)**2 + (y - y_0)**2 + hwhm**2)**1.5)
Я не знаю, точно ли так определяется ваша 2D-лоренцевская модель; Я просто адаптировал это определение из Википедии. Но вы можете изменить этот пример по мере необходимости.
Затем, если вы думаете, что это будет полезно для других, вы можете рассмотреть возможность отправки его как вклада .