Разработки СО РАН - каталог программ

На данной странице представлен каталог программ, включенных в Фонд алгоритмов и программ Сибирского отделения РАН. Полный каталог программ и БД, включенных в Фонд, а также любые выборки по научным центрам, объединенным ученым советам и др. вы можете найти на данной странице.

2014-12-30

Назначение - для иллюстрации процесса решения линейного дифференциального уравнения первого порядка методом Бернулли-Фурье с добавлением по одному символу после временной задержки.

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

Используемый алгоритм - в массиве строк размещено решение произвольного линейного дифференциального уравнения методом Бернулли-Фурье от формулировки исходного уравнения до записи общего решения со всеми промежуточными формулами. Строки включают управляющие символы, позволяющие в графическом представлении аналитических преобразований ту или иную часть строки разместить в числителе или знаменателе дроби, вне дроби или под радикалом. Информация о каждом графическом символе, в том числе и о горизонтальных и вертикальных линиях, входящих в формулу, фиксируется в массивах. Счетчик выведенных на экран символов изменяется с некоторой временной задержкой, обеспечивая посимвольный вывод всех преобразований. Более подробно алгоритм изложен в статье [1].

[1] Попов А.А. Методика программирования на языке Java тренажеров по математике с посимвольным контролем аналитических преобразований. Программная инженерия, 2012, №8, с.38-43.

Функциональные возможности - программа управляется 4 клавишами и является электронным эквивалентом процесса написание символов на аудиторной доске. Случайно генерируется более 100 шаблонов линейных дифференциальных уравнений, содержащих различные варианты функций из таблицы производных. На основе данных шаблонов генерируются различные линейные дифференциальные уравнения с подробными решениями, на примере которых можно проиллюстрировать метод Бернулли-Фурье и дополнительно процедуру подведения функции под знак дифференциала.

Инструментальные средства создания - программы написаны на языке Java с использованием среды Eclipse

Во вложении запакованный файл IllustrBernulli.rar содержит 7 файлов: файл с расширением .bat необходим для загрузки файла с основным классом IllustrBernulli.class, который в процессе выполнения использует остальные классы.В файле IllustrBernulli.doc проиллюстрированы основные моменты работы программы.

2014-12-30

Назначение: ввод всех промежуточных и окончательных формул решения линейного дифференциального уравнения с использованием метода Бернулли-Фурье в графическом виде с контролем при добавлении каждого символа.

Область применения: в учебных заведениях при обучении решению линейных дифференциальных уравнений, выработки навыков использования метода Бернулли-Фурье.

Используемый алгоритм: в массиве строк размещено решение произвольного линейного дифференциального уравнения со всеми промежуточными действиями, полученного с помощью метода Бернулли-Фурье. Для каждого символа фиксируется информация о том, в каком месте формулы он находится. Последовательность таких символов определяет эталонное решение, с которым сравниваются вводимые символы. К эталонному решению добавлено несколько исключений, устраняющих неоднозначность при расположении вводимых символов в текущей формуле. Подробнее алгоритм изложен в статье [1].

[1] Попов А.А. Методика программирования на языке Java тренажеров по математике с посимвольным контролем аналитических преобразований. Программная инженерия, 2012, №8, с.38-43.

Функциональные возможности: случайно генерируется более 100 шаблонов линейных дифференциальных уравнений, содержащих различные варианты функций из таблицы производных. В каждый шаблон кроме табличных функций включаются их аргументы в виде квадратичной или линейной функции со случайно генерируемыми коэффициентами. Различия в функциях и их аргументах обеспечивают случайный выбор интегрируемого уравнения из объема, содержащего не менее 10000 различных уравнений.

Инструментальные средства создания: программы написаны на языке Java с использованием среды Eclipse

Во вложении архивный файл TrainBernulli.rar содержит 7 файлов: файл с расширением .bat необходим для загрузки файла с основным классом TrainBernulli.class, который в процессе выполнения использует остальные классы. В файле TrainBernulli.doc проиллюстрированы основные моменты работы программы.

2014-12-24

Назначение - Тест проверяет принадлежность к простым числам сверхбольших чисел Мерсенна.
 

Область применения - Теория чисел, тестирование производительности вычислительных систем.
 

Используемый алгоритм - Используется  алгоритм теста Люка-Лемера, в котором сверхбольшие числа представлены в виде динамических линейных массивов в двоичной системе счисления. Арифметические операции над числами выполняются по алгоритмам длинной арифметики. Поиск очередного самого большого простого числа   Мерсенна вида 2PM - 1 , где РM, в свою очередь, простое число, принимающее значения более 57 млн, является весьма трудоемкой задачей. В соответствии с тестом Люка-Лемера выполняется (PM -2) итераций цикла, на каждой из которых определяется целочисленный остаток от деления на число Мерсенна. Эта операция и определяет в основном трудоемкость теста. Только при представлении чисел в двоичной системе счисления представляется возможность упростить эту операцию до одной элементарной операции сложения. 

В программе реализован разработанный авторами алгоритм вычисления целочисленного остатка при делении на сверхбольшое чисто Мерсенна в двоичной системе счисления.  Целочисленный остаток в двоичной системе счисления определяется как сумма двух частей в записи делимого. Первая часть записи от разряда единиц (нулевой разряд) до разряда с номером (PM - 1), где PM - показатель степени числа Мерсенна. Вторая часть записи от разряда с номером PM и до старшего разряда в записи делимого. Использование данного алгоритма позволяет существенно снизить трудоемкость теста Люка-Лемера и время работы программы.

Алгоритм описан в статье Гончаренко В.Е. "Оптимизация вычислений целочисленного остатка в тесте Люка-Лемера для сверхбольших чисел Мерсенна" в сборнике статей Международной научно-практической конференции "Теоретические и практические вопросы науки XXI века", 2014 г., г. Уфа, Ч2.

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

Инструментальные средства создания - Microsoft  Visual Studio 2010, Visual C++.

Во Вложении прикреплен файл исходного кода программы на языке C++.

2014-12-22

Назначение - Программа представляет собой электронный конструктор, позволяющий моделировать плотные упаковки шаров, заполняющих сферу. Можно производить расчет дисперсии как для одного, так и для большого колличества построений в автоматическом режиме.

Область применения - Программа может быть использована в  области физики, материаловедения, математики.

Используемый алгоритм:   

Теория плотных упаковок и алгоритмы построения для них описаны в [1,2,3].

1. Sloane, N. J. A. (1998). "The Sphere-Packing Problem".Documenta Mathematika 3: p. 387–396.

2. В. М. Сидельников. О плотнейшей укладке шаров на поверхности n-мерной евклидовой сферы и числе векторов двоичного кода с заданным кодовым расстоянием. Доклады АН СССР, 1973, т. 213, № 5, с. 1029–1032

3. O’Toole, P. I.; Hudson, T. S. (2011). "New High-Density Packings of Similarly Sized Binary Spheres". The Journal of Physical Chemistry C 115 (39): 19037.

Реализованный в программе алгоритм разработан автором  и заключается в следующем:

  • Упорядоченная плотная упаковка шаров (послойная). Представляет собой заполнение большого шара слоями малых шаров. Алгоритм: построение каждого слоя начинается с края окружности каждого слоя с последующим уменьшением расстояния до центра слоя.
  • Упорядоченная плотная упаковка шаров (кубическая). Представляет собой обычную кубическую упаковку, вложенную в шар. Алгоритм: вокруг каждого шара строится строится восемь окружающих его шаров.
  • Неупорядоченная плотная упаковка шаров в сферических координатах. Представляет собой неплотную упаковку шаров, расположенных случайным образом. Алгоритм: построение нескольких шаров осуществляется случайным образом, затем построение в сферических координатах.
  • Неупорядоченная плотная упаковка шаров на основе кубической. Представляет собой неплотную упаковку шаров расположенных случайным образом. Алгоритм: построение нескольких шаров осуществляется случайным образом, затем построение по принципу кубической упаковки.
  • Неупорядоченная упаковка шаров с малой плотностью. Алгоритм: Построение шаров случайным образом. Число генерирования координат в 1000 раз превышает отношение кубов радиусов большого и малого шаров (R1)3/(R2)3 .
  • Неупорядоченная упаковка шаров со средней плотностью. Алгоритм: Построение шаров случайным образом. Число генерирования координат в 10000 раз превышает отношение кубов радиусов большого и малого шаров (R1)3/(R2)3 .
  • Неупорядоченная упаковка шаров с большой плотностью. Алгоритм: Построение шаров случайным образом. Число генерирования координат в 100000 раз превышает отношение кубов радиусов большого и малого шаров (R1)3/(R2)3 .

Функциональные возможности

   С помощью данной программы можно:

         - осуществлять различные построения плотных упаковок;

         - осуществлять обзор упаковок в режиме 3D;

         - сохранять абсолютно точное изображение упаковки.

        Одними из главных особенностей программы являются различные варианты построения упаковок и последующий расчет дисперсии и среднеквадратического отклонения . Для этой цели предусмотрено следующее:

         - шары пожно строить полностью или строить только их центры координат;

         - предусмотрена защита от столкновений и наложений внутренних шариков;

         - работа с объектами происходит в реальном времени;

         - автоматический расчет дисперсии для большого числа случаев;

         - удобные настройки построения объектов.         

Инструментальные средства создания - Среда программирования Delphi 7.0

2014-11-10

Назначение. Программа предназначена для уточнения формы источника цунами по двум типам измерений высоты возмущения водной поверхности океана: точечные (надводные буи DART (Deep-ocean Assessment and Reporting of Tsunamis)) и пространственные (альтиметрические спутниковые) измерения.

Область применения. Океанология. Предсказание чрезвычайных ситуаций (цунами). Программа может быть применена для определения формы возможного источника цунами по нескольким типам данных: надводные станции типа DART и спутниковые данные.

Используемый алгоритм:
В работе используется градиентный метод решения обратных задач (метод сопряженных градиентов) для волнового уравнения, основанный на решении соответствующей сопряженной задачи [1-3].

В программе есть возможности  решения задач:

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

В отличие от программ аналогичного типа данная программа позволяет:
1. Анализировать матрицы дискретных обратных задач (1), (2) и (3) с помощью метода сингулярного разложения, тем самым определять степень некорректности обратных задач;
2. Совмещать данные обратных задач ((3) = (1) + (2)) для улучшения устойчивости восстановления начального возмущения (регуляризация обратной задачи).

[1] S.I. Kabanikhin, M.A. Bektemesov, D.B. Nurseitov, O.I. Krivorotko, A.N. Alimova. An optimization method in the Dirichlet problem for the wave equation // Journal of Inverse and Ill-Posed Problems, V. 20, N. 2, 2012, pp. 193-211.
[2] S.I. Kabanikhin, A. Hasanov, I.V. Marinin, O.I. Krivorotko, D. Khidasheli. A variational approach to reconstruction of an initial tsunami source perturbation // Applied Numerical Mathematics, V. 83, 2014, pp. 22-37.
[3] S.I. Kabanikhin, O.I. Krivorotko. Optimization approach to combined inverse tsunami problem // Proceedings conference Inverse Problems – from Theory to Applications (IPTA2014), Bristol, UK, 26-28 August, 2014, pp. 102-107.

Функциональные возможности подробно описаны в Инструкции в Приложении. Рекомендуется не задавать области размером более 100х100 километров, дабы ограничить время выполнения программы до 30 минут. Для визуализации результата в качестве примера приведены исполнительные файлы отрисовки в Gnuplot.

Инструментальные средства создания: программа разработана на языке программирования Fortran 90 в среде разработки Visual Studio 2010 с использованием функций BLAS и LAPACK библиотеки Intel Math Kernel Library и открытого стандарта для распараллеливания программ OpenMP.

В приложении находятся два файла:
1. instrukciya-sovmeshchennaya_obratnaya_zadacha.pdf - описание алгоритма и программы.
2. combenditp.rar - архив, содержащий 5 файлов:

Interface_CombinedITP.exe - исполняющий файл-форма, генерирующая входные параметры и вызывающая расчетный модуль.

OMITP.exe - расчетный математический модуль. Запускается автоматически файлом Interface_CombinedITP.exe.

Model_Bath.dat - тестовый файл, описывающий входную функцию дна (двумерный массив).

Plot2D.plt - исполняющий файл, позволяющий отрисовывать в формате *.eps выходные одномерные файлы как двумерные графики.

Plot3D_result.plt - исполняющий файл, позволяющий отрисовывать в формате *.eps входные и выходные двумерные файлы как трехмерные графики.