操作简单向量和数组的C#数学库

操作简单向量和数组的C#数学库,c#,math,C#,Math,有几个c#的数学库,但它们似乎要么定义自己的向量和矩阵类型,要么对已建立的c#类(如Vector3D或vector)进行操作 是否有对“简单”向量和矩阵类型(如double[]和double[,])进行操作的数学库 “很好拥有”函数的一些示例如下 double[] v = new double[3]; double[] w = new double[3]; double m[,] = new double[3,3]; double vDOTv = DesiredClass.Dot(v); //

有几个c#的数学库,但它们似乎要么定义自己的向量和矩阵类型,要么对已建立的c#类(如Vector3D或vector)进行操作

是否有对“简单”向量和矩阵类型(如double[]和double[,])进行操作的数学库

“很好拥有”函数的一些示例如下

double[] v = new double[3];
double[] w = new double[3];
double m[,] = new double[3,3];

double vDOTv = DesiredClass.Dot(v); // v.v

double[] normV = DesiredClass.Normalize(v); // normalize vector

double[] cCROSSw = DesiredClass.Cross(v,w);  // v x w

double vDOTm = DesiredClass.Dot(v,m,i); // v.m[i] - dot product of v with ith row of m

提供了各种矩阵方法,包括MatrixMultiply和MatrixNorm,它们适用于
double[]
,因此它看起来可以满足您的大部分需求。我看不到点积,但它可能是另一个我不知道的名称。

您可以为这些类型创建自己的类,并为它们提供从和到双数组的隐式转换,然后创建那些实用程序方法,这些方法接受您自己类型的参数,这些参数将在这些数组上工作,因为存在隐式转换


但是这有点可疑,为什么不在普通类型上工作呢。

我继承了一组类来维护这些类,它们周围有很多这样类型的数据结构。您到底想做什么?更具体地说,我想做所有常见的向量/矩阵运算(点积、叉积、范数、幅值、行列式)。操作一需要一个好的数学库。当然有可能,但我注意到这需要用户从2d数组构造一个矩阵。我很想知道是否有库可以直接在2d数组上运行,而不必创建别人的矩阵实现。仅供参考:矩阵和向量类型可以直接在普通2d数组上运行(矩阵的列主顺序)。顺便说一句,Math.NET Numerics取代了铱(您链接到的),这就是铱不再更新的原因。