🧮 一、通用数值计算库(矩阵、线性代数、数值解方程)

1. Eigen ✅(C++ 最常用)

  • 📌 功能:线性代数、矩阵运算、特征值分解、SVD、QR、LU、非线性方程求解、优化。

  • 🧠 特点

    • 纯头文件实现(不需要额外链接库)

    • 高性能,接近手写优化代码

    • 被广泛用于科学计算、机器人、计算机视觉、机器学习等领域

  • 📎 许可证:MPL2(宽松)

👉 适合:矩阵计算 / 非线性方程求解 / 特征值分解


2. Armadillo

  • 📌 功能:高层矩阵运算接口,底层可以调用 LAPACK 和 BLAS。

  • 🧠 特点:

    • 语法类似 MATLAB

    • 易于使用

    • 适合数值计算和科研应用

  • 📎 许可证:Apache 2.0

👉 适合:希望用“更接近数学公式”的代码风格的人。


3. LAPACK / BLAS

  • 📌 功能:基础线性代数例程(矩阵乘法、分解、特征值)

  • 🧠 特点:

    • 高度优化

    • 行业标准(很多库的底层都用它)

    • 接口是 C/Fortran 风格

  • 📎 许可证:BSD

👉 适合:需要底层性能、写高性能数值程序的人。


4. GSL(GNU Scientific Library)

  • 📌 功能:

    • 特殊函数(Bessel、Gamma…)

    • 数值积分/微分

    • 非线性方程求解

    • 随机数、拟合、统计

  • 🧠 特点:

    • C 语言编写

    • 接口简洁

    • 数学内容全面

  • 📎 许可证:GPL

👉 适合:C 语言项目、数值分析、科学计算。


🧠 二、非线性方程 / 优化 / 约束求解库

1. Ceres Solver(Google 出品)

  • 📌 功能:非线性最小二乘优化、自动微分、约束优化。

  • 🧠 特点:

    • C++11

    • 支持自动微分和数值微分

    • 工业界常用(SLAM / 视觉 / 数值解)

  • 📎 许可证:BSD

👉 适合:求解隐式函数、最小二乘、拟合。


2. NLopt

  • 📌 功能:全局/局部优化器(无约束或有约束)

  • 🧠 特点:

    • 包含 DIRECT, CRS, COBYLA, BOBYQA 等经典算法

    • C/C++ 接口

    • 不依赖符号求导

  • 📎 许可证:LGPL / MIT

👉 适合:全局求解方程、搜索多个有限解。


3. Ipopt

  • 📌 功能:非线性约束优化

  • 🧠 特点:

    • 工业级求解器

    • 适合非凸优化

  • 📎 许可证:Eclipse

👉 适合:高精度优化问题。


📐 三、几何 / 数学建模 / 隐式函数

1. CGAL(Computational Geometry Algorithms Library)

  • 📌 功能:

    • 计算几何算法

    • 隐式/参数曲面交点

    • 多边形布尔运算

    • 三维表面重构

  • 🧠 特点:

    • 泛型编程风格

    • 精确计算

  • 📎 许可证:LGPL / GPL(部分组件)

👉 适合:二维、三维几何计算,隐式曲线/曲面求解。


2. OpenCascade

  • 📌 功能:

    • 几何建模内核

    • BRep/参数曲面

    • 求交、布尔运算、采样

  • 🧠 特点:

    • CAD 工业级

    • 几何计算能力很强

  • 📎 许可证:LGPL

👉 适合:复杂隐式曲面 + 参数方程问题。


📊 四、特殊领域数学库

1. FFTW(Fastest Fourier Transform in the West)

  • 📌 功能:一维/二维/三维快速傅里叶变换

  • 🧠 特点:

    • 极高性能

    • 多线程、SIMD 优化

  • 📎 许可证:GPL(可商用)

👉 适合:信号处理、频域分析。


2. Boost.Math

  • 📌 功能:

    • C++ 模板数学库

    • 特殊函数、统计分布、高精度浮点

  • 🧠 特点:

    • 与标准 C++ STL 兼容

    • 无需外部依赖

  • 📎 许可证:Boost

👉 适合:需要高精度和特殊数学函数的项目。


3. MPFR / GMP

  • 📌 功能:

    • 高精度浮点/任意精度运算

  • 🧠 特点:

    • C 接口

    • 数值精度极高

  • 📎 许可证:LGPL

👉 适合:需要控制数值误差的高精度计算。


🧮 五、符号计算 / 混合

C/C++ 本身不太擅长“符号计算”,但有一些接口库可以与其他语言结合:

  • GiNaC:C++ 符号计算库(GNU 项目)

  • SymEngine:C++ 实现的快速符号计算引擎(可与 SymPy 互通)

  • 可以配合 Python 接口做混合求解。


🧠 六、总结对比表

库名 语言 类型 适用场景 许可证
Eigen C++ 线性代数 常规数值计算、矩阵 MPL2
Armadillo C++ 线性代数 快速科研计算 Apache
LAPACK/BLAS C/Fortran 线性代数 高性能底层运算 BSD
GSL C 通用数学 特殊函数/积分/随机数 GPL
Ceres Solver C++ 非线性优化 拟合/最小二乘 BSD
NLopt C/C++ 优化 全局/局部求解 MIT/LGPL
Ipopt C++ 优化 约束非线性 EPL
CGAL C++ 计算几何 隐式/参数曲面 LGPL
OpenCascade C++ 几何建模 复杂几何运算 LGPL
FFTW C 频域变换 FFT GPL
Boost.Math C++ 特殊函数 高精度数学 Boost
GMP/MPFR C 高精度 任意精度运算 LGPL
GiNaC / SymEngine C++ 符号计算 符号 + 数值混合 GPL / MIT

建议选型方向:

目标 推荐
常规数学 / 线性代数 Eigen / Armadillo / GSL
隐式函数 / 优化 Ceres Solver / NLopt
几何/曲面求交 CGAL / OpenCascade
FFT / 特殊函数 FFTW / Boost.Math
高精度计算 GMP / MPFR
符号 + C++ SymEngine / GiNaC
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐