使用 GSL 进行基本操作

计算科学 C++ 矩阵 C 图书馆 数字
2021-12-05 11:56:16

我正在学习用于科学计算的 C/C++,并且我有一个关于将科学库用于基本操作的问题。

假设我必须为一个生物信息学项目用 C 语言编写一个小程序:对于某些操作,我需要使用矩阵和非常基本的计算(例如 LU)。我在网上浏览了一些笔记,似乎有不同的方法可以在 C/C++ 中声明矩阵,例如[][]使用双指针或使用双指针。作为初学者,这是非常令人困惑的,许多人说其中一些方法效率不高。

然后我通过了一些使用 GSL 的示例:它看起来非常简单和优雅。我可能只会使用函数来声明和设置矩阵并使用 LU 分解。那么我的问题是:将这个库用于这么小的项目是否有意义?更简单:仅仅为了避免在 C/C++ 中使用多维数组的复杂性而使用它有意义吗?

1个回答

当然,出于以下几个原因,使用 GSL(或其他库)是有意义的:

  1. 不要重新发明轮子。工作已经完成,你可以把时间花在更有用的事情上。
  2. 如果您确实决定自己实现这些基本的东西,那么您的代码可能包含一些错误并且速度较慢、内存效率较低等的风险是相当高的。不是因为我认为您是一个糟糕的程序员,而仅仅是因为这些“已建立”的库在不同的应用程序中有多个开发人员和庞大的用户群(许多人的眼睛看到的不止两个,许多大脑通常比单个的更聪明,.. .)
  3. 如果您对幕后发生的事情感兴趣,请务必阅读文档(用户指南、开发人员指南、设计文档……)甚至源代码。你会学到很多...

我不对 GSL 本身持立场,这些观察结果对任何“已建立的”(开源或商业)库都有效。