.NET的数学库NMath实用教程——向量的逻辑运算和算术运算

翻译|使用教程|编辑:况鱼杰|2019-06-12 10:26:39.210|阅读 76 次

概述:NMath是NMath套包中基础的.NET函数库,它包含了复数类,通用向量与矩阵类,结构化稀疏矩阵类与因式分解,通用稀疏矩阵类与因式分解,通用矩阵分解,最小二乘解,随机数生成器,快速傅里叶变换(FFT算法) ,数值积分与微分方法,函数最小化,曲线拟合,求根法,线性与非线性编程等内容,本教程介绍NMath中向量的逻辑运算和算术运算。

相关链接:

NMath是一个适用于所有.NET语言,如C#、Visual Basic、F#和.NET的数学库,它包含了.NET平台上的面向对象数字计算的基础类。我们将以连载的形式向大家介绍NMath的实用教程。本节内容展示向量的逻辑运算和算术运算。

最新版NMath点击下载


向量的逻辑运

Operator== 测试两个向量的相等性, 如果两个向量具有相同的维度且所有值相等,则返回 true ; 否则,返回false。遵循.NET Framework准则,如果两个对象都为null,则两个向量相等。

  • DoubleVector 和DoubleComplexVector的值的比较是使用operator == for double完成的。

  • FloatVector和 FloatComplexVector的值的比较是使用operator == for floats完成的。

  • 向量的值必须完全相等才能使此方法返回 true。

注意:equals函数也需测试是否相等。NaNEquals忽略 Not-a-Number (NaN)的值。  


向量的算术运算  

对于支持向量的.NET语言,NMath提供带有常规意义的重载算术运算符,以及和那些不支持向量的语言等效的命名方法。下表列出等效的运算符:

算术运算符

操作符

等效命名

+

Add()

-

Subtract()

*

Multiply()

/

Divide()

Unary -

Negate()

++

Increment()

--

Decrement()

注意:

  • Unary -,Increment()和Decrement()运算符应用于向量中的每个元素,Negate()返回一个新矢量对象,Increment() 和Decrement()不会

  • 所有二元运算符和等效命名方法都可以使用两个向量,或者使用向量和标量。

  • 向量必须具有相同的长度才能使用 element-wise运算符进行组合。否则,抛出MismatchedSizeException。

例如:

Code Example – C# vector

var v = new FloatVector(5,0,1);  // [0,1,2,3,4]
var u = new FloatVector(5,1,1);  // [1,2,3,4,5]
float scalar = 2;FloatVector w = v + scalar*u;

此Visual Basic代码使用等效的命名方法:

Code Example – VB vector

Dim V As New FloatVector(5, 0, 1)
Dim U As New FloatVector(5, 1, 1)
Dim Scalar As Single = 2

Dim W As FloatVector = FloatVector.Add(V,  FloatVector.Multiply(Scalar, U))

NMath 还提供接受三个向量参数算术命名方法的重载。第三个向量保存对前两个向量合理操作的结果,因为不会分配新内存,所以效率更高,这对于重复操作很有用。当添加两个向量并将结果存储在第三个中时:

Code Example – C# vector

var v = new DoubleVector( "[ 0 1 2 3 4 ]" );
var u = new DoubleVector( 5, 1 );
var w = new DoubleVector( u.Length );DoubleVector.Add( v, u, w );DoubleVector.Add( v, u++, w );DoubleVector.Add( v, v, w );
// Still only three vectors allocated

Code Example – VB vector

Dim V As New DoubleVector("[ 0 1 2 3 4 ]")
Dim U As New DoubleVector(5, 1)
Dim W As New DoubleVector(U.Length)DoubleVector.Add(V, U, W)DoubleVector.Add(V, U.Increment(), W)DoubleVector.Add(V, V, W)
' Still only three vectors allocated

如果三个向量的长度不同,则抛出MismatchedSizeException,第三个向量参数也可以与前两个参数中的一个相同,在这种情况下,它会被结果覆盖:

Code Example – C# vector

DoubleVector.Subtract( u, v, v );

Code Example – VB vector

DoubleVector.Subtract(U, V, V)

最新版NMath点击下载

在线答谢惠,限量优惠限时抢:FastReport.  NetMyEclipse  Zend Guard等产品优惠请点击>>

想要了解更多资讯,更多优惠的朋友请咨询客服>>



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果

登录 慧都网发表评论


暂无评论...

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关厂商
相关产品
NMath

NMath是一个.NET的数学库,包含了NET平台上的面向对象数字计算的基础类。

在线客服 在线QQ 电话咨询
400-700-1020
反馈
在线客服系统
live chat