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