.NET的数学库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点击下载

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值