2009-08-29 11 views
13

Quels sont les meilleurs outils (les plus efficaces) disponibles dans .NET (C#) de calcul:calculs complexes en C#

  • Intégrales
  • dérivées partielles
  • autres mathématiques non trivial

Est-ce que les gens peuvent commenter sur Mathematica et Matlab et leur intégration dans C#?

+1

Numériquement ou symboliquement? –

+0

Pour clarifier votre dernière modification, essayez-vous d'utiliser les fonctions Mathematica et/ou Matlab en C#, ou essayez-vous d'appeler des classes C# depuis Mathematica ou Matlab? – las3rjock

+0

l'application est écrit en C# - je dois effectuer des calculs de C# (appelez les fonctions externes) – mson

Répondre

13

Math.NET est une boîte à outils mathématique open source écrite en C# pour la plate-forme Microsoft .NET qui vise à fournir un cadre propre et autonome pour les calculs algébriques tant scientifiques que symboliques. En particulier, Math.NET Numerics est le résultat de la fusion de dnAnalytics avec Math.NET Iridium et comprend les caractéristiques suivantes:

  • réel et complexe, dense et clairsemée algèbre linéaire (avec LU, QR, eigenvalues ... décompositions)
  • intégration de la fonction numérique (en quadrature) routines
  • transformées intégrales
+0

lien ne fonctionne pas :-) –

+0

L'URL est erronée, devrait être http://www.mathdotnet.com/ –

1

Je ne peux pas se porter garant pour qu'il soit le meilleur ou plus efficace, mais il y a quelques jours, j'appris que Luca Bolognese a mis au point une bibliothèque de fonctions financières pour

.NET

Vous pouvez le trouver ici: http://code.msdn.microsoft.com/FinancialFunctions

Peut-être que ce sera utile pour vous.

0

Vous pouvez consulter http://www.dmoz.org/Science/Math/Software/ - ils listent plusieurs C#. Je dirais essayer quelques-unes (éditions de démonstration si commercial) et faire un profilage pour voir si elles répondent à vos exigences. Vous pouvez également utiliser MATLAB - voir la section Limitations et alternatives de cette entrée. (Je n'ai aucune expérience personnelle avec ces outils.)

1

Je n'ai pas d'expérience avec le Mathematica/pont .NET, mais J'ai utilisé le pont Mathematica/Java, qui, à en juger par la documentation, est assez similaire. Bien sûr, une question à laquelle je ne peux pas répondre est la qualité de l'implémentation de l'interface en termes de stabilité et de performance. D'un point de vue conceptuel, j'ai trouvé que l'interface Java pour l'appel à Mathematica était plutôt bonne. Vous disposez d'un ensemble d'objets et de méthodes qui vous permettent de démarrer des sessions Mathematica et d'y envoyer des expressions Mathematica à évaluer. Vous pouvez soit envoyer du texte (ce qui est facile dans des cas simples mais difficile si vous voulez quelque chose de non trivial) ou des objets plus structurés Expr qui reflètent la structure arborescente de la syntaxe. Ces expressions vous permettront de faire n'importe quoi: évaluer les intégrales numériquement ou symboliquement, prendre des dérivées, résoudre des ODE, etc.

La zone où elle tombe tombe en erreur. Mathematica n'a pas d'exceptions en soi; à la place, il produit des «messages» lorsqu'il rencontre des problèmes et continue d'essayer d'évaluer l'expression sur laquelle il travaille.Cela a du sens à la lumière de la sémantique plutôt inhabituelle de Mathematica (où il fonctionne sur des expressions avec des réécritures de règles répétées) mais l'ensemble de méthodes par défaut pour communiquer avec Mathematica ne vous permet pas de surveiller facilement ces messages depuis Java. , .NET), bien qu'il soit possible d'écrire ses propres méthodes qui font un meilleur travail.

+0

Mathematica's MathLink.NET aussi Les problèmes avec des nombres complexes et Mathematica lui-même ne sont pas particulièrement bons pour ce genre de problèmes (par exemple, 'Fourier' de Mathematica était environ 4 × plus lent que FFTW et le support multicœur de Mathematica est horrible). –

1

langage de programmation Microsoft de Visual F# a été spécialement conçu pour ce genre de travail que vous voulez probablement juste appeler une solution F # existante à partir de votre code C# Par exemple, dans Visual Studio 2010 avec notre F# for Numerics bibliothèque installée, vous pouvez intégrer x -x-1 -3 à 3 de manière interactive comme suit:

> Functional.integrate (fun [x] -> x**3.0 - x - 1.0) [-3.0, 3.0];; 
val it : float = -6.0 

et calculer dérivée partielle de cette fonction par rapport à x à x=2 comme suit:

> Functional.d (fun x -> x**3.0 - x - 1.0) 2.0;; 
val it : float = 11.0 
0

Si vous avez un produit complémentaire pour Matlab Builder .NET, vous pouvez emballer un code Matlab dans un ensemble de .NET qui peut être appelé à partir de C#.

Questions connexes