LEM - библиотека поисковой машины: математическая часть (численные методы)

Размещение

Исходные тексты для "математики" ищите в LEM\Math (пространство имен lem::Math), объявления собраны в Lem\Include\Math. Примеры использования процедур численных методов вместе с тестами, содержащими реперные числа для задач с известным решением, можно отыскать в проектах в LEM\Demo\Math. Многие из собранных там программ являются готовыми примерами решений типичных "студенческих" задач - от систем линейных уравнений методами Гаусса и прогонки до систем дифференциальных уравнений в частных производных методами конечных разностей.

Кроме этого, специально для решения математических задач объявлены некоторые контейнеры (BaseArray, BaseMatrix, BasePolynome, BaseVector).

 

Эффективность библиотеки и ленивые вычисления

Численные методы в примерах и задачах. Учебное пособие Киреев В.И.,  Пантелеев А.В.

Киреев В.И., Пантелеев А.В.
 Численные методы в примерах и задачах. Учебное пособие

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

A=B*C+D

где аргументы - матрицы, будет создано 2 временных объекта типа матрица, что безусловно вызывает напрасную трату всех ресурсов. Вероятно, этот недостаток будет устранен в обозримом будущем (с применением известного метода генерации шаблонов для ленивых вычислений). Подборка математических процедур не отличается полнотой - все они были реализованы по мере необходимости (курсовые-дипломный проект-диссертация). Однако все исходники хорошо документированы - включая перечень источников (литературы), где описан метод решения или откуда переведен код (часто это были программы на Фортране).

 

Тестовые примеры

Кроме процедур численных методов, библиотека содержит очень большое количество тестовых задач, на которых различные методы проверяются. Решение этих тестовых задач либо известно аналитически, либо есть верифицированные данные (например, для специальных функций). Все тесты собраны в подкаталоге LEM\Demo\Math.

 

Решение дифференциальных уравнений (задачи Коши, краевые задачи)

Функции объявлены в: lem\include\math\differ.h

Реализованы:

 

Аппроксимация, в том числе - интерполяция данных, сплайны

Функции объявлены в: lem\include\math\approxim.h

Реализованы методы и формулы:

 

Немного статистической обработки

Функции объявлены в: lem\include\math\statkeep.h

 

Поиск экстремумов и корней (нулей) функций

Функции объявлены в: lem\include\math\extremum.h

Реализованы методы:

 

 

Специальные функции

Функции объявлены в: lem\include\math\specifun.h

Реализованы функции:

 

Поиск нулей функций

Функции объявлены в: lem\include\math\zeroin.h

 

Численное интегрирование

Функции объявлены в: lem\include\math\integral.h

Реализованные методы:

 

Решение задач на собственные числа и вектора

Функции объявлены в: lem\include\math\eigena.h.

 

Решение систем линейных уравнений

Функции объявлены в: lem\include\math\linsolve.h

Реализованы методы:

 

 

 

Генераторы псевдослучайных чисел

Объявлены в: lem\include\lem_rand.h

Реализованы несколько "классических" мультипликативных генераторов  с равномерным законом распределением.

См. более подробное описание

 

 

  © Mental Computing 2010