форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
59 строки
3.3 KiB
Markdown
59 строки
3.3 KiB
Markdown
# Индивидуальное контрольное задание по теме 8
|
|
Бушманов А.С. А-01-23
|
|
## Задание: Вариант 2
|
|
### Из темы 7:
|
|
Разработайте функцию с 4 аргументами, создающую последовательность отсчетов случайного, нормально распределенного сигнала типа белого шума с заданными параметрами: математическое ожидание и дисперсия, число отсчетов (аргументы функции). Сигнал должен быть записан построчно, по 3 элемента в строке с разделителем - пробел в текстовый файл с заданным именем (4-й аргумент функции), а также возвращен в вызывающую программу в виде списка.
|
|
### Из темы 8:
|
|
По указанному преподавателем варианту контрольного задания обратитесь к индивидуальному заданию с таким номером в теме 7, разработайте функцию, на ее основе создайте модуль. Создайте второй модуль, в котором должны быть инструкции для ввода/создания исходных данных для проверки работы функции, вызов функции и отображение полученных результатов.
|
|
|
|
## Решение:
|
|
#### Модуль 1: modtask1.py
|
|
```python
|
|
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
|
|
```python
|
|
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])
|
|
```
|
|
## Ответ:
|
|
```python
|
|
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
|
|
|
|
```
|