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