Построение двух пиков

Рейтинг: 0Ответов: 1Опубликовано: 02.06.2023

Написал код для расчета дифрактограммы. Представил его краткую версию. Функция caushi() преобразует пик в распределение с шириной gamma()

def gamma(labd, d, thet):
    return labd * 1.15 / (d * math.cos(thet / 2))

def caushi(x, x_0, gamma):
    return 1 / math.pi * gamma / 2 / ((x - x_0)**2 + (gamma / 2)**2)

arr = np.zeros(1800)
x = np.linspace(0, 180, 1800)

num = 10

rr = np.zeros(1800)
x = np.linspace(0, 180, 1800)

num = 10

for i in range(num):
    from random import randint
    number = randint(0, np.size(D))
    sinthet1 = 1 * lambdal / (2 * D[number - 1])
    sinthet2 = 1 * lambdbt / (2 * D[number - 1])
    if sinthet1 <= 1:
        thet1 = math.degrees(np.arcsin(sinthet1)) * 10
        th1 = np.around(thet1).astype(int)
        arr[2 * th1] = I[number - 1]

Часть дифрактограммы имеет следующий вид:

введите сюда описание изображения

Теперь вопрос: как сделать правильно наложение пиков, чтобы не было такого "врезания" с падением?

Ответы

▲ 5

По картинке видно, что вы заполняете массив, присваивая ячейкам сначала значения для одного пика, потом для другого.

А нужно ведь складывать значения, а не заменять.

Вместо

array[i] = value[k-й пик в точке i]

делать

array[i] += value[k-й пик в точке i]