为方便起见,NMath在类NMathFunctions上提供了静态方法,用于求解线性系统以及计算行列式,逆数和条件数。所有方法都接受矩阵。
NMath是一个适用于所有.NET语言,如C#、Visual Basic、F#和.NET的数学库,它包含了.NET平台上的面向对象数字计算的基础类。我们将以连载的形式向大家介绍NMath的实用教程。
最新版NMath
为方便起见,NMath在类NMathFunctions上提供了静态方法,用于求解线性系统以及计算行列式,逆数和条件数。所有方法都接受矩阵。
提供以下静态方法:
-
NMathFunctions.Solve()解决单个或多个右侧的线性系统。
-
NMathFunctions.Inverse()计算给定矩阵的逆数。
-
NMathFunctions.Determinant()计算给定矩阵的行列式。
-
NMathFunctions.EstimateConditionNumber()估计指定范数类型中给定矩阵的条件编 。
-
NMathFunctions.ConditionNumber()直接计算指定范数类型中给定矩阵的条件编 。
例如:
代码示例– C#LU分解
var A = new DoubleMatrix( "3x3 [2 1 1 4 1 0 -2 2 1]" );var b = new DoubleVector( "[8 11 3]" );DoubleVector x = NMathFunctions.Solve( A, b ); var B = new DoubleMatrix( "3x2[8 3 11 11 3 8]" );DoubleMatrix X = NMathFunctions.Solve( A, B );DoubleMatrix AInv = NMathFunctions.Inverse( A );double ADet = NMathFunctions.Determinant( A );double ACond = NMathFunctions.ConditionNumber( A, NormType.InfinityNorm );
代码示例– VB LU分解
Dim A As New DoubleMatrix("3x3 [2 1 1 4 1 0 -2 2 1]")Dim B As New DoubleVector("[8 11 3]")Dim X As DoubleVector = NMathFunctions.Solve(A, B)Dim B As New DoubleMatrix("3x2[8 3 11 11 3 8]")Dim X As DoubleMatrix = NMathFunctions.Solve(A, B)Dim AInv As DoubleMatrix = NMathFunctions.Inverse(A)Dim ADet As Double = NMathFunctions.Determinant(A)Dim ACond As Double = NMathFunctions.ConditionNumber(A, NormType.InfinityNorm)
请注意,每次调用NMathFunctions.Solve()都会创建一个LU分解实例。如果您反复(例如在循环内)调用Solve(),并且两次调用之间的系数矩阵没有变化,则效率更高:
代码示例– C#LU分解
var fact = new DoubleLUFact( A, false );...fact.Solve( B );
代码示例– VB LU分解
Dim Fact As New DoubleLUFact(A, False)...Fact.Solve(B)
上一章:使用LU分解
下一章:最小二乘
==========================================
如果想要购买正版授权NMath的朋友,可以联系在线客服
标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!