форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
41 строка
1.7 KiB
Python
41 строка
1.7 KiB
Python
"""
|
|
6. Разработайте функцию с 3 аргументами: x, А и В,
|
|
реализующую преобразование входного сигнала x по формуле:
|
|
y=B, если x>A;
|
|
y= 2B*x/A-B*x2/A2 , если 0≤ x ≤ А;
|
|
y= 2B * x/A +B*x2/A2 , если -A≤ x <0;
|
|
y=-B, если x< -A.
|
|
Создайте список со 100 значениями входного сигнала х – случайными, равномерно распределенными числами в диапазоне значений от -5 до 12.
|
|
Для элементов списка с помощью функции рассчитайте список со значениями выходного сигнала y при трех разных парах значений А и В.
|
|
Записать результаты в текстовый файл в виде двух столбцов: хi, yi.
|
|
|
|
"""
|
|
|
|
from random import *
|
|
|
|
|
|
def func(x, A, B):
|
|
"""Преобразование входного сигнала"""
|
|
if x>A:
|
|
y = B
|
|
elif 0<= x <= A:
|
|
y = 2*B*x/A - B*x**2/A**2
|
|
elif -A<= x <=0:
|
|
y = 2*B*x/A + B*x**2/A**2
|
|
else:
|
|
y = -B
|
|
return x, y
|
|
|
|
sample = [uniform(-5, 12) for _ in range(100)]
|
|
final_list= []
|
|
with open("TEMA7\\test.txt", "w+") as f:
|
|
for _ in range(3):
|
|
A = randint(1, 10)
|
|
B = randint(1, 10)
|
|
#f.write(f"x|y for A={A} and B={B}\n")
|
|
final_list.append(f"(A = {A},B = {B})")
|
|
for i in range(len(sample)):
|
|
res = func(sample[i], A, B)
|
|
final_list.append(res)
|
|
f.write(f"{res[0]}|{res[1]}\n")
|
|
print(final_list) |