Домашнее задание №6

Сборка многомодульных программ. Вычисление корней уравнений и определенных интегралов

Постановка задачи

С заданной точностью ε вычислить площадь плоской фигуры, ограниченной тремя кривыми.

Вариант задания

  1. Уравнения кривых: вариант 2.

    1. $f_1=3(\frac{0.5}{x+1}+1)$
    2. $f_2=2.5x-9.5$
    3. $f_3=\frac{5}{x},\ x > 0$
  2. Методы приближенного решения уравнений: метод хорд(секущих).

  3. Квадратурные формулы: формула трапеций.


Зависимости

NixOS

nix-shell --pure

Fedora

sudo dnf install gcc nasm make glibc-devel.i686 libgcc.i686

Debian(Ubuntu)

sudo apt install -y nasm binutils gcc gdb make gcc-multilib libc6-dev-i386

Arch

Для упрощения установки зависимостей советуется использовать yay или paru.

paru -S nasm binutils gcc gdb make lib32-gcc-libs lib32-glib

Запуск программы:

Поскольку разработка программы производилась под Apple Silicon(arm) без поддержки 32-битной архитектуры(поддержка 32-битных программ была удалена еще в macos mojave 12 сентября 2018 года) для разработки программы был создан docker container.

Сборка (Windows(Powershell), Linux, MacOS High Siera и ниже):

make all

Сбока в docker (Windows(Powershell), Linux, MacOS Mojave и выше):

cd docker-related
docker compose build
docker compose run integral-docker 
make clean
make && ./build/integral

Запуск программы

Исполняемый файл после сборки находится в папке /build

Запуск решения поставленной задачи

./integral

Справка по программе

Параметры для вызова справки: -h, --help Все поддерживаемые флаги запуска программы можно вызвать с помощью этого Текст справки:

-h, --help - вывести это сообщение -r, --root - напечатать абсциссы точек пересечения кривых -i, --iterations - напечатать число итераций, потребовавшихся на приближенное решение уравнений при поиске точек пересечения -R, --test-root F1:F2:A:B:E:R, где F1, F2 — номера используемых функций, A, B, E — значения параметров a, b, eps1 функции root, R - правильный ответ - протестировать функцию root -I, --test-integral F:A:B:E:R, где F — номер используемой функции, A, B, E — значения параметров a, b, eps2 функции integral, R — правильный ответ - протестировать функцию integral