Математическая библиотека для .NET
Скачать (исходники + скомпилированный release)
Эта библиотека выросла из библиотеки для комплексных чисел в .NET, которую сделал сначала. Потом туда же добавил преобразования Фурье, а потом, когда понадобилось сделать еще и аппроксимацию, то понял, что надо разбить библиотеку на отдельные сборки. Ниже кратко опишу все dll-ки и что в них находится. Использование этой библиотеки никаких вопросов вызвать не должно, да и в юнит-тестах всегда можно подсмотреть как что вызывать.
Complex.dll - комплексные числа
Сюда входят два класса - Complex, в котором, собственно, и содержатся все операции над числами, и Polar - вспомогательный класс для создания комплексных чисел в полярной системе координат (по модулю и аргументу).
Конструкторов у этих классов несколько:
public Complex (double re, double im)
public Complex (Complex x)
public Complex (Polar x)
А для создания класса Polar есть следующие конструкторы:
public Polar (double r, double phi)
Также есть операторы для преобразования между Polar, Complex и double.
Естественно, реализованы основные математические операции над комплексными числами, как то сложение, умножение, деление, получение комплексно-сопряженного числа, извлечение корня, включая извлечение корня из отрицательных double (Sqrt), извлечение корней n-ой степени (Radical), вычисление экспоненты комплексного числа (Exp), возведение в степень (Pow) и такие операции как Sin, Cos, arcsin (Asin), arccos (Acos) и вычисление натурального логарифма (Log).
Fourier.dll - преобразования Фурье
Заметьте, что здесь именно преобразованиЯ, а не только быстрое преобразование Фурье. Статический класс Fourier содержит следующие функции:
- Прямое (FFT) и обратное (IFFT) быстрое преобразование Фурье. В качестве входного массива принимается double[] или Complex[], описанный выше.
- Дискретное прямое (DFT) и обратное (IDFT) преобразование фурье (не быстрое, но для которого зато размер входного массива не обязательно должен равняться степени двойки).
- Двумерное быстрое прямое (FFT2) и обратное (IFFT2) преобразование Фурье. В качестве входных массивов могут быть double[,] и Complex[,].
- Двумерное дискретное прямое (DFT2) и обратное (IDFT2) преобразование Фурье.
- Функция fftShift для представления полученных частот, с помощью быстрого преобразования Фурье, таким образом, чтобы нулевая частота оказалась в центре массива. Эта же функция проводит и обратную операцию. Так же есть перегруженная функция для схожей обработки результатов двумерного преобразования Фурье.
Approximation.dll - аппроксимация функций
В данный момент в этой сборке находятся два класса - Spline для аппроксимации (интерполяции, экстраполяции) массива кубическим сплайном и Polynomial для аппроксимации полиномом, степень которого задается при создании этого класса, методом наименьших квадратов. Все эти классы реализуют интерфейс IApproximation, который содержит единственный член - double GetValue (double xpoint). Это сделано для того, чтобы можно было бы не зависеть от типа аппроксимации.
Алгоритмы для аппроксимаций я брал из книги В. П. Дьяконова "Справочник по алгоритмам и программам на языке Бейсик для персональных ЭВМ", 1987 г.
UnitTest.dll - юнит-тесты всех классов
Для каждого из этих классов были написаны юнит-тесты, по которым можно заодно посмотреть как использовать нужный класс. Для создания Юнит-тестов использовалась библиотека NUnit версии 2.2.7.
Ну что ж, надеюсь Вам понравится эта библиотека.
Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.