对于在 GNU/Linux 上使用自由软件进行科学计算而言,最好的事情莫过于 GNU 科学库 GSL。然而,它只有 C 语言的源代码,使用 FORTRAN 的人会感到失望。抓住这个机会,建议将 GSL 作为学习 C 语言的另一个理由(除了 GCC C 编译器,以及 C 语言编程的优势之外)。除此之外,数值方法和库的两个最佳源代码库是 Netlib 和 GAMS。正在开发新的数值软件包,它们跳出了通常的“编写 FORTRAN 程序,从互联网获取数值子程序来解决数值问题”的概念。这种方法的优缺点尚有争议,但存在更多选择,例如 面向对象数值计算 GSL 和 GiNaC,这些都是令人兴奋的发展。
Netlib:大量的数值方法免费源代码。Netlib 是主要的源代码仓库,其中包含无数的数值方法源代码。它还有一个活跃的 讨论论坛,您可以在其中提交您的查询并保持关注以获得帮助。Netlib 还有一个 并行工具库 和按主题搜索功能。
GAMS:可用数学软件指南 GAMS 具有非常有用的搜索功能,可以使用它搜索关键字(例如:“diffusion”以搜索扩散方程求解器)。然而,在 GAMS 上按软件包浏览会发现,他们提供的许多软件都是指向 netlib 仓库的链接。
面向对象数值计算 一个致力于面向对象数值计算的网站。它有一个邮件列表,指向免费库(当然是 OO)的广泛链接,以及用于面向对象科学计算的免费工具。
GNU 科学库 GNU 科学库 (GSL) 是一个完全用 C 语言编写的数值例程集合。它为 C 程序员提供了一个应用程序编程接口 (API),并且允许为非常高级的语言编写包装器。它涵盖了广泛的数值计算主题,有一个良好的手册,具有广泛的可移植性,并根据 GNU 通用公共许可证分发。
GiNaC GiNaC 旨在允许创建需要在其中嵌入符号操作的软件。它通过一组代数功能扩展了 C++,并且以递归方式命名,因为 GiNaC 不是计算机代数系统。它根据 GNU 通用公共许可证 (GPL) 的条款和条件分发。
FFTW FFTW 是一个快速 C 例程集合,用于计算一维或多维离散傅里叶变换。它包括复数、实数和并行变换,并且可以有效地处理任意数组大小。此软件包包括双精度和单精度 FFTW 单处理器以及线程库。
LAPACK LAPACK(线性代数软件包)是数值线性代数的标准库。LAPACK 提供了用于求解联立线性方程组、线性方程组的最小二乘解、特征值问题和奇异值问题的例程。LAPACK 使用 Fortran77 编写,并使用 egcs 构建。它文档齐全,使用广泛(因此经过了广泛的测试)。
SuperLU SuperLU 是一个通用库,它执行 LU 分解,用于在高性能机器上直接求解大型、稀疏、非对称线性方程组。它用 C 语言编写,可以从 C 或 Fortran 调用。
ARPACK ARPACK 是一组 Fortran77 子例程,旨在解决大规模特征值问题。有用户指南 可用。上面的链接还提供了关于 ARPACK 的并行版本 - PARPACK 和面向对象版本 ARPACK++ 的信息。
计算流体动力学代码 此链接包含公共领域、共享软件和免费软件计算流体动力学代码链接的完整列表,以及每个 CFD 代码的描述。