У меня проблемы с пониманием того, как свертка двух моделей делается в астропии. Я хочу свернуть мою функцию, центрированную вокруг определенного значения x, с гауссианой со средним значением 0 и сигмой> 0. Однако, когда я пытаюсь построить результат свертки, функция центрируется вокруг ~ x / 2. Я думаю, что мне здесь не хватает чего-то фундаментального, но я не смог найти ничего, кроме основного примера по документам по астропии.
Вот мой фрагмент кода:
import numpy as np
import math
import matplotlib.pyplot as plt
from astropy.modeling.models import custom_model
from astropy.modeling import models
from astropy.convolution import convolve_models
from scipy.constants import alpha
@custom_model
def spectrum(x):
me = 0.511
eMax = 104.97
E = np.sqrt(x*x + me*me)
result = (1./eMax)*(alpha/(2*math.pi))*(np.log(4*E*E/me/me)-2.)*((E*E+eMax*eMax)/eMax/(eMax-E))
result[result < 0] = 0
return result
x = np.linspace(0,120,1000)
s = spectrum()
g1 = models.Gaussian1D(1, 0, 2)
conv = convolve_models(g1, s)
plt.plot(x, conv(x), 'k-')
plt.plot(x, s(x))
Я ожидаю, что извилистая функция будет сосредоточена вокруг исходной, не думаю, что понимаю, что происходит.
Спасибо за вашу помощь!