Solving partial differential equations using C #

I am working on a project (C # and .NET Framework) that requires me to solve some partial differential equations. Are there any specific libraries based on the .NET Framework that I could see and simplify my work?

I worked with MATLAb, and solving partial differential equations is very simple. How can I solve this problem?

+4
source share
4 answers

You can solve the problem in MATLAB and use the MATLAB + compiler Builder NE Tool to create a .NET assembly that references the rest of your application.

+2
source

Depends on which PDE you want to solve and how you want to approach them.

Every approach that I know of will require linear algebra. You need to find a good .NET matrix package that you can find that efficiently manages sparse matrices.

Linear elliptic (stationary diffusion), parabolic (transitional diffusion) and hyperbolic (F = MA dynamic) PDEs require slightly different approaches.

All three of these PDEs can use the classic finite difference, finite element (weighted remainder), or boundary element (Green's functions) to create the system matrix you want to solve. Generic non-linear PDEs are probably best attacked using the finite element / weighted remainder method.

But parabolic and hyperbolic PDF files will turn into related sets of ODEs as soon as you sample them. You must do transitional integration to repeatedly solve temporal evolution. Parabolic ODEs are first order in time; second-order hyperbolic ODEs in time.

I learn about CUDA and NVIDIA. You might want to learn about CUDA bindings for your language.

All of these are great topics for yourself. Please use Google for some sources, because it is impossible to give a more superficial overview here.

UPDATE: I recently learned about the Microsoft Solver Foundation . I did not look into it myself, but it might be useful for C # developers to solve this problem.

+7
source

Another suggestion is AlgLib . I like this because, unlike the vast libraries where you need to find what you need, AlgLib has all the algorithms that are shared and often offered in several languages ​​(including C #, in most cases). Regarding calculus, AlgLib covers:

Euler method Runge-Kutta method Runge-Kutta method for a system of ODEs Bulirsch-Stoer method for a system of ODEs 

A word of caution, however ... after checking this algorithm in AlgLib, I noted that they are no longer supported (AlgLib) because their licenses may not be compatible with the AlgLib license (which I consider the GPL).

+3
source

Check out http://www.mathdotnet.com/About.aspx , it may have what you need. However, I suspect you should get the best library for your application requirements, and then link it to your .net application.

You will probably find that with such things (except when you use to learn a language or math) there are several pre-finished libraries.

+2
source

All Articles