Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

4.4 KiB

Индивидуальное контрольное задание по Теме 7

Выполнил: Тимошенко А.А. Проверил: Козлюк Д.А.

Задание:

Вариант 1: Разработайте функцию с 5 аргументами, создающую последовательность отсчетов синусоидального сигнала с заданными параметрами: амплитуда, период, фаза, число отсчетов (аргументы функции). Сигнал должен быть записан в виде столбца в текстовый файл с заданным именем (5-й аргумент функции), а также возвращен в вызывающую программу в виде списка.

Решение:

import math

def sinusoida(amplitude, period, phase, num_samples, filename):
    signal_list = []
    
    for i in range(num_samples):
        #здесь я вычисляю значения синусоиды по формуле
        value = amplitude * math.sin(2 * math.pi * i / period + phase)
        signal_list.append(value)#добавляю вычисленное значение в список
    
    #записываю в текстовый файл в виде столбца
    with open(filename, 'w', encoding='utf-8') as file:
        for value in signal_list:
            file.write(f"{value}\n")#записываю данные в файл
    
    return signal_list

#пример использования функции:
if __name__ == "__main__": #условие выполнения кода только при прямом запуске файла 
    #параметры сигнала
    A = 2.0      #амплитуда
    T = 10       #период
    phi = 0      #фаза
    N = 50       #число отсчетов
    file_name = "sinusoid_signal.txt"
    
    #вызов функции
    signal = sinusoida(A, T, phi, N, file_name)
    
    #проверка результата
    print(f"Сгенерировано {len(signal)} отсчетов")
    print(f"Все значения: {signal}")
    print(f"Файл сохранен как: {file_name}")

Вывод в терминал:

Сгенерировано 50 отсчетов
Все значения: [0.0, 1.1755705045849463, 1.902113032590307, 1.9021130325903073, 1.1755705045849465, 2.4492935982947064e-16, -1.175570504584946, -1.902113032590307, -1.9021130325903073, -1.1755705045849467, -4.898587196589413e-16, 1.1755705045849445, 1.902113032590307, 1.9021130325903073, 1.1755705045849467, 7.347880794884119e-16, -1.1755705045849456, -1.9021130325903068, -1.9021130325903075, -1.175570504584947, -9.797174393178826e-16, 1.1755705045849454, 1.9021130325903057, 1.9021130325903075, 1.1755705045849472, 1.2246467991473533e-15, -1.1755705045849452, -1.9021130325903068, -1.9021130325903075, -1.1755705045849474, -1.4695761589768238e-15, 1.175570504584945, 1.9021130325903066, 1.9021130325903077, 1.1755705045849476, 1.7145055188062944e-15, -1.175570504584945, -1.9021130325903066, -1.9021130325903077, -1.1755705045849478, -1.959434878635765e-15, 1.175570504584939, 1.9021130325903066, 1.9021130325903077, 1.1755705045849538, 2.204364238465236e-15, -1.1755705045849445, -1.9021130325903086, -1.902113032590308, -1.175570504584954]
Файл сохранен как: sinusoid_signal.txt

Вывод в текстовый файл sinusoid_signal.txt:

0.0
1.1755705045849463
1.902113032590307
1.9021130325903073
1.1755705045849465
2.4492935982947064e-16
-1.175570504584946
-1.902113032590307
-1.9021130325903073
-1.1755705045849467
-4.898587196589413e-16
1.1755705045849445
1.902113032590307
1.9021130325903073
1.1755705045849467
7.347880794884119e-16
-1.1755705045849456
-1.9021130325903068
-1.9021130325903075
-1.175570504584947
-9.797174393178826e-16
1.1755705045849454
1.9021130325903057
1.9021130325903075
1.1755705045849472
1.2246467991473533e-15
-1.1755705045849452
-1.9021130325903068
-1.9021130325903075
-1.1755705045849474
-1.4695761589768238e-15
1.175570504584945
1.9021130325903066
1.9021130325903077
1.1755705045849476
1.7145055188062944e-15
-1.175570504584945
-1.9021130325903066
-1.9021130325903077
-1.1755705045849478
-1.959434878635765e-15
1.175570504584939
1.9021130325903066
1.9021130325903077
1.1755705045849538
2.204364238465236e-15
-1.1755705045849445
-1.9021130325903086
-1.902113032590308
-1.175570504584954