
2. Анализ требований
Интерфейс: Т.к. основной структурой нашей программы является модуль, то для более легкого использования другими пользователями будет доступна только одна функция, которая сама будет управлять входными данными и предоставлять рассчитанный интерполирующий полином.
Входные данные: уравнение функции, строковое представление интервала, переменная x и число точек интерполяции.
Выходные данные: значение интерполирующего полинома.
Основные функции:
1) Основная функция вычисление интерполяционного полинома и перенаправлением входных данных.
Входные данные: строковое представление функций, строковое представление интервала, переменная x и число точек итерации.
Выходные данные: значение полинома.
2) Функция обработки входного интервала представленного в виде строки. Входные данные: строковое представление интервала.
Выходные данные - массив из 2-х элементов содержащий нижнюю и верхнюю границу интервала.
3) Функция вычисления оптимальных значений переменных х0, х1, …, хn.
Входные параметры: верхняя и нижняя граница интервала.
Выходные параметры - массив переменных xi.
4) Функция выбора коэффициентов, функций и аргументов функций из уравнения представленного в виде строки
Входные параметры: строка, представляющая уравнение
Выходные параметры: глобальные переменные (static) состояния функции
5) Функция вычисления значений ”функций”, которую мы ввели, с помощью ранее найденных оптимальных значений переменной x.
Входные данные: массив переменных xi.
Выходные данные: массив значений функций.
6) Функция вычисления значения интерполирующего полинома.
Входные параметры: массив значений функций, массив переменных xi,аргумент x.
Выходные параметры: значение интерполирующего полинома.
3. Проектирование
Архитектура: Сервисно-ориентированная архитектура
Достоинства: отсутствие конкретной привязанности к какой-либо платформе и относительно лёгкое экспортирование в другие приложение настольные или Web.
Структура данных:
1) Массивы представляющие степени и аргументы функций private static double dStep = 0, dKoef = 0;
1) Массивы представляющие сами функции и их аргументы private static string sFunc = "";
Интерфейсы функций:
1) Обработка входного интервала представленного private static double[] GetInterval(string str)
2) Вычисление оптимальных значений переменных х0, х1, …, хn private static double[] GetValuesX(double a, double b, int n)
3) Выбор коэффициентов, функций и аргументов функций из уравнения представленного в виде строки private static void GetParameters(string str)
4) Получение значения определённой функции из массива функций private static double GetValueFunction(double x)
5) Получение всех функций в зависимости от переменной х private static double[] GetAllValuesFuction(double[] x)
6) Вычисление значения интерполирующего полинома private static double GetInterpolation(double[] dX, double[] dF, double x)
4. Руководство программиста
Обработка входных параметров(GetParameters)
Метод считывания параметров основан на разборе строки с помощью символов ^, *. До символа * располагается область коэффициента, если * нет, то коэффициент равен 1 (сохраняется в массив dKoef). После символа ^ расположена область степени функции, если ^ нет то степень равна 1 (сохраняется в массив dStep). Между * и ^ располагается сама функция. Она состоит из идентификатора функции (exp, x, ctg, tg, sin…, сохраняется в массив sFunc).
Общий вид: 2*х^2
2) Обработка оптимальных значений переменных х (GetValuesX)
В этом методе находятся наиболее подходящие значения xi по формуле Чебышева благодаря чему повышается точность интерполяции.
3) Обработка входного интервала (GetInterval)
Преобразование строкового значения в вещественное число, пригодного для использования. В данном методе происходит разбиение строки на нвчало и конец интервала.
4) Обработка значений интерполирующего полинома (GetInterpolation)
Данный метод основан на интерполяции по формуле Лагранжа. Сначала идет расчет для каждой функции отдельно, а затем их суммирование.