форкнуто от main/python-labs
Родитель
0e0029a430
Сommit
9c0613275b
@ -0,0 +1,9 @@
|
|||||||
|
import random
|
||||||
|
import math
|
||||||
|
def logistic_tuple(N):
|
||||||
|
|
||||||
|
logistic = lambda X: 1.0 / (1.0 + math.exp(X)) # Анонимная функция — логистическая
|
||||||
|
random_list = [random.uniform(-20, 68) for _ in range(N)] #список из N случайных чисел в диапазоне [-20, 68]
|
||||||
|
|
||||||
|
result_tuple = tuple(logistic(x) for x in random_list)
|
||||||
|
return result_tuple
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
from M1 import logistic_tuple
|
||||||
|
N = int(input("Введите число элементов: "))
|
||||||
|
result = logistic_tuple(N)
|
||||||
|
print("\nРезультат:")
|
||||||
|
print(result)
|
||||||
|
if len(result) > 5:
|
||||||
|
print("\nПервые 5 значений:")
|
||||||
|
print(result[:5])
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
# noise_gen.py
|
||||||
|
# Тема 8. Генератор равномерного белого шума
|
||||||
|
|
||||||
|
import random
|
||||||
|
|
||||||
|
def generate_uniform_noise(min_val, max_val, num_samples, filename):
|
||||||
|
"""
|
||||||
|
Генерирует последовательность равномерно распределённого белого шума.
|
||||||
|
|
||||||
|
Аргументы:
|
||||||
|
min_val (float): нижняя граница диапазона
|
||||||
|
max_val (float): верхняя граница диапазона
|
||||||
|
num_samples (int): количество отсчётов
|
||||||
|
filename (str): имя текстового файла для записи
|
||||||
|
|
||||||
|
Возвращает:
|
||||||
|
list: список сгенерированных чисел
|
||||||
|
"""
|
||||||
|
# Генерация списка
|
||||||
|
noise = [random.uniform(min_val, max_val) for _ in range(num_samples)]
|
||||||
|
|
||||||
|
# Запись в файл: по 3 элемента в строке, через запятую
|
||||||
|
with open(filename, 'w', encoding='utf-8') as f:
|
||||||
|
for i in range(0, len(noise), 3):
|
||||||
|
line = noise[i:i+3]
|
||||||
|
f.write(','.join(f"{x:.6f}" for x in line) + '\n')
|
||||||
|
|
||||||
|
return noise
|
||||||
@ -0,0 +1,39 @@
|
|||||||
|
# test_noise.py
|
||||||
|
# Тема 8. Тестирование генератора шума
|
||||||
|
|
||||||
|
from Mod13 import generate_uniform_noise
|
||||||
|
|
||||||
|
def main():
|
||||||
|
print("Генерация равномерного белого шума")
|
||||||
|
|
||||||
|
# Ввод исходных данных
|
||||||
|
try:
|
||||||
|
min_val = float(input("Введите нижнюю границу диапазона (min_val): "))
|
||||||
|
max_val = float(input("Введите верхнюю границу диапазона (max_val): "))
|
||||||
|
if min_val >= max_val:
|
||||||
|
print("Ошибка: min_val должно быть меньше max_val")
|
||||||
|
return
|
||||||
|
|
||||||
|
num_samples = int(input("Введите число отсчётов (num_samples): "))
|
||||||
|
if num_samples <= 0:
|
||||||
|
print("Ошибка: число отсчётов должно быть положительным")
|
||||||
|
return
|
||||||
|
|
||||||
|
filename = input("Введите имя файла для записи (например, noise.txt): ").strip()
|
||||||
|
if not filename:
|
||||||
|
filename = "noise.txt"
|
||||||
|
|
||||||
|
except ValueError:
|
||||||
|
print("Ошибка: введены некорректные данные")
|
||||||
|
return
|
||||||
|
|
||||||
|
# Вызов функции
|
||||||
|
noise_list = generate_uniform_noise(min_val, max_val, num_samples, filename)
|
||||||
|
|
||||||
|
# Отображение результатов
|
||||||
|
print(f"\nСгенерировано {len(noise_list)} отсчётов.")
|
||||||
|
print(f"Первые 10 значений: {[round(x, 4) for x in noise_list[:10]]}")
|
||||||
|
print(f"Результат записан в файл: {filename}")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@ -0,0 +1,39 @@
|
|||||||
|
# test_noise.py
|
||||||
|
# Тема 8. Тестирование генератора шума
|
||||||
|
|
||||||
|
from Mod1(3) import generate_uniform_noise
|
||||||
|
|
||||||
|
def main():
|
||||||
|
print("Генерация равномерного белого шума")
|
||||||
|
|
||||||
|
# Ввод исходных данных
|
||||||
|
try:
|
||||||
|
min_val = float(input("Введите нижнюю границу диапазона (min_val): "))
|
||||||
|
max_val = float(input("Введите верхнюю границу диапазона (max_val): "))
|
||||||
|
if min_val >= max_val:
|
||||||
|
print("Ошибка: min_val должно быть меньше max_val")
|
||||||
|
return
|
||||||
|
|
||||||
|
num_samples = int(input("Введите число отсчётов (num_samples): "))
|
||||||
|
if num_samples <= 0:
|
||||||
|
print("Ошибка: число отсчётов должно быть положительным")
|
||||||
|
return
|
||||||
|
|
||||||
|
filename = input("Введите имя файла для записи (например, noise.txt): ").strip()
|
||||||
|
if not filename:
|
||||||
|
filename = "noise.txt"
|
||||||
|
|
||||||
|
except ValueError:
|
||||||
|
print("Ошибка: введены некорректные данные")
|
||||||
|
return
|
||||||
|
|
||||||
|
# Вызов функции
|
||||||
|
noise_list = generate_uniform_noise(min_val, max_val, num_samples, filename)
|
||||||
|
|
||||||
|
# Отображение результатов
|
||||||
|
print(f"\nСгенерировано {len(noise_list)} отсчётов.")
|
||||||
|
print(f"Первые 10 значений: {[round(x, 4) for x in noise_list[:10]]}")
|
||||||
|
print(f"Результат записан в файл: {filename}")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
-2.010928,1.714263,1.137040
|
||||||
|
1.024900,0.097800,1.820752
|
||||||
|
-1.874113,-0.357603,-4.461175
|
||||||
|
-0.753859
|
||||||
@ -0,0 +1,43 @@
|
|||||||
|
# Индивидуальное контрольное задание по теме 8 вариант 20
|
||||||
|
|
||||||
|
Анисенков Павел, А-01-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Разработайте функцию с одним аргументом – числом элементов. Функция должна включать анонимную функцию с аргументом Х, вычисляющую от заданного входного числового аргу-мента X значение логистической функции: 1/(1+exp(X)). Общая функция должна создавать список с заданным в аргументе числом случайных элементов, равномерно распределенных в диапазоне от -20 до +68. После этого она должна формировать кортеж с элементами – значе-ниями логистической функции от соответствующих элементов списка. Этот кортеж должен возвращаться, как результат функции. Проверить функцию на примере.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
```py
|
||||||
|
|
||||||
|
M1
|
||||||
|
import random
|
||||||
|
import math
|
||||||
|
def logistic_tuple(N):
|
||||||
|
|
||||||
|
logistic = lambda X: 1.0 / (1.0 + math.exp(X))
|
||||||
|
random_list = [random.uniform(-20, 68) for _ in range(N)]
|
||||||
|
|
||||||
|
result_tuple = tuple(logistic(x) for x in random_list)
|
||||||
|
return result_tuple
|
||||||
|
|
||||||
|
M2
|
||||||
|
from M1 import logistic_tuple
|
||||||
|
N = int(input("Введите число элементов: "))
|
||||||
|
result = logistic_tuple(N)
|
||||||
|
print("\nРезультат:")
|
||||||
|
print(result)
|
||||||
|
if len(result) > 5:
|
||||||
|
print("\nПервые 5 значений:")
|
||||||
|
print(result[:5])
|
||||||
|
```
|
||||||
|
|
||||||
|
Вывод:
|
||||||
|
|
||||||
|
|
||||||
|
```py
|
||||||
|
Введите число элементов: 5
|
||||||
|
|
||||||
|
Результат:
|
||||||
|
(1.7003103585087036e-25, 8.372020498532923e-12, 0.013308504481261372, 5.733447989484467e-14, 2.048829680249727e-09)
|
||||||
|
|
||||||
|
```
|
||||||
Загрузка…
Ссылка в новой задаче