форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
2.4 KiB
2.4 KiB
Контрольное задание по теме 8
Симанков Б., А-02-23
Задание
Разработать функцию, на ее основе создать модуль. Создать второй модуль, в котором должны быть инструкции для ввода/создания исходных данных для проверки работы функции, вызов функции и отображение полученных результатов.
Разработайте анонимную функцию, вычисляющую значение a*sin(x)/x, где a,x – аргументы функции. Рассчитайте эту функцию в интервале значений х: 0<x≤50 с шагом 0.5 и при некотором значении коэффициента a. Обеспечьте запись рассчитанных значений в текстовый файл по одному значению на строке. Отобразите рассчитанные значения в виде графика.
Решение
Содержание func_calc.py:
>>> import math
>>> calc = lambda a, x: a * math.sin(x) / x
>>> def calculate_all(a):
>>> results = []
>>> x = 0.5
>>> while x <= 50:
>>> y = calc(a, x)
>>> results.append(y)
>>> x += 0.5
>>> return results
>>> def save_results(results):
>>> with open("results.txt", "w") as f:
>>> for y in results:
>>> f.write(f"{y}\n")
>>> print("Результаты сохранены в results.txt")
Содержание main.py:
>>> import matplotlib.pyplot as plt
>>> from func_calc import calculate_all, save_results
>>> a = float(input("Введите число a: "))
>>> values = calculate_all(a)
>>> save_results(values)
>>> print("\nПервые 5 значений:")
>>> for i in range(5):
>>> x = 0.5 * (i + 1)
>>> print(f"x={x:.1f} → y={values[i]:.6f}")
>>> x_points = [0.5 * i for i in range(1, len(values)+1)]
>>> plt.plot(x_points, values)
>>> plt.show()
Тестирование:
>>> import main
Введите число a: 5
Результаты сохранены в results.txt
Первые 5 значений:
x=0.5 → y=4.794255
x=1.0 → y=4.207355
x=1.5 → y=3.324983
x=2.0 → y=2.273244
x=2.5 → y=1.196944
