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

2.5 KiB

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

Марков Никита Сергеевич, А-03-23

11 вариант

Разработайте анонимную функцию с 5 аргументами: х, a,b,c,d, вычисляющую значение a/(1+exp(-b-cx-dx2)). Рассчитайте значения этой функции в диапазоне значений входного параметра х: -20 ≤ x ≤ 20 с шагом 2 при некоторых положительных значениях параметров a,b,c,d. Обеспечьте запись рассчитанных значений в текстовый файл по три значения на строке, разделенных пробелами.

Разработайте функцию, на ее основе создайте модуль. Создайте второй модуль, в котором должны быть инструкции для ввода/создания исходных данных для проверки работы функции, вызов функции и отображение полученных результатов.

#test func
import math  
f = lambda x, a, b, c, d: a / (1 + math.exp(-b - c * x - d * x**2))

def calc_and_save(a, b, c, d, filename="results.txt"):
    xs = [x for x in range(-20, 21, 2)]
    values = [f(x, a, b, c, d) for x in xs]

    with open(filename, "w", encoding="utf-8") as file:
        for i, val in enumerate(values, start=1):
            file.write(f"{val:.6f}")
            if i % 3 == 0:
                file.write("\n")
            else:
                file.write(" ")

#test_main
from test_func import calc_and_save

def main():
    print("Ввод параметров a, b, c, d (положительные числа):")
    a = float(input("a = "))
    b = float(input("b = "))
    c = float(input("c = "))
    d = float(input("d = "))

    filename = input("Имя выходного файла (по умолчанию results.txt): ").strip()
    if not filename:
        filename = "results.txt"

    calc_and_save(a, b, c, d, filename)

    print(f"Расчёт завершён. Результаты записаны в файл {filename}.")

if  __name__ == "__main__":
    main()
    

results.txt

1.905148 1.839654 1.753066 1.652707 1.551128 1.462117 1.396930 1.362707 1.362707 1.396930 1.462117 1.551128 1.652707 1.753066 1.839654 1.905148 1.948838 1.974766 1.988582 1.995248 1.998178