форкнуто от main/python-labs
Родитель
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
|
||||||
Загрузка…
Ссылка в новой задаче