zoukankan      html  css  js  c++  java
  • ILNumerics项目的应用之线性方程

          ILNumerics是一个开源的数值项目,一种NET框架的高性能数学库,它简化了各种数学算法的使用,优化到了C和FORTRAN的速度。现在它提供了一个支持“任何CPU”的NuGet包。它的独立版本ILView,已经宣布支持REPL的3D可视化工具,可以运行在.NET/Windows和Mono/Linux环境里。支持线性方程计算,数值计算,机器学习。
          NumericalAlgorithms

          在Visual Studio中可以通过NuGet安装:

    PM> Install-Package ILNumerics

          下面我们演示如何解三阶线性方程:

          linerEquation1

           对应的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

  • 相关阅读:
    【设计模式】备忘录
    统计ip的发送频率和该ip发送的有效消息(去除相似消息)的数目
    Android之消息推送聊天实现
    Dictionary通过下标获取key和value
    SGU 271 水题。。。。
    二叉树递归和非递归遍历
    C#与SSL
    正则表达式总结
    SQL Server User Accounts
    嵌入式领域中各种文件系统的比较
  • 原文地址:https://www.cnblogs.com/wintersun/p/3390701.html
Copyright © 2011-2022 走看看