All Projects → chfenger → Gonum

chfenger / Gonum

Licence: gpl-3.0
开源Go语言数值算法库(An open numerical library purely based on Go programming language)

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Gonum

Korma
Mathematics library focused on geometry for Multiplatform Kotlin 1.3
Stars: ✭ 65 (-49.22%)
Mutual labels:  matrix, mathematics, interpolation
Peroxide
Rust numeric library with R, MATLAB & Python syntax
Stars: ✭ 191 (+49.22%)
Mutual labels:  matrix, scientific-computing, interpolation
Armadillo Code
Armadillo: fast C++ library for linear algebra & scientific computing - http://arma.sourceforge.net
Stars: ✭ 388 (+203.13%)
Mutual labels:  matrix, scientific-computing
Librmath.js
Javascript Pure Implementation of Statistical R "core" numerical libRmath.so
Stars: ✭ 425 (+232.03%)
Mutual labels:  mathematics, scientific-computing
Casadi
CasADi is a symbolic framework for numeric optimization implementing automatic differentiation in forward and reverse modes on sparse matrix-valued computational graphs. It supports self-contained C-code generation and interfaces state-of-the-art codes such as SUNDIALS, IPOPT etc. It can be used from C++, Python or Matlab/Octave.
Stars: ✭ 714 (+457.81%)
Mutual labels:  mathematics, scientific-computing
Data Structures Algorithms
My implementation of 85+ popular data structures and algorithms and interview questions in Python 3 and C++
Stars: ✭ 273 (+113.28%)
Mutual labels:  matrix, mathematics
Exprtk
C++ Mathematical Expression Parsing And Evaluation Library
Stars: ✭ 301 (+135.16%)
Mutual labels:  mathematics, scientific-computing
Gonum
Gonum is a set of numeric libraries for the Go programming language. It contains libraries for matrices, statistics, optimization, and more
Stars: ✭ 5,384 (+4106.25%)
Mutual labels:  matrix, scientific-computing
dfogn
DFO-GN: Derivative-Free Optimization using Gauss-Newton
Stars: ✭ 20 (-84.37%)
Mutual labels:  scientific-computing, numerical-methods
Wenoof
WENO interpolation Object Oriented Fortran library
Stars: ✭ 27 (-78.91%)
Mutual labels:  numerical-methods, interpolation
Bfgs Neldermead Trustregion
Python implementation of some numerical (optimization) methods
Stars: ✭ 8 (-93.75%)
Mutual labels:  mathematics, numerical-methods
Mlinterp
Fast arbitrary dimension linear interpolation in C++
Stars: ✭ 44 (-65.62%)
Mutual labels:  numerical-methods, interpolation
Graphene
A thin layer of graphic data types
Stars: ✭ 268 (+109.38%)
Mutual labels:  matrix, mathematics
qnm
Python package for computing Kerr quasinormal mode frequencies, separation constants, and spherical-spheroidal mixing coefficients
Stars: ✭ 21 (-83.59%)
Mutual labels:  scientific-computing, numerical-methods
Pyemd
Fast EMD for Python: a wrapper for Pele and Werman's C++ implementation of the Earth Mover's Distance metric
Stars: ✭ 361 (+182.03%)
Mutual labels:  mathematics, scientific-computing
NM
Numerical Methods (NM) for BE Electrical II Year / II Part, Email: [email protected]
Stars: ✭ 13 (-89.84%)
Mutual labels:  interpolation, numerical-methods
Awesome Scientific Computing
😎 Curated list of awesome software for numerical analysis and scientific computing
Stars: ✭ 476 (+271.88%)
Mutual labels:  mathematics, scientific-computing
Python-Matematica
Explorando aspectos fundamentais da matemática com Python e Jupyter
Stars: ✭ 41 (-67.97%)
Mutual labels:  mathematics, scientific-computing
Online-Tools
Webpage offering a wide range of online tools
Stars: ✭ 38 (-70.31%)
Mutual labels:  interpolation, mathematics
Owl
Owl - OCaml Scientific and Engineering Computing @ http://ocaml.xyz
Stars: ✭ 919 (+617.97%)
Mutual labels:  matrix, scientific-computing

关于goNum

goNum是一款完全以Go语言为基础的开源数值算法库,它可以使你像调用其它go函数一样使用其进行数值运算,且不依赖于任何外部库。 限于作者业余时间有限,目前功能还在一步步完善,算法还在慢慢添加。 绝大部分算法进行了典型状态测试,但不保证所有算法在所有状态下都是安全的、可靠的。 另外,需要注意的是,此算法库旨在解决问题,而不是实现语言的某些能力,即使作者正在努力使得go语言的独特性在其中充分体现。 如果您对作者的工作满意,请留心关注goNum的更新状态;如果您对作者的工作有所建议,请电邮:[email protected]。 或者,承蒙赏识,如果您愿意捐助关于goNum工作,请电邮联系作者。

欢迎有志之士加入开发。

安装环境

Linux或者Windows

  1. go 1.11(推荐)或更新版本;
  2. [可选] LiteIDE X34或更新版本;
  3. 请关注Linux和Windows换行符的区别。

安装方法

1. 在线安装

  1. 安装go;
  2. 运行go get命令:
go get github.com/chfenger/goNum

2. 下载源码安装

  1. 下载源代码,并解压到指定文件夹(例如“UserDir”)下的src目录或其子目录(例如“UserDir/src/”或“UserDir/src/xxx/xxx/”)下;
  2. 添加UserDir到GOPATH;
  3. 重启IDE或终端即可。

关于命名

  1. 包名'goNum'为算法库包;
  2. 包名'goNum_test'为测试库包(Benchmark);
  3. 文件名'*_test.go'为测试文件名,其内容可作为算法包使用的参考手册。

设计初衷

  1. 旨在为自己和他人提供一个浅显易懂而又功能强大的数值算法库;
  2. 优先保证速度和精度,因此诸如defer等优秀方式由于过于影响速度而并未实际采用;
  3. 完全以Go语言开发,独立而不依赖于任何外部库。

算法

(持续更新中...)

  • 基本数学

    • 排列
    • 二分法
    • 组合
    • 阶乘
    • 切片元素最大值
    • 切片元素绝对值最大值
    • 切片元素从大到小排序
    • 切片元素最小值
    • 切片元素绝对值最小值
    • 切片元素从小到大排序
    • 矩阵1范数
    • 矩阵无穷范数
    • 向量的范数
    • 次幂扩展
    • 角度的三角函数和反三角函数
    • 向量在三维空间的旋转
    • Fibonacci数列
    • 多项式求导
  • 数据结构

    • 单向链表
    • 双向链表
  • 矩阵

    • 矩阵定义与操作
    • 求矩阵行列式的列主元消去法
    • 返回n阶单位矩阵(二维切片表示)
    • 求矩阵逆的列主元消去法
    • 求对称正定矩阵的平方根分解法
    • 求矩阵Doolittlede LU分解
    • 求对称矩阵全部特征值及其特征向量,经典雅可比法
    • 求对称矩阵全部特征值及其特征向量,雅可比过关法
    • 求矩阵A的主特征值及其特征向量
  • 解一般方程

    • 求解非线性方程的牛顿迭代
    • 搜索法求方程解
    • 单点弦截法
    • 双点弦截法
    • 简单迭代求解类x=g(x)方程的解
    • 简单迭代求解类x=g(x)方程的解(Aitken加速)
    • Muller法求f(x)=0的解
  • 插值

    • 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(逐次超松弛)迭代法
  • 解非线性方程组

    • 多元非线性方程组Seidel迭代
  • 数据拟合

    • 多项式拟合
    • 线性最小二乘拟合
    • Bezier曲线拟合控制点
    • 基于傅立叶(Fourier)级数的三角多项式拟合
  • 误差评估

    • 最大误差
    • 平均误差
    • 均方根误差
  • 优化

    • 黄金分割法求单峰单自变量极小值
    • Fibonacci搜索法求单峰单自变量极小值
    • 单纯形法求多自变量函数极小值
  • 常微分方程

    • 4步Adams外推(ODE)
    • 三步Adams内插公式(ODE)
    • Euler法(ODE)
    • Euler预估校正(ODE)
    • 梯形法(ODE)
    • 二级二阶Runge-Kutta法
    • 四级四阶Runge-Kutta法
    • 四阶Runge-Kutta-Fehlberg变步长
    • Heun法
    • Adams-Bashforth-Moulton预估校正法
    • Milne-Simpson预估校正法
    • Hamming预估校正法
    • 差分法
  • 偏微分方程

    • 双曲型偏微分方程差分解法(第一种差分格式)
    • 双曲型偏微分方程差分解法(第二种差分格式)
    • 抛物型偏微分方程差分解法(显式)
    • 抛物型偏微分方程差分解法(隐式)
    • 抛物型偏微分方程差分解法(六点对称)
    • 椭圆型偏微分方程(Laplace)差分解法(五点格式)
    • 椭圆型偏微分方程(Poisson)的差分解法(五点格式)
    • 椭圆型偏微分方程(Helmholtz)的差分解法(五点格式)
  • 排序

    • 冒泡排序
    • 选择排序
    • 插入排序
    • 希尔(Shell)排序
    • 归并排序
    • 快速排序
    • 堆排序
    • 计数排序
    • 桶排序
    • 基数排序

作者

详见AUTHOR.MD文件

许可证书

goNum是一款开源自由算法库,您可以根据自己的需求发布或者修改,但这一切需要在GNU GPL(General Public License) v3.0 或者较新版本的许可下进行。关于此许可证内容详见根目录下LICENSE文件或者http://www.gnu.org/licenses/

程锋 版权所有 2018

致谢

  1. 非常感谢家人朋友们的支持和理解,为此推辞了许多业余活动.
  2. 特别感谢Google提供如此美妙的编程语言,希望再接再励,继续改善使之丰富。
  3. 感谢某实验室提供的免费服务器。
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].