Dmitry Kolomeytsev 4 дней назад
Родитель 65efb42efc
Сommit df08d320be

@ -1,7 +0,0 @@
# Индивидуальное контрольное задание по теме 8
Коломейцев Дмитрий, А-02-23
## Задание
## Решение

@ -0,0 +1,101 @@
xi yi
8.609841 4.109841
-5.655793 -1.155793
1.344068 0.000000
-2.215482 0.000000
9.728585 5.228585
-0.803193 0.000000
-8.997437 -4.497437
4.087272 0.000000
-2.399424 0.000000
-1.590218 0.000000
0.527906 0.000000
12.048537 7.548537
-5.351781 -0.851781
-5.061366 -0.561366
4.090164 0.000000
0.627902 0.000000
8.017003 3.517003
-2.930442 0.000000
4.694035 0.194035
-9.603205 -5.103205
-7.551084 -3.051084
9.175015 4.675015
2.581438 0.000000
-0.349598 0.000000
4.892525 0.392525
-0.161765 0.000000
5.420685 0.920685
-2.489117 0.000000
-0.781592 0.000000
-3.168183 0.000000
3.937147 0.000000
1.856582 0.000000
-7.017430 -2.517430
-4.097757 0.000000
5.716746 1.216746
5.210405 0.710405
0.289743 0.000000
3.452856 0.000000
-4.751359 -0.251359
1.741863 0.000000
-6.689602 -2.189602
10.718234 6.218234
1.490940 0.000000
-5.965262 -1.465262
-0.974983 0.000000
1.379959 0.000000
2.142287 0.000000
3.835167 0.000000
-8.173161 -3.673161
-2.450271 0.000000
-2.036493 0.000000
7.025285 2.525285
-5.218910 -0.718910
2.224889 0.000000
-4.342584 0.000000
4.953001 0.453001
1.541203 0.000000
3.667462 0.000000
-1.260892 0.000000
0.315947 0.000000
3.130567 0.000000
-2.734585 0.000000
-6.625260 -2.125260
8.673980 4.173980
0.842897 0.000000
-6.117463 -1.617463
7.284804 2.784804
-5.970478 -1.470478
3.755502 0.000000
-1.206751 0.000000
-8.237521 -3.737521
10.626573 6.126573
12.710524 8.210524
5.254132 0.754132
3.421404 0.000000
-2.702080 0.000000
-3.072853 0.000000
-6.214579 -1.714579
0.092185 0.000000
1.777328 0.000000
-2.797733 0.000000
0.441703 0.000000
0.108748 0.000000
-3.702228 0.000000
1.924932 0.000000
5.390615 0.890615
7.132174 2.632174
-2.915082 0.000000
-7.512958 -3.012958
9.089052 4.589052
11.736116 7.236116
7.374933 2.874933
5.150148 0.650148
8.542939 4.042939
1.028882 0.000000
-0.901620 0.000000
-5.182340 -0.682340
1.071530 0.000000
4.294494 0.000000
0.952499 0.000000

@ -0,0 +1,17 @@
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()

@ -0,0 +1,82 @@
# Индивидуальное контрольное задание по теме 8
Коломейцев Дмитрий, А-02-23
## Задание
#### Вариант 5.
1. Разработайте функцию с 2 аргументами: x и В, реализующую преобразование входного сигнала x по формуле:
* y = 0, если -B ≤ x ≤ B
* y = x - B, если x > B
* y = x + B, если x < -B
2. Создайте список со 100 значениями входного сигнала х:
* случайными,
* нормально распределенными числами,
* с математическим ожиданием 0.5,
* дисперсией 25.
3. Для элементов списка с помощью функции рассчитайте список со значениями выходного сигнала y при В = 4.5.
4. Записать результаты в текстовый файл в виде двух столбцов: хi, yi.
## Решение
Функция для линейно-кусочного преобразования transform_signal находится в модуле transformation_module.py
Код представлен ниже:
```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
```
Код основного модуля:
```py
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:
```py
xi yi
3.123979 0.000000
5.591865 1.091865
7.261426 2.761426
........ ........
2.716099 0.000000
-1.374491 0.000000
```

@ -0,0 +1,18 @@
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
Загрузка…
Отмена
Сохранить