計算に.NET (C#)で利用できる最適な (最も効率的な) ツールは何ですか?
- 積分
- 偏微分
- その他の重要な数学
Mathematica と Matlab およびそれらのC#への統合についてコメントしてもらえますか?
計算に.NET (C#)で利用できる最適な (最も効率的な) ツールは何ですか?
Mathematica と Matlab およびそれらのC#への統合についてコメントしてもらえますか?
Math.NETは、Microsoft .NET プラットフォーム用に C# で記述されたオープン ソースの数学ツールキットであり、科学数値計算と記号代数計算の両方に自己完結型のクリーンなフレームワークを提供することを目的としています。特に、Math.NET NumericsはdnAnalyticsとMath.NET Iridiumの合併の結果であり、次の機能が含まれています。
それが最良またはより効率的であるとは保証できませんが、数日前、Luca Bologneseが .NET 用の財務関数のライブラリを開発したことを知りました。
ここで見つけることができます: http://code.msdn.microsoft.com/FinancialFunctions
多分それはあなたにとって役に立つでしょう。
Microsoft のVisual F#プログラミング言語は、この種の作業用に特別に設計されているため、C# コードから既存の F# ソリューションを呼び出したいだけかもしれません。たとえば、F# for Numericsライブラリがインストールされた Visual Studio 2010 では、次のように x 3 -x-1 from -3 to 3 を対話的に統合できます。
> Functional.integrate (fun [x] -> x**3.0 - x - 1.0) [-3.0, 3.0];;
val it : float = -6.0
そして、次のようにx
atに関してその関数の偏導関数を計算します。x=2
> Functional.d (fun x -> x**3.0 - x - 1.0) 2.0;;
val it : float = 11.0
Mathematica/.NET ブリッジの経験はありませんが、ドキュメントから判断すると、Mathematica/Java ブリッジはかなり似ています。もちろん、インターフェースの実装が安定性とパフォーマンスの点でどれだけ優れているかは、私には答えられません。
概念的には、Mathematica を呼び出すための Java インターフェイスはかなり優れていることがわかりました。Mathematica セッションを開始し,Mathematica 式をそれらに送信して評価するための一連のオブジェクトとメソッドがあります.テキスト (単純な場合は簡単ですが、重要なものが必要な場合は注意が必要です)、またはExpr
構文ツリー構造を反映したより構造化されたオブジェクトを送信できます。これらの式を使用すると、積分を数値的または記号的に評価したり、導関数を取得したり、ODE を解いたりするなど、ほぼすべてのことを実行できます。
いくつか落ちる 1 つの領域は、エラー処理にあります。Mathematica 自体には例外はありません.代わりに、問題が発生したときに「メッセージ」を生成し、作業中の式を評価しようとし続けます。これは、Mathematica のかなり変わったセマンティクス(規則の書き換えが繰り返される式で動作する)に照らしてある程度の意味がありますが、Mathematica と通信するためのデフォルトのメソッドセットでは、Java内からこれらのメッセージを簡単に監視することはできません(または、 、.NET)、これをより適切に処理する独自のメソッドを作成することは可能です。
.NET 用のアドオン製品 MATLAB Builder がある場合、C# から呼び出すことができる .NET アセンブリに MATLAB コードをパッケージ化できます。
http://www.dmoz.org/Science/Math/Software/をチェックしてみてください。いくつかの C# がリストされています。いくつか (商用の場合はデモ版) を試して、プロファイリングを行って、それらが要件を満たしているかどうかを確認してください。MATLABを使用することもできます- そのエントリの制限事項と代替手段のセクションを参照してください。(私はこれらのツールについて個人的な経験はありません。)
f# http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/をご覧ください。
これは、Visual Studio 2010 の一部になります。