GNU Scientific Library
Перейти к навигации
Перейти к поиску
GNU Scientific Library | |
---|---|
![]() | |
Тип | библиотека |
Разработчики | Brian Gough[вд]иPatrick Alken[вд] |
Написана на | Си[2] |
Операционные системы | GNU/Linux[3],BSD[вд][3],Windows[3],macOS[3]иGNU/Hurd[вд][3] |
Первый выпуск | 1996 |
Последняя версия | |
Репозиторий | git.savannah.gnu.org/cgi… |
Лицензия | GPL 3.0+[4][5] |
Сайт | gnu.org/software/…(англ.) |
![]() |
GNU Scientific Library(илиGSL) этобиблиотека,написанная на языке программированияCдля численных вычислений вприкладной математикеинауке.GSL является частью проектаGNUи распространяется на условиях лицензииGPL.
GSL используется, в частности, в таком программном обеспечении, какPSPPиPerl Data Language.
Пример
[править|править код]Следующая программа вычисляет значениефункции Бесселядля 5:
#include<stdio.h>
#include<gsl/gsl_sf_bessel.h>
intmain(void)
{
doublex=5.0;
doubley=gsl_sf_bessel_J0(x);
printf("J0(%g) = %.18e\n",x,y);
return0;
}
Программа должна быть скомпонована с библиотекой GSL после завершения компиляции:
gcc$(gsl-config--cflags)example.c$(gsl-config--libs)
Вывод программы:
J0(5) = -1.775967713143382920e-01
Возможности
[править|править код]- Элементарные функции
- Комплексные числа
- Полиномы
- Специальные функции
- Векторыиматрицы
- Перестановки
- Сочетания
- Сортировка
- Линейная алгебра
- Собственные векторы, значения и пространства
- Быстрые преобразования Фурье
- Численное интегрирование
- Генераторы псевдослучайных чисел
- Генераторы квазислучайных чисел
- Распределения вероятностей
- Статистика
- Гистограммы
- Кортежи
- Интегрирование методом Монте-Карло
- Алгоритм имитации отжига
- Обыкновенные дифференциальные уравнения
- Интерполяция
- Численное дифференцирование
- Разложение по полиномам Чебышёва
- Суммирование рядов
- Преобразование Ханкеля
- Поиск корней
- Оптимизация
- Метод наименьших квадратов
- Алгоритм Левенберга — Маркардта
- Физические константы
- Операции с числами с плавающей запятой в формате IEEE
Поддержка C++
[править|править код]GSL может использоваться в классахC++,исключая использование указателей на методы, потому что типуказателя на методотличается от типауказателя на функцию.Вместо этого должны использоваться указатели на статические функции.