2009-08-29 10 views
13

計算するための.NET(C#の)で利用可能な最高のツール(最も効率的な)どのようなものです:複雑な計算

  • 積分
  • 偏微分
  • 他の非自明な数学

人々はMathematicaとMatlabに言及して、C#にそれらの統合をコメントできますか?

+1

数値的または象徴的に? –

+0

最新の編集内容を明確にするために、C#でMathematicaやMatlab関数を使用しようとしているのですか、MathematicaやMatlabからC#クラスを呼び出そうとしていますか? – las3rjock

+0

アプリケーションはC#で書かれています - 私はC#(外部関数を呼び出す)からの計算を実行する必要があります – mson

答えて

13

Math.NETは、数値科学的および記号的代数計算のための自己完結型のクリーンなフレームワークを提供することを目的としたMicrosoft .NETプラットフォーム用のC#で書かれた数学的なオープンソースツールキットです。特に、Math.NET NumericsMath.NET IridiumdnAnalyticsの合併の結果であり、次の機能が含まれています(LUQReigenvalues、...分解して)

  • 実数と複素数、緻密でスパース線形代数を
  • 数値関数の統合(直交)は
  • 積分変換
+0

リンクが動作しません:-) –

+0

URLが間違っている、http://www.mathdotnet.com/ –

1

私はそれが最善か、より効率的であることを保証することはできませんが、数日前、私はLuca Bologneseあなたはここでそれを見つけることができます.NET

のための金融機能のライブラリを開発していることを学びました:http://code.msdn.microsoft.com/FinancialFunctions

多分それはあなたの役に立つでしょう。

0

あなたはhttp://www.dmoz.org/Science/Math/Software/をチェックアウトするかもしれません - それらはいくつかのC#ものをリストします。私はいくつか試してみましょう(商用の場合はデモ版)、あなたの要件を満たしているかどうかを調べるためにいくつかのプロファイリングを行います。 MATLABを使用することもできます - そのエントリの制限と代替手段のセクションを参照してください。

1

ルーチン私はMathematicaの/ .NETブリッジでの経験を持っていないが、私はMathematica/Javaブリッジを使っていますが、ドキュメントから判断するとかなり似ています。もちろん、私が答えることができない1つの質問は、インターフェイスのの実装が安定性とパフォーマンスの点でどれくらい良いかということです。

概念的には、Mathematicaを呼び出すためのJavaインターフェイスがかなり良いとわかりました。 Mathematicaセッションを開始し、Mathematica式を評価対象に送るための一連のオブジェクトとメソッドがあります。あなたはテキストを送ることができます(簡単な場合は簡単ですが、何かがほしいと思うのであればややこしい)か、構造ツリー構造を反映するより構造化されたオブジェクトExprを送ることができます。これらの式を使用すると、数値的または記号的に積分を評価したり、微分を取ったり、ODEを解決するなど、あらゆることを行うことができます。

エラーが発生する部分があります。 Mathematicaには例外はありません。代わりに、問題に遭遇したときに「メッセージ」を生成し、それが作業している式を評価しようとします。これはMathematicaの珍しいセマンティクス(ルールの書き換えを繰り返す式で動作する)に照らして意味をなさないが、Mathematicaと通信するためのデフォルトのメソッドでは、Javaからメッセージを簡単に監視することはできない、.NET)、より良い仕事をする独自のメソッドを記述することは可能です。

+0

MathematicaのMathLink.NET複雑な数の苦労やMathematica自体は、この種の問題にはあまりよくありません(MathematicaのFourierはFFTWよりも遅く、Mathematicaのマルチコアサポートはひどい)。 –

0

は、それはあなたがおそらく既存のF#ソリューションを呼び出したいので、2010年

1

MicrosoftのVisual F#プログラミング言語は、具体的に、この種の仕事のために設計されたのVisual Studioの一部になります#http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/

Fを見てくださいあなたのC#コードから。

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

とでxに関して、その関数の偏微分を計算する:たとえば、私たちのF# for NumericsライブラリとのVisual Studio 2010年にあなたは-3〜3次の対話形式としてX -x-1を統合することができますインストールx=2は、次のように

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

あなたはアドオン製品MATLABビルダー.NET用を持っている場合、あなたは、C#から呼び出すことができ.NETアセンブリにMATLABコードをパッケージ化することができます。

関連する問題