ILNumerics是一个开源的数值项目,一种NET框架的高性能数学库,它简化了各种数学算法的使用,优化到了C和FORTRAN的速度。现在它提供了一个支持“任何CPU”的NuGet包。它的独立版本ILView,已经宣布支持REPL的3D可视化工具,可以运行在.NET/Windows和Mono/Linux环境里。支持线性方程计算,数值计算,机器学习。
在Visual Studio中可以通过NuGet安装:
PM> Install-Package ILNumerics
下面我们演示如何解三阶线性方程:
对应的Demo代码是这样的:
/// <summary>
/// Sovle the 3x3 matrix.
/// </summary>
/// <remarks>http://wintersun.cnblogs.com/</remarks>
/// <seealso cref="http://ilnumerics.net/apidoc/Index.html"/>
/// <seealso cref="http://ilnumerics.net/GetStarted.html"/>
/// <seealso cref="http://ilnumerics.net/quickstart.html"/>
private static void Sovle3X3Matrix()
{
// construct 3 x 3 matrix, upper triagonal
ILArray<double> A = ILMath.zeros(3, 3);
A["0;:"] = new double[] { 1, -1, -1 };
A["1;:"] = new double[] { 2, -1, -3 };
A["2;:"] = new double[] { 3, 2, -5 };
// now construct a right side - a vector counting from 1:
ILArray<double> B = new double[] { 2, 1, 0 };
ILArray<double> x = ILMath.linsolve(A, B);
// lets check if the result really solves our equation
ILArray<double> bTest = ILMath.multiply(A, x);
Console.Out.WriteLine("A: " + Environment.NewLine + A.ToString());
Console.Out.WriteLine("B: " + Environment.NewLine + B.ToString());
Console.Out.WriteLine("x: " + Environment.NewLine + x.ToString());
Console.Out.WriteLine("bTest: " + Environment.NewLine + bTest.ToString());
}
输出的代码是这样的:
A:
<Double> [3,3]
1 -1 -1
2 -1 -3
3 2 -5
B:
<Double> [3,1]
2
1
0
x:
<Double> [3,1]
5.00000
0.00000
3.00000
bTest:
<Double> [3,1]
2.00000
1
0.00000
x对象是结果或解,bTest对象我们做验算。
更多可以参考:
http://ilnumerics.net/GetStarted.html
还有《白皮书--行业数值运算》 包括:
■ 数值算法和软件开发
■ ILNumerics的优势
■ 案例研究
■ 结论
■ 附录1:ILNumerics语法
■ 附录2:洞察 - ILNumerics内存管理
希望对您程序开发有帮助。
作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-Petter Liu Blog。