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

2.5 KiB

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

Коломейцев Дмитрий, А-02-23

Задание

Вариант 5.

  1. Разработайте функцию с 2 аргументами: x и В, реализующую преобразование входного сигнала x по формуле:
  • y = 0, если -B ≤ x ≤ B
  • y = x - B, если x > B
  • y = x + B, если x < -B
  1. Создайте список со 100 значениями входного сигнала х:
  • случайными,
  • нормально распределенными числами,
  • с математическим ожиданием 0.5,
  • дисперсией 25.
  1. Для элементов списка с помощью функции рассчитайте список со значениями выходного сигнала y при В = 4.5.

  2. Записать результаты в текстовый файл в виде двух столбцов: хi, yi.

Решение

Функция для линейно-кусочного преобразования transform_signal находится в модуле transformation_module.py

Код представлен ниже:

def transform_signal(x, B):
    """
        Кусочно-линейное преобразование:
        y = 0          при -B <= xi <= B
        y = xi - B     при xi > B
        y = xi + B     при xi < -B
        
        x - список входных значений
    """
    y = []
    for xi in x:
        if -B <= xi <= B:
            y.append(0)
        elif xi > B:
            y.append(xi - B)
        else:
            y.append(xi + B)
    return y

Код основного модуля:

import random
import math
from transform_module import transform_signal

def main():
    x = [random.gauss(0.5, 5) for i in range(100)]
    # 0.5 - мат ожидание, 5 - СКО = корень из 25 (дисперсия = 25)
    y = transform_signal(x, 4.5)

    with open('file.txt', 'w') as f:
		# это всё для красивого вывода
        f.write(f'{"xi":>12} {"yi":>12}\n')
        for xi, yi in zip(x, y):
            f.write(f'{xi:>12.6f} {yi:>12.6f}\n')

    # вывод в файле file.txt

main()

Содержимое файла file.txt:

      xi           yi
    3.123979     0.000000
    5.591865     1.091865
    7.261426     2.761426
	........     ........
    2.716099     0.000000
   -1.374491     0.000000