Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная записка(2).doc
Скачиваний:
8
Добавлен:
16.11.2018
Размер:
770.05 Кб
Скачать

2.2.Разработка структурной схемы программного продукта.

Структурная схема – схема, отражающая состав и взаимодействие по управлению частей разрабатываемого продукта. При объектной декомпозиции такими частями являются объекты, при структурной декомпозиции – подпрограммы.

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

В подсистеме «Калькулятор» :

- Во-первых, следует отдельно выделить функцию преобразования строки (содержащей выражение), т.к. она является достаточно громоздкой. Это функция преобразует строку к нужному для разбора виду.

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

В подсистеме «Анализ функции», помимо преобразования строки и разбора выражения имеет смысл реализовать в виде подпрограмм следующие операции, т.к. они достаточно сложные:

- Вычисление производной функции в точке.

- Вычисление определенного интеграла 3 способами(прямоугольников, трапеций, Симпсона)

В подсистеме «Работа с матрицами» такие операции как сумма, разность и произведение нецелесообразно выделять в подпрограммы, т.к. их алгоритмы сравнительно легкие и используются один раз. А вот такие операции, как вычисление определителя матрицы, и вычисление обратной матрицы следует вынести в функции.

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

Программа для работы с функциями и матрицами.

Программа вычисления выражений

Программа анализа функции

Программа работы с матрицами

Преобразование строки с выражением

Разбор выражения

Расчет значения выражения

Вычисление обратной матрицы

Вычисление определителя матрицы

Вычисление производной в точке

Вычисление определенного интеграла

Рисунок 12 –Структурная схема программного обеспечения.

2.3.Разработка основных алгоритмов программного продукта.

Вычисление определителя имеет несколько алгоритмов. Вычисление определителя методом Гаусса имеет вычислительную сложность примерно O (N3), а правило Крамера - O (N4). Но т.к. программа рассчитана на студентов и школьников, то в ней, в отличие от профессиональных программ, не потребуется вычисление сложных определителей. Поэтому был выбран алгоритм разложения матрицы по строке. Этот алгоритм сравнительно прост в реализации и подходит для матриц размерности 10*10.

Ниже приведен алгоритм вычисление определителя матрицы:

При вычислении определителя нужна функция вычеркивания строки и столбца (рисунок 13) и сама функция вычисления определителя( рисунок 14).

Рисунок 13 –Вычеркивание строки и столбца.

Приведенный алгоритм позволяет вычеркнуть строку и столбец, проходящие через элемент с индексами i,j. Результатом является временная temp_matr, которая имеет размерность (n-1)*(n-1).

При вычислении определителя матрицы было решено использовать рекурсивный алгоритм. То есть, при вычеркивании строки и столбца получается матрица размера (n-1)*(n-1). При вызове функции вычисления определителя для этой матрицы получается матрица (n-2)*(n-2) и т.д.. А когда матрица станет 2*2 ее вычисляют по стандартной формуле.

Ниже приведена схема алгоритма вычисления определителя:

Рисунок 14 - схема алгоритма вычисления определителя.