本文收集各种 C 和 C++ 优质的科学计算算法开源代码库。数值优化的世界,这些算法库功能强大、快速、高效、优雅,拿去比较普通人编写的算法代码,会发现自己的代码卑贱的如同草芥蝼蚁一般。

1. GSL

GNU Scientific Library (GSL) 是一个用于科学计算的C/C ++ 语言类库。有超过1000个函数,算是比较全面。不过在某些方面还有不足,比如优化没有遗传算法,粒子群算法等,积分性能不如cuba。

函数包括:

  • 复数
  • 多项式的根
  • 特殊功能
  • 向量和矩阵
  • 排列
  • 排序
  • BLAS支持
  • 线性代数
  • 特征系统
  • 快速傅立叶变换
  • 正交
  • 随机数
  • 拟随机序列
  • 随机分布
  • 统计数据
  • 直方图
  • n元组
  • 蒙特卡洛积分
  • 模拟退火
  • 微分方程
  • 插补
  • 数值微分
  • 切比雪夫逼近
  • 系列加速
  • 离散汉克尔变换
  • 寻根
  • 最小化
  • 最小二乘拟合
  • 物理常数
  • IEEE浮点数
  • 离散小波变换
  • 基础样条
  • 运行统计
  • 稀疏矩阵和线性代数

2. Cuba

Cuba提供四种积分方法库,包含三种蒙特卡洛积分和一种精确积分。这几个方法的性能要好于GSL中提供的蒙特卡洛积分。

3. Boost

Boost 是为 C++ 语言标准库提供扩展的一些 C++ 程序库的总称。其中也包含了和科学计算有关的库。

数学和数字库包括:

4. Eigen

Eigen 是一个线性算术的C++模板库,包括:线性代数、矩阵、矢量运算、数值分析以及相关算法。功能强大、快速、优雅以及支持多平台。

5. MTL

Matrix Template Library(MTL)专注于线性代数相关的计算任务,如各种形式矩阵的生成(对角,共轭,稀疏,对称等),相关的计算,变换,以及与一维向量的运算。

6. FFTW

FFTW 是一个C语言的快速傅立叶变换库。它包括复杂的,真实,对称的,多层面的,和并行转换,并且可以处理任意大小的efficiently.It阵列通常比其他免费提供的FFT实现更快,更与供应商的调整库(基准可在网页查阅)竞争。为了实现这一性能,它使用新的代码生成和运行时的自我优化技术(以及许多其他的技巧)。

7. GAlib

GAlib遗传算法库,包含四种遗传算法,GAListGenome 链表形、GATreeGenome 树形、GAArrayGenome 数组形、GABinaryString 二进制串形。

8. libGeneiAL

libGeneiAL可扩展遗传算法库。它提供了一个框架,可通过使用自定义适应度函数在生成过程中最大化种群中染色体的适应度值来解决优化问题。该库为用户提供了高度的灵活性和可扩展性,同时还为核心功能提供了良好的可扩展性。

9. libfgen

libfgen是一个实现高效且可自定义的遗传算法(GA)的库。它还提供了粒子群优化(PSO)功能和用于实值函数最小化或模型拟合的接口。它是用C编写的,但是也可以使用C ++编译器进行编译。

特征

  • 人口数量固定,可快速高效地实施通用Analytics(分析)。
  • 具有多种选择,变异和交叉类型的可定制GA。
  • 应用程序可以提供自定义的种子,变异和交叉运算符。
  • 线程安全的,可以将多个线程用于适应度计算或并发遗传算法的群岛。
  • 具有类似于GA的API的粒子群优化算法。
  • 使用GA或PSO的高级易用模型拟合和功能最小化界面。
  • 在真实数据集上进行了测试(系外行星的轨道与恒星径向速度数据的拟合)。
  • 使用提供的文档清除HTML(html)。
  • 提供了命令行和图形示例程序。
  • 例子包括旅行商问题,线性遗传规划和纹理压缩。

10. C++ Wavelet Libraries

C++ Wavelet Libraries是C ++小波变换算法库专注于速度和易用性。

可用功能包括

  • 一维DWT和IDWT实现(两种模式)
  • 2DWT和IDWT的实现(两种模式)
  • 一维SWT和ISWT实现(固定小波变换)
  • 2D SWT实施
  • 使用FFTW3库实现

11. KFilter

KFilter卡尔曼滤波器的开源算法库。提供了可配置的模板类。子类允许为过滤器定义不同的矩阵内容。卡尔曼滤波器在航空,机器人视觉和机器人技术中已经使用了一段时间。估计状态向量并通过使用从传感器获取的度量来校正估计是有用的。它的主要用途是用于跟踪或数据融合。

12. Dlib

Dlib主要为深度学习服务的算法库,包含深度学习相关的优化算法,也包含一些图形图像处理,主要为深度学习的实现服务。被广泛的用在行业和学术领域,包括机器人,嵌入式设备,移动电话和大型高性能计算环境。

13. MRPT

Mobile Robot Programming Toolkit (MRPT)机器人编程算法库,主要是机器人相关的定位,计算机视觉图像处理,运动规划相关的算法。

14. Algorithms - C++

Algorithms - C++算法涵盖了计算机科学,数学和统计学,数据科学,机器学习,工程等多个主题。

回溯

位操作

密码

数据结构

动态编程

几何学

图形

图形学

贪婪算法

散列

线性代数

机器学习

数学

数值方法

数据结构操作

其他

可能性

范围查询

搜索

排序

字符串