Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

1.8 KiB

Тест по Тест по Теме 7

Володин Денис, А-02-23

Задание (Вариант 6)

Разработайте функцию с 3 аргументами: x, А и В, реализующую преобразование входного сигнала x по формуле: y=B, если x>A; y= 2Bx/A-Bx^2/A^2 , если 0≤ x ≤ А; y= 2B * x/A +B*x^2 /A^2 , если -A≤ x <0; y=-B, если x< -A. Создайте список со 100 значениями входного сигнала х – случайными, равномерно распределенными числами в диапазоне значений от -5 до 12. Для элементов списка с помощью функции рассчитайте список со значениями выходного сигнала y при трех разных парах значений А и В. Записать результаты в текстовый файл в виде двух столбцов: хi, yi.

Решение

import random
with open ('test.txt','w') as f:
   f = open('test.txt', 'w')
   ls = [random.uniform(-5,12) for i in range(100)]
   def func(x, A, B):
      if x > A: 
         return B
      elif (x >= 0) and (x <= A):
         return (2*B*x/A - B*(x**2/A**2))
      elif (x > (A*(-1))) and (x < 0):
         return (2*B*x/A + B*(x**2/A**2))
      else: return (-1)*B

   f.write('xi | yi\n')
   f.write('A = 5, B = 7\n')
   for x in ls:
      f.write('{} | {}\n'.format(x, func(x, 5, 7)))

   f.write('A = 3, B = 4\n')
   for x in ls:
      f.write('{} | {}\n'.format(x, func(x, 3, 4)))

   f.write('A = 8, B = 12\n')
   for x in ls:
      f.write('{} | {}\n'.format(x, func(x, 8, 12)))

Вывод