Применение высокопроизводительных вычислений для решения задачи Коши с дробным уравнением Риккати по нелокальной неявной конечно-разностной схеме
- Авторы: Твёрдый Д.А.1, Паровик Р.И.1
-
Учреждения:
- Институт космофизических исследований и распространения радиоволн ДВО РАН
- Выпуск: Том 46, № 1 (2024)
- Страницы: 103-117
- Раздел: Информационные и вычислительные технологии
- URL: https://ogarev-online.ru/2079-6641/article/view/256412
- DOI: https://doi.org/10.26117/2079-6641-2024-46-1-103-117
- EDN: https://elibrary.ru/GNJWJM
- ID: 256412
Цитировать
Полный текст
Аннотация
В статье представлено исследование вычислительной эффективности параллельной версии численного алгоритма для решения уравнения Риккати с производной дробного перменного порядка типа Герасимова-Капуто. Численный алгоритм представляет собой нелокальную неявную конечно-разностную схему, которая сводится к системе нелинейных алгебраических уравнений и решается с помощью модифицированного метода Ньютона. Нелокальность численной схемы создает высокую вычислительную нагрузку на вычислительные ресурсы, из-за чего возникает необходимость в реализации эффективных параллельных алгоритмов их решения. Исследуемый на эффективность численный алгоритм реализован на языке C из-за его универсальности при работе с памятью. Распаралеливание проводилось с помощью технологии OpenMP. Проводится серия вычислительных экспериментов на вычислительном сервере NVIDIA DGX STATION (Институт математики имени В.И. Романовского, г. Ташкент, Узбекистан) и ноутбуке HP Pavilion Gaming Laptop Z270X, где решалась задача Коши для дробного уравнения Риккати с непостоянными коэффициентами. На основе среднего времени вычисления вычисляются: ускорение, эффективность и стоимость алгоритма. Из анализа данных видно, что OpenMP параллельная программная реализация нелокальной неявной конечно-разностной схемы показывает ускорение работы от 9-12 раз в зависимости от количества задействованных ядер CPU.
Полный текст
Введение
Численное решение уравнений при математическом моделировании динамических процессов может создавать высокую вычислительную нагрузку на узлы ЭВМ. В частности при решении задач возникающих в дробной динамике может возникать нелокальность и даже переменная нелокальность т.е. зависимостью текущего значения решения от конечного числа предыдущих на временном отрезке. Данное явление называют эффектом памяти [?, ?, ?]. Что будет серьезно замедлять вычисления, так как для его корректного обсчета в алгоритме могут возникать строго последовательные участки, которые нельзя распараллелить. Определение и математическое описание эффекта памяти, также эквиваленитное понятиям: эредитарности, запаздывания, наследственности, было дано В. Вольтерра в 1912 г. [?]. Память с точки зрения математики, может описываться с помощью дробной производной. На сегодняшний день существуют самые разные определения понятия оператора дробного дифференцирования: Лиувилля, Римана-Лиувилля, Вейля, Грюнвальда-Летникова и многие другие. Причём для некоторых из них существуют ещё большие обобщения на случай VO (variable order) порядка [?, ?], что в свою очередь приводит к переменной нелокальности. Обобщение известных и разработка новых математических моделей с учетом эредитарности позволяет заметно уточнить известные результаты [?, ?]. На сегодняшний день уже во многих областях науки и техники успешно применяются производные и интегралы нецелых порядков [?, ?].
Так например, в данном исследовании рассматривается прямая задача Коши для нелинейного дробного уравнения Риккати с непостоянными коэффициентами, которая разрешается численно с помощью методов конечно-разностных схем [?]. Память описывается с помощью оператора дробной производной типа Герасимова-Капуто переменного порядка по времени. Такие модели еще называют нелокальными по времени [?]. Одним из способов решения является нелокальная явная конечно-разностная схема (EFDS). И с помощью технологий OpenMP удалось уменьшить в 3-5 раз время вычисления по EFDS [?]. Другой способ заключается в использовании неявных конечно-разностно схем (IFDS) и методов их решения [?].
В данной работе представлен анализ эффективности параллельной программной реализации решения IFDS методом Ньютона, с использованием программно-аппаратной архитектуры OpenMP – открытого стандарта программного интерфейса для параллельных систем с общей памятью [?]. OpenMP является набором директив для компиляторов, библиотек функций и переменных окружения, и реализует параллельные вычисления с помощью идеи многопоточности – нескольких параллельно выполняемых задач CPU потоках. В качестве основного языка программирования использован язык высокого уровня С, из-за его универсальности, широкими возможностями по работе с памятью и официальной поддержке работы с OpenMP [?]. Анализ проводится на основе данных полученных в результате серии вычислительных экспериментов с использованием разработанного программного кода. Вычисления проводились на вычислительном сервере NVIDIA DGX STATION, расположенном в институте математики имени В.И. Романовского АН РУз, а также персональном ноутбуке.
План исследования статьи следующий: Сначала представляется математическое описание задачи. Дается определение дробной производной типа Герасимова-Капуто переменного порядка и приводится задача Коши для дробного уравнения Риккати; Далее описывается нелокальная неявная конечно-разностная схема (IFDS), на примере дробного уравнения Риккати. Приводится метод Ньютона для решения IFDS и критерий сходимости метода; Даются определения понятий необходимых для анализа. Приводятся в графиках и таблицах результаты анализа эффективности параллельной OpenMP реализации IFDS на основе данных серии вычислений, в сравнении с лучшей последовательной реализацией IFDS.
Постановка задачи
Вопросами о возможности обобщения операций интегрирования и взятия производной нецелого порядка задавались ещё Г. Лейбниц, Г. Лопиталь и Я. Бернули в конце 17 века. В частности, их интересовал вопрос о смысле и значении теоремы о дифференцировании произведения двух функций , при нецелом p значении. Тема активно развивается, с тех пор и по наши дни. К настоящему моменту, существует не один десяток определений дробного дифференцирования, имеющих тот или иной смысл, и находящих свое примирение. Например, Лиувилля, Римана-Лиувилля, Вейля, Грюнвальда-Летникова и многие другие. Причем для некоторых из них существуют обобщения на случай VO (переменного) порядка [?, ?]. Можно отметить труд Самко С., Килбаса А., Маричева О. от 1987 года <<Интегралы и производные дробного порядка и некоторые их приложения>> [?], который подводит итоги исследования данного направления математики за последние 300 лет, и позволяет ознакомится с историей возникновения дробно-дифференциального исчисления.
В этом разделе мы рассмотрим постановку задачи Коши, численные способы решения которой, были ранее подробно изучены автором в работах [?, ?, ?]. Отметим, что дробное исчисление тесно взаимосвязано с понятием наследственности или памяти, рассматриваемой системы, когда текущее ее состояние зависит от конечного числа предыдущих состояний.
Определение [1] Дробной производной типа Герасимова-Капуто [?] где – переменный порядок дробной производной, а функция будем называть дробную производную вида:
(1)
где производная , а – текущее время моделирования, – общее время моделирования, а – гамма-функция Эйлера.
Данное обобщение (1) на случай известной дробной производной Герасимова-Капуто [?, ?] проведено авторами в работе [?]. Согласно [?] можно обобщить (1) на случай .
Рассмотрим задачу Коши [?] для квадратично нелинейного уравнения Риккати с дробной производной переменного порядка [?]:
(2)
где – оператор VO вида (1); – время моделирования; – текущее время моделирования; – неизвестная функция решения; , , – заданные функции, определяющие значения коэффициентов в каждый момент времени.
Замечание [1] В работе [?] рассмотрено уравнение (2) с более общей правой частью . Такая задача уже не обязательно представляет уравнение Риккати, и может описывать широкий класс динамических процессов с переменной памятью в насыщенных средах [?]. Это результат использовался нами в работах [?, ?, ?] при математическом моделировании процессов объёмной активности радона (RVA), где каждый член (2) будет иметь конкретный физический смысл.
Схема численного решения
Решение задачи (2) будет будет даваться с помощью теории конечно-разностных схем [?, ?, ?]. Самое сложное в переходе от дробного уравнения в (2) к его дискретному представлению. В работе [?, p.7] нами предложен несколько вариантов такого перехода для VO Герасимова-Капуто (1) при , в том числе для случая, когда в (1) подразумевается, что интегрирование производится слева.
Определение [2] Нелокальная неявная конечно-разностная схема (IFDS) (от англ. Implicite Finite-Difference Sheme) примет вид:
(3)
где – начальное условие задачи Коши (2); C – известная константа; – шаг дискретизации равномерной сетки; N – число узлов сетки; – номер узла вычислительной сетки; , , – сеточные аналоги функций коэффициентов задачи Коши.
Достоверность вычислений с применением (3) обоснована использованием теории дробного исчисления, методов вычислительной математики, функционального анализа, а также строгостью математических рассуждений. Отметим, что в работе (см. [?, p.7-10]) сформулированы и доказаны ряд ключевые теоремы о сходимости и устойчивости численной схемы IFDS, но в более общем случае при .
IFDS (3) представляет собой систему нелинейных алгебраических уравнений, которую будем решать модифицированным методом Ньютона (MNM) (от англ. Modification Newton Method). Метод начинается с представления схемы (3) как итерационной функции:
(4)
для которой составляется итерационный процесс:
(5)
где
- m – номер (или шаг) итерационного процесса;
- – вектор значений функции решения во всех узлах сетки известного на итерационном m (текущем) шаге;
- – значения вычисляемые по (4) с учетом значений решения на m шаге;
- – начальное приближение на самом первом шаге , вектор необходимый для старта (5) процесса. Некое предполагаемое решение (3) на первом шаге;
- – якобиан представляет собой нижнетреугольную матрицу вида:
(6)
на каждой m итерации цикла.
Замечание [2] Итерационный процесс (5) не сработает, если будет иметь место сингулярность в нуле (точка, где функция не определёна или нестабильна) для итерационной функции (4).
Что касается сходимости, то стоит отметить что:
т.е. определитель у матрицы Якоби (6) должен быть отличен от нуля, потому что только тогда для якобиана существует обратная матрица , т.е. матрица Якоби (6) – невырожденная. И только в таком случае итерационный процесс (5) будет локально сходится порядком .
В качестве начального приближения , в самом простом случае, можно взять вектор составленный из значений – начального условия задачи Коши (3). Однако лучше будет использовать последнее значение вычисленное, например, другим методом (схемой EFDS ) [?, ?], как на рисунке 1, при условии её сходимости [?]. Это немного ускорит сходимость MNM, а также решит вопрос с сингулярностью, т.к. функция в точке будет определена, и сама по себе является некоторым возмущением.
Определение [3] Итерационный процесс (5) продолжается до тех пор пока не будет достигнута заданная точность решения, характеризуемая . Критерием выхода из цикла будет G наименьшая ошибка, полученного решения, такая что .
Анализ вычислительной эффективности
Отметим, что в рамках анализа вычислительной эффективноси использовались следующие вычислительные системы. Вычислительный сервер NVIDIA DGX STATION с характеристиками: CPU: Intel(R) Xeon(R) CPU E5-2698 v4 @ 2.20GHz(1.20GHz) (20 CPUs, 40 Threads); RAM: 263855 Mb. Вычислительный сервер находится в Институте математики имени В.И. Романовского АН Уз, (г. Ташкент, Узбекистан). Также в экспериментах использовался ноутбук HP Pavilion Gaming Laptop Z270X 15-dk0xxx с характеристиками: CPU: Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz (4 CPUs, 8 Threads); RAM: 8192 Mb.
Анализ вычислительной эффективности будем проводить на основе данных по замерам времени вычисления, полученным при множестве запусков исследуемых на эффективность алгоритмов. Из леммы Брента [?, ?, ?] следует что любой алгоритм реализованный для выполнения в системах типа PRAM можно модифицировать таким образом, что его можно выполнить в системах PRAM с меньшим числом потоков. Здесь PRAM – параллельная машина с произвольным доступом к памяти, объединяющая потоков (ядер или CPU), общую память и устройство управления. Это одна из самых распространенных моделей вычислительных систем [?]. Из данной леммы следует, что мы можем сравнивать время вычисления (5) на системах с: одним ядром CPU (последовательный алгоритм) и разным количеством ядер (параллельный алгоритм).
Для замеров времени вычисления рассмотрим тестовый пример, на основе модели (2) со следующими параметрами: ; ; ; ; ; . Результат вычисления по которому представлен на рисунке 1 ниже:
Рис. 1. Результат вычисления итерационной процедуры MNM (5) для IFDS различными алгоритмами
[Figure 1. Calculation result of iterative procedure MNM (5) for IFDS by different algorithms ]
Исследуем, насколько быстрее выполняются алгоритмы реализующие итерационный процесс (5), для чего обратимся к таким понятиям как среднее время работы, ускорение, эффективность и стоимость алгоритма.
В силу того, что мы будем получать немного различные при каждом новом численном эксперименте, а количество экспериментов конечно, то можно считать случайной величиной с некоторой функцией распределения. Тогда для вычисления и прибегнем к понятию математического ожидания (среднее значение) [?] для дискретной случайной величины:
(7)
где i – индекс эксперимента; L – объем выборки.
Рис. 2. Среднее E(·) время расчёта в секундах, при разном c – числе потоков CPU
[Figure 2. Average E(·) calculation time in seconds for different c – number of CPU threads ]
Далее в таблице представим данные по среднее (7) из выборки в значений при разном количестве задействованных c потоков CPU, где:
- пусть – число узлов расчётной сетки для (3), характеризует сложность алгоритма;
- – время вычислений по задаче сложностью N последовательным (Sequential) алгоритмом;
- – время вычислений по задаче сложностью N параллельным OpenMP алгоритмом, на машине потоками CPU;
Table 1: Затраченные время (сек.) и память RAM (Mb) для расчёта итерационной процедуры MNM (5) для IFDS (3) алгоритмом на основе OpenMP [Time spent (sec.) and RAM memory (Mb) for calculating the iterative procedure MNM (5) for IFDS (3) by an algorithm based on OpenMP.]
IFDS | Notebook | Super PC | |||||
i | T1(N) | T6(N) | T1(N) | T6(N) | T17(N) | T28(N) | T39(N) |
1 | 96.74 | 30.06 | 98.2 | 21.32 | 7,86 | 11.06 | 8.3 |
2 | 88.58 | 30.28 | 97.24 | 21.26 | 8.0 | 10.86 | 8.3 |
3 | 94.07 | 29.09 | 98.02 | 21.37 | 7.86 | 10.78 | 7.46 |
4 | 97.04 | 30.67 | 97.71 | 21.2 | 7.9 | 11.02 | 8.37 |
5 | 91.13 | 30.25 | 97.38 | 20.86 | 8.19 | 10.93 | 8.35 |
6 | 95.19 | 30.74 | 99.20 | 20.94 | 7.96 | 10.86 | 8.49 |
7 | 93.50 | 30.74 | 96.96 | 21.0 | 7.99 | 10.91 | 8.5 |
8 | 93.73 | 30.91 | 97.1 | 21.04 | 7.87 | 10.78 | 8.39 |
9 | 92.35 | 29.89 | 97.5 | 21.84 | 8.05 | 10.88 | 8.3 |
10 | 93.00 | 30.71 | 98.54 | 20.81 | 7.93 | 10.83 | 8.4 |
E(T) | 93.53 | 30.34 | 97.78 | 21.16 | 7.961 | 10.89 | 8.286 |
RAM | 24.08 |
Теперь с использованием данных о времени потраченного на выполнение кода мы можем исследовать эффективность параллельного алгоритма. Под эффективностью понимается оптимальное соотношение в координатах: ускорение вычислений – объём занимаемой RAM памяти, по сравнению с последовательной версией алгоритма. Ускорение определяется формулой:
(8)
На основе которой можно определить эффективность от распараллеливания:
(9)
Результаты вычисления по формулам (8) и (9) представлены на рис. 3 и рис. 4 соответственно:
Рис. 3. Ускорение Ac(N) при разном c – числе потоков CPU
[Figure 3. Acceleration Ac(N) at different c – number of CPU threads ]
Рис. 4. Эффективность Vc(N) при разном c – числе потоков CPU
[Figure 4. Efficiency Vc(N) at different c – number of CPU threads ]
Стоимостно–оптимальный показатель на рис. 5, можно определить как произведение количества используемых потоков и времени решения параллельном алгоритмом, пропорциональной сложности наилучшего последовательного алгоритма. Данный показатель определяется формулой:
Рис. 5. Стоимостно–оптимальный показатель COc(N) при разном c – числе потоков CPU
[Figure 5. Cost-optimal COc(N) for different c – number of CPU threads ]
Заключение
Из результатов анализа эффективности параллельного OpenMP алгоритма IFDS видно, что имеет место существенный прирост скорости вычисления, но при увеличении числа потоков для параллельной обработки, их эффективность заметно снижается. При одинаковых параметрах численного эксперимента обе вычислительные системы выдают искомый результат за приблизительно равное время вычисления. Однако наибольшая эффективность достигается при использовании 10-15 потоков. Из анализа данных видно, что OpenMP параллельная программная реализация IFDS показывает ускорение работы от 9 - 12 раз в зависимости от количества задействованных ядер CPU.
Благодарности
Авторы выражают особую благодарность д.ф.-м.н., проф., Хайотову Абдулло Рахмоновичу за оказанную помощь при организации стажировки в Институте математики им. В.И. Романовского Академии наук Республики Узбекистан.
Авторы выражают особую благодарность к.ф.-м.н., Болтаеву Азизу Кузиевичу за оказанную помощь при организации работ на вычислительном сервере NVIDIA DGX STATION в Институте математики им. В.И. Романовского Академии наук Республики Узбекистан.
Аббревиатуры
CPU | Central Processing Unit |
OpenMP | Open Multi-Processing |
GPU | Graphics Processing Unit |
CUDA | Compute Unified Device Architecture |
EFDS | Explicit Finite-difference Method |
IFDS | Implicit Finite-difference Method |
RVA | Radon Volumetric Activity |
NM | Newton Method |
RAM | Random Access Memory |
PC | Personal Computer |
PRAM | Parallel Random Access Machine |
Об авторах
Дмитрий Александрович Твёрдый
Институт космофизических исследований и распространения радиоволн ДВО РАН
Email: romanparovik@gmail.com
ORCID iD: 0000-0001-6983-5258
кандидат физико-математических наук, научный сотрудник лаборатории элетромагнитных излучений
Россия, 684034, Паратунка, ул. Мирная, д. 7Роман Иванович Паровик
Институт космофизических исследований и распространения радиоволн ДВО РАН
Автор, ответственный за переписку.
Email: romanparovik@gmail.com
ORCID iD: 0000-0002-1576-1860
доктор физико-математических наук, доцент, ведущий научный сотрудник лаборатории моделировании физических процессов
Россия, 684034, Паратунка, ул. Мирная, д. 7Список литературы
- Uchaikin V. V. Fractional Derivatives for Physicists and Engineers. Vol. I. Background and Theory Berlin Springer 2013 373 978-3-642-33911-0 https://doi.org/10.1007/978-3-642-33911-0DOI: 10.1007/978-3-642-33911-0
- Нахушев А. М. Дробное исчисление и его применение Москва Физматлит 2003 272 5-9221-0440-3
- Parovik R. I. Mathematical models of oscillators with memory Oscillators-Recent Developments 2019 3–21 https://doi.org/10.5772/intechopen.81858DOI: 10.5772/intechopen.81858
- Volterra V. Sur les équations intégro-différentielles et leurs applications Acta Mathematica 1912 35 1 295–356 https://doi.org/10.1007/BF02418820DOI: 10.1007/BF02418820
- Patnaik S., Hollkamp J. P., Semperlotti F. Applications of variable-order fractional operators: a review Proceedings of the Royal Society A 2020 476 2234 20190498 https://doi.org/10.1098/rspa.2019.0498DOI: 10.1098/rspa.2019.0498
- Ortigueira M. D., Valerio D., Machado J. T. Variable order fractional systems Communications in Nonlinear Science and Numerical Simulation 2019 71 231–243 https://doi.org/10.1016/j.cnsns.2018.12.003DOI: 10.1016/j.cnsns.2018.12.003
- Petras I. Fractional-order nonlinear systems: modeling, analysis and simulation Berlin, Germany Beijing and Springer-Verlag 2011 218 9783642181009
- Sun H., Chang A., Zhang Y., Chen W. A review on variable-order fractional differential equations: mathematical foundations, physical models, numerical methods and applications Fractional Calculus and Applied Analysis 2019 22 1 27–59 https://doi.org/10.1515/fca-2019-0003DOI: 10.1515/fca-2019-0003
- Rossikhin Y. A., Shitikova M. V. Application of fractional calculus for dynamic problems of solid mechanics: novel trends and recent results Applied Mechanics Reviews 2010 63 1 1–5 https://doi.org/10.1115/1.4000563DOI: 10.1115/1.4000563
- Mainardi F. Fractional Calculus and Waves in Linear Viscoelastisity: An Introduction to Mathematical Models. 2nd edition Singapore World Scientific Publishing Company 2022 625 1783263989 https://doi.org/10.1142/p926DOI: 10.1142/p926
- Tverdyi D. A., Parovik R. I. Investigation of Finite-Difference Schemes for the Numerical Solution of a Fractional Nonlinear Equation Fractal and Fractional 2022 6 1:23 1–27 https://doi.org/10.3390/fractalfract6010023DOI: 10.3390/fractalfract6010023
- Volterra V. Theory of functionals and of integral and integro-differential equations New York Dover publications 1959 226
- Tverdyi D. A., Parovik R. I., Hayotov A. R., Boltaev A. K. Parallelization of a Numerical Algorithm for Solving the Cauchy Problem for a Nonlinear Differential Equation of Fractional Variable Order Using OpenMP Technology Bulletin KRASEC. Physical and Mathematical Sciences 2023 43 2 87–110 https://doi.org/10.26117/2079-6641-2023-43-2-87-11DOI: 10.26117/2079-6641-2023-43-2-87-11
- Tverdyi D. A., Parovik R. I. Hybrid GPU-CPU efficient implementation of a parallel numerical algorithm for solving the Cauchy problem for a nonlinear differential Riccati equation of fractional variable order Mathematics 2023 11 15:3358 1–21 https://doi.org/10.3390/math11153358DOI: 10.3390/math11153358
- Борзунов С. В., Кургалин С. Д., Флегель А. В. Практикум по параллельному программированию: учебное пособие Санкт-Петербург БХВ 2017 236 978-5-9909805-0-1
- Калиткин Н. Н. Численные методы. 2-е изд. Санкт–Петербург БХВ 2011 592 978-5-9775-0500-0
- Самко С. Г., Килбас А. А., Маричев О. И. Интегралы и производные дробного порядка и некоторые их приложения Минск Наука и техника 1987 688
- Parovik R. I. Tverdyi D. A. Some Aspects of Numerical Analysis for a Model Nonlinear Fractional Variable Order Equation Mathematical and Computational Applications 2021 26 3 55 https://doi.org/10.3390/mca26030055DOI: 10.3390/mca26030055
- Tverdyi D. A., Parovik R. I. Application of the Fractional Riccati Equation for Mathematical Modeling of Dynamic Processes with Saturation and Memory Effect Fractal and Fractional 2022 6 3:163 1–35 https://doi.org/10.3390/fractalfract6030163DOI: 10.3390/fractalfract6030163
- Parovik, R. I. On a Finite-Difference Scheme for an Hereditary Oscillatory Equation Journal of Mathematical Sciences 2021 253 4 547-557 https://doi.org/10.1007/s10958-021-05252-2DOI: 10.1007/s10958-021-05252-2
- Gerasimov A. N. Generalization of linear deformation laws and their application to internal friction problems Applied Mathematics and Mechanics 1948 12 529–539
- Caputo M. Linear models of dissipation whose Q is almost frequency independent – II Geophysical Journal International 1967 13 5 529–539 https://doi.org/10.1111/j.1365-246X.1967.tb02303.x3DOI: 10.1111/j.1365-246X.1967.tb02303.x
- Jeng S., Kilicman A. Fractional Riccati Equation and Its Applications to Rough Heston Model Using Numerical Methods Symmetry 2020 12 1–20 https://doi.org/10.3390/sym12060959DOI: 10.3390/sym12060959
- Tverdyi D. A., Parovik R. I., Makarov E. O., Firstov P. P. Research of the process of radon accumulation in the accumulating chamber taking into account the nonlinearity of its entrance E3S Web Conference 2020 196 02027 1–6 https://doi.org/10.1051/e3sconf/202019602027DOI: 10.1051/e3sconf/202019602027
- Tverdyi D. A., Makarov E. O., Parovik R. I. Hereditary Mathematical Model of the Dynamics of Radon Accumulation in the Accumulation Chamber Mathematics 2023 11 4:850 1–20 https://doi.org/10.3390/math11040850DOI: 10.3390/math11040850
- Brent R. P. The parallel evaluation of general arithmetic expressions Journal of the Association for Computing Machinery 1974 21 2 201–206 https://doi.org/10.1145/321812.321815DOI: 10.1145/321812.321815
- Corman T. H., Leiserson C. E., Rivet R. L., Stein C. Introduction to Algorithms, 3rd Edition Cambridge The MIT Press 2009 1292 978-0262033848
- Shao J. Mathematical Statistics. 2-ed New York Springer 2003 592 978-0-387-95382-3
Дополнительные файлы
