Linear Algebra and other scientific computing in. net

Source: Internet
Author: User
Tags lapack

For professional software such as engineering and graphics, a large amount of mathematical computation is required, and linear algebra is the most used.

So, on top of. net, especially on. NET 4.0 and vs2010, how can we complete Related Linear Algebra computing? I want to use the following methods:

I. self-built and versatile: according to the needs of your software, you can develop some function libraries incrementally. The biggest problem with this method is re-build the wheel, so most of them are not suitable for this method.

2. Use open-source (or free) components: the advantage of this method is that there are many excellent open-source (or free) tools to choose from. The disadvantage is that it requires a high learning cost.

3. Using commercial components: the advantage of this method over the second is that it guarantees support and services. The disadvantage is self-evident that the cost is high.

Next, I will focus on what open-source (free) components are available on the. NET platform.

1. Use F # for development

F # as a hybrid language (functional language + object-oriented language), it has the advantage of mathematical computing from the very beginning. Not only write computingCodeMore naturally, the F # function library also provides good support for mathematical computing.

In powerpack of F #, The namespace containing Microsoft. fsharp. Math is specifically used for mathematical computation. The matrix type is provided, which is a very common and important type in linear algebra calculation.

For more information about the Matrix type, see the help here. You can also refer to this blog: http://fdatamining.blogspot.com/2010/03/matrix-and-linear-algebra-in-f-part-i-f.html

However, for efficient linear algebra calculation, F # also needs to use external function libraries. However, F # has provided corresponding interfaces to facilitate the integration of external function libraries, that is, fsharp. powerpack. math. providers. DLL (thisProgramSet is available only in the FSharp-1.9.7.8 ).

For example, F # can integrate LAPACK (LAPACK, Its name isLInearALgebraPackAge refers to a function set used for data calculation in the language of the FORTRAN program. LAPACK provides a rich tool function, examples are applicable to Least Square solutions such as solutions for multivariate regression equations, Least Square solutions for typical linear equations, calculation feature vectors, householder Regression Algorithms for computing moment regression QR decomposition, and odd-sum value decomposition and other issues. In netlib, the API-based Fortran 95 version lapack95 is also provided. LAPACK is exported using the BSD permission method .)

Specific integration methods can refer to: http://fdatamining.blogspot.com/2010/03/matrix-and-linear-algebra-in-f-part-ii.html,http://fdatamining.blogspot.com/2010/03/compiling-lapack-for-net-usage.html

Here is an example of how to perform algebraic operations in F #: http://fdatamining.blogspot.com/2010/04/matrix-and-linear-algebra-in-f-part-iii.html

Actually, the blog address I mentioned above: http://fdatamining.blogspot.com/is worth reading.

2. Use ironpython for development

Although python is not a functional language, its dynamic language features and code style are also used by many people for engineering development. On top of Python, there is a well-known mathematical computing library, numpy and scipy, which has also been transplanted to. Net (the porting process is with the help of Microsoft ).

To use these two libraries, use Python tools for Visual Studio-an integrated Python Development Environment implemented in vs2010.

The specific use of the wizard can access: http://pytools.codeplex.com/wikipage? Title = numpy % 20and % 20 scipy % 20for % w.net

3. Use C # for development

In. Net 4.0, The system. numerics namespace is added to provide a certain foundation for mathematical computing. However,. Net still does not have a built-in linear algebra computing function library. However, to use C # development, LAPACK and scipy mentioned above can be used.

For LAPACK, there are also. Net versions, namely: dotnumerics

Of course, there are many third-party open-source, free, and commercial components available.

Let's take a look at the components below:

    1. Extreme optimization numerical libraries for. Net (commercial)
    2. . Net matrix Library (commercial)
    3. Nmath. Net (commercial)
    4. Nag library for. Net (commercial)
    5. Scinet (commercial)
    6. Math. Net (Open Source)
    7. Dambach linear algebra framework (Open Source)
    8. Ilnumerics. Net (Open Source)
    9. Mapack (open-source, our LCA software is used. In fact, I have made a provider that can be switched to any other function library. I will introduce it later)
    10. Meta. numerics (free)

In addition, for the language used for scientific computing development, you can refer to some discussions in this blog: C #-F #-ironpython and scientific computing, of course, I personally think that F # And ironpython are suitable for scientific computing.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.