開源Go語言數值演算法庫 An open numerical library purely based on Go programming language

chfenger發表於2018-12-19

關於goNum

goNum是一款完全以Go語言為基礎的開源數值演算法庫,它可以使你像呼叫其它go函式一樣使用其進行數值運算,且不依賴於任何外部庫。 限於作者業餘時間有限,目前功能還在一步步完善,演算法還在慢慢新增。 絕大部分演算法進行了典型狀態測試,但不保證所有演算法在所有狀態下都是安全的、可靠的。 另外,需要注意的是,此演算法庫旨在解決問題,而不是實現語言的某些能力,即使作者正在努力使得go語言的獨特性在其中充分體現。 如果您對作者的工作滿意,請留心關注goNum的更新狀態;如果您對作者的工作有所建議,請電郵:chengfengcool@sina.com。 或者,承蒙賞識,如果您願意捐助關於goNum工作,請電郵聯絡作者。

歡迎有志之士加入開發。

安裝環境

Linux或者Windows

  1. go 1.11(推薦)或更新版本;
  2. [可選] LiteIDE X34或更新版本;
  3. 請關注Linux和Windows換行符的區別。

安裝方法

  1. 線上安裝 1.1 安裝go; 1.2執行go get命令:

    go get github.com/chfenger/goNum
  2. 下載原始碼安裝 2.1 下載原始碼,並解壓到指定資料夾(例如“UserDir”)下的src目錄或其子目錄(例如“UserDir/src/”或“UserDir/src/xxx/xxx/”)下; 2.2 新增UserDir到GOPATH; 2.3 重啟IDE或終端即可。

演算法

(持續更新中...)

  • 基本數學
    • 排列
    • 二分法
    • 組合
    • 階乘
    • 切片元素最大值
    • 切片元素絕對值最大值
    • 切片元素從大到小排序
    • 切片元素最小值
    • 切片元素絕對值最小值
    • 切片元素從小到大排序
    • 1範數
    • 無窮範數
    • 次冪擴充套件
    • 角度的三角函式和反三角函式
  • 矩陣
    • 矩陣定義與操作
    • 求矩陣行列式的列主元消去法
    • 返回n階單位矩陣(二維切片表示)
    • 求矩陣逆的列主元消去法
    • 求對稱正定矩陣的平方根分解法
    • 求矩陣Doolittlede LU分解
    • 求對稱矩陣全部特徵值及其特徵向量,經典雅可比法
    • 求對稱矩陣全部特徵值及其特徵向量,雅可比過關法
    • 求矩陣A的主特徵值及其特徵向量
  • 解一般方程
    • 求解非線性方程的牛頓迭代
    • 搜尋法求方程解
    • 單點弦截法
    • 雙點弦截法
    • 簡單迭代求解類x=g(x)方程的解
    • 簡單迭代求解類x=g(x)方程的解(Aitken加速)
  • 插值
    • Hermite插值
    • Hermite插值函式
    • Lagrange插值
    • Lagrange插值函式
    • Newton插值
    • Newton前向插值
    • 用節點處的一階導數表示的三次樣條插值函式(一階導數邊界條件)
    • 用節點處的一階導數表示的三次樣條插值函式(二階導數邊界條件)
    • 用節點處的二階導數表示的三次樣條插值函式(一階導數邊界條件)
    • 用節點處的二階導數表示的三次樣條插值函式(二階導數邊界條件)
  • 數值積分
    • 1-8級復化Newton-Cotes求積分公式
    • 1-8級逐次分半復化Newton-Cotes求積分公式
    • 不超過8次的Gauss-Lagendre求積分公式
    • 1-8級Newton-Cotes求積分公式
    • Rumberg(龍貝格)求積分公式
  • 解線性方程組
    • 求解矛盾方程組的最小二乘法
    • 追趕法求解嚴格對角佔優的三對角係數矩陣方程組
    • 線性代數方程組的列主元消去法
    • 解n階線性方程組的Jocobi迭代法(簡單迭代法)
    • 解n階線性方程組的Seidel迭代法
    • 解n階線性方程組的SOR(逐次超鬆弛)迭代法
  • 資料擬合
    • 多項式擬合
  • 常微分方程
    • 4步Adams外推(ODE)
    • 三步Adams內插公式(ODE)
    • Euler法(ODE)
    • Euler預估校正(ODE)
    • 梯形法(ODE)
    • 二級二階Runge-Kutta法
    • 四級四階Runge-Kutta法

許可證書

goNum是一款開源自由演算法庫,您可以根據自己的需求釋出或者修改,但這一切需要在GNU GPL(General Public License) v3.0 或者較新版本的許可下進行。關於此許可證內容詳見根目錄下LICENSE檔案或者http://www.gnu.org/licenses/

程鋒 版權所有 2018

致謝

  1. 非常感謝家人朋友們的支援和理解,為此推辭了許多業餘活動.
  2. 特別感謝Google提供如此美妙的程式語言,希望再接再勵,繼續改善使之豐富。
  3. 感謝某實驗室提供的免費伺服器。感謝某實驗室提供的免費伺服器。

相關文章