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

3.1 KiB

Индивидуальное контрольное задание по теме 8

Зеленкина Катерина, А-02-23 Вариант 8

Задание

Задание из ЛР7: разработайте анонимную функцию, вычисляющую значение a*sin(x)/x, где a,x – аргументы функции. Рассчитайте эту функцию в интервале значений х: 0<x≤50 с шагом 0.5 и при некотором значении коэффициента a. Обеспечьте запись рассчитанных значений в текстовый файл по одному значению на строке. Отобразите рассчитанные значения в виде графика.

Решение

Содержимое Mod1

# Mod1.py
import math

def calc_function(a, x):
    if x == 0:
        return a
    return a * math.sin(x) / x

def calculate_interval(a, x_start=0.5, x_end=50, step=0.5):
    results = []
    x = x_start
    while x <= x_end:
        value = calc_function(a, x)
        results.append((x, value))
        x += step
    return results

def write_to_file(results, filename="output.txt"):
    with open(filename, 'w', encoding='utf-8') as f:
        for x, val in results:
            f.write(f"{val}\n")
    print(f"Данные записаны в файл: {filename}")

def plot_function(results):
    import matplotlib.pyplot as plt
    
    x_vals = [item[0] for item in results]
    y_vals = [item[1] for item in results]
    
    plt.figure(figsize=(10, 5))
    plt.plot(x_vals, y_vals, label="f(x) = a * sin(x) / x", color='blue')
    plt.title("График функции f(x) = a * sin(x) / x")
    plt.xlabel("x")
    plt.ylabel("f(x)")
    plt.grid(True)
    plt.legend()
    plt.show()

Содержимое Mod2:

import Mod1

print("=" * 50)
print("Расчёт функции f(x) = a * sin(x) / x")
print("=" * 50)

try:
    a = float(input("Введите коэффициент a: "))
    filename = input("Введите имя файла ('output.txt'): ") or "output.txt"
except ValueError:
    print("Ошибка ввода! Используйте числа.")
    exit()

results = Mod1.calculate_interval(a)

print("\nПервые 10 значений:")
for x, val in results[:10]:
    print(f"  x={x:.1f}, f(x)={val:.6f}")

Mod1.write_to_file(results, filename)

print("\nОтображение графика:")
Mod1.plot_function(results)

Вывод:

Введите коэффициент a: 2
Введите имя файла ('output.txt'): output.txt

Первые 10 значений:
  x=0.5, f(x)=1.917702
  x=1.0, f(x)=1.682942
  x=1.5, f(x)=1.329993
  x=2.0, f(x)=0.909297
  x=2.5, f(x)=0.478778
  x=3.0, f(x)=0.094080
  x=3.5, f(x)=-0.200448
  x=4.0, f(x)=-0.378401
  x=4.5, f(x)=-0.434458
  x=5.0, f(x)=-0.383570
Данные записаны в файл: output.txt

Отображение графика:

Скриншот графика1

Файл output.txt был успешно создан: Скриншот файла