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

3.3 KiB

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

Бушманов А.С. А-01-23

Задание: Вариант 2

Из темы 7:

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

Из темы 8:

По указанному преподавателем варианту контрольного задания обратитесь к индивидуальному заданию с таким номером в теме 7, разработайте функцию, на ее основе создайте модуль. Создайте второй модуль, в котором должны быть инструкции для ввода/создания исходных данных для проверки работы функции, вызов функции и отображение полученных результатов.

Решение:

Модуль 1: modtask1.py

import random
import math

def shum(mu, var, n, filename):
    sigma = math.sqrt(var)
    data = []
    f = open(filename, "w", encoding="utf-8")
    for i in range(n):
        x = random.gauss(mu, sigma)
        data.append(x)
        if (i + 1) % 3 == 0:
            f.write(f"{data[i-2]} {data[i-1]} {data[i]}\n")
        elif i == n - 1:
            start = i - (i % 3)
            f.write(" ".join(str(v) for v in data[start:]) + "\n")
    f.close()
    return data

Модуль 2: modtask0.py

import modtask1
mu = float(input("Введите мат. ожидание (mu): "))
var = float(input("Введите дисперсию (var): "))
n = int(input("Введите число отсчетов (n): "))
filename = input("Введите имя файла: ").strip()
s = modtask1.shum(mu, var, n, filename)
print("Готово! Список получен и записан в файл.")
print("Длина списка:", len(s))
print("Первые 10 значений:", s[:10])

Ответ:

import modtask0
Введите мат. ожидание (mu): 3
Введите дисперсию (var): 6
Введите число отсчетов (n): 6
Введите имя файла (например noise.txt): task1
Готово! Список получен и записан в файл.
Длина списка: 6
Первые 10 значений: [4.903428780465844, 0.587814428103369, 4.692004162944187, 1.7931553860723835, 5.797829782338331, 2.3303270038829353]

Файл txt:

4.903428780465844 0.587814428103369 4.692004162944187
1.7931553860723835 5.797829782338331 2.3303270038829353