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

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("x=", x, "→ y=", values[i])


>>> 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

График сохранён в файле Figure_1.png График