форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
38 строки
1.6 KiB
Markdown
38 строки
1.6 KiB
Markdown
# Индивидуальное контрольное задание по теме 8
|
|
|
|
Коваленко Дмитрий, А-01-23
|
|
|
|
## Задание 12
|
|
|
|
Разработайте анонимную функцию с 3 аргументами: х, a, b, вычисляющую значение exp(-(x-a)2/b)/(2*π*b)1/2. Рассчитайте значения функции в диапазоне значений х от a-3*b1/2 до a+3*b1/2 с шагом 0.2*b1/2 и запишите эти значения в текстовый файл по два значения на строке, разделенных запятыми.
|
|
|
|
на ее основе создайте модуль. Создайте второй модуль, в котором должны быть инструкции для ввода/создания исходных данных для проверки работы функции, вызов функции и отображение полученных результатов.
|
|
## Решение
|
|
|
|
Модуль-реализация
|
|
```py
|
|
from math import pi, exp
|
|
|
|
calc = lambda x, a, b: exp(-(x - a)**2 / b) / (2 * pi * b)**0.5
|
|
```
|
|
|
|
Модуль-проверка
|
|
```py
|
|
from IKZ import calc
|
|
from numpy import arange
|
|
|
|
a = int(input('Enter a value: '))
|
|
b = int(input('Enter b value: '))
|
|
res = []
|
|
xRange = arange(a - 3 * b**0.5, a + 3 * b ** 0.5, 0.2 * b ** 0.5)
|
|
for i in range(len(xRange)):
|
|
res.append(calc(xRange[i], a, b))
|
|
|
|
with open('IKZ_res.txt', 'w') as file:
|
|
resString = ''
|
|
for i in range(len(res)):
|
|
divider = ',' if i % 2 == 0 else '\n'
|
|
resString += f'{res[i]}{divider}'
|
|
file.write(resString)
|
|
```
|