計算するための.NET(C#の)で利用可能な最高のツール(最も効率的な)どのようなものです:複雑な計算
- 積分
- 偏微分
- 他の非自明な数学
人々はMathematicaとMatlabに言及して、C#にそれらの統合をコメントできますか?
計算するための.NET(C#の)で利用可能な最高のツール(最も効率的な)どのようなものです:複雑な計算
人々はMathematicaとMatlabに言及して、C#にそれらの統合をコメントできますか?
Math.NETは、数値科学的および記号的代数計算のための自己完結型のクリーンなフレームワークを提供することを目的としたMicrosoft .NETプラットフォーム用のC#で書かれた数学的なオープンソースツールキットです。特に、Math.NET NumericsはMath.NET IridiumとdnAnalyticsの合併の結果であり、次の機能が含まれています(LU、QR、eigenvalues、...分解して)
リンクが動作しません:-) –
URLが間違っている、http://www.mathdotnet.com/ –
私はそれが最善か、より効率的であることを保証することはできませんが、数日前、私はLuca Bologneseあなたはここでそれを見つけることができます.NET
のための金融機能のライブラリを開発していることを学びました:http://code.msdn.microsoft.com/FinancialFunctions
を多分それはあなたの役に立つでしょう。
あなたはhttp://www.dmoz.org/Science/Math/Software/をチェックアウトするかもしれません - それらはいくつかのC#ものをリストします。私はいくつか試してみましょう(商用の場合はデモ版)、あなたの要件を満たしているかどうかを調べるためにいくつかのプロファイリングを行います。 MATLABを使用することもできます - そのエントリの制限と代替手段のセクションを参照してください。
ルーチン私はMathematicaの/ .NETブリッジでの経験を持っていないが、私はMathematica/Javaブリッジを使っていますが、ドキュメントから判断するとかなり似ています。もちろん、私が答えることができない1つの質問は、インターフェイスのの実装が安定性とパフォーマンスの点でどれくらい良いかということです。
概念的には、Mathematicaを呼び出すためのJavaインターフェイスがかなり良いとわかりました。 Mathematicaセッションを開始し、Mathematica式を評価対象に送るための一連のオブジェクトとメソッドがあります。あなたはテキストを送ることができます(簡単な場合は簡単ですが、何かがほしいと思うのであればややこしい)か、構造ツリー構造を反映するより構造化されたオブジェクトExpr
を送ることができます。これらの式を使用すると、数値的または記号的に積分を評価したり、微分を取ったり、ODEを解決するなど、あらゆることを行うことができます。
エラーが発生する部分があります。 Mathematicaには例外はありません。代わりに、問題に遭遇したときに「メッセージ」を生成し、それが作業している式を評価しようとします。これはMathematicaの珍しいセマンティクス(ルールの書き換えを繰り返す式で動作する)に照らして意味をなさないが、Mathematicaと通信するためのデフォルトのメソッドでは、Javaからメッセージを簡単に監視することはできない、.NET)、より良い仕事をする独自のメソッドを記述することは可能です。
MathematicaのMathLink.NET複雑な数の苦労やMathematica自体は、この種の問題にはあまりよくありません(MathematicaのFourierはFFTWよりも遅く、Mathematicaのマルチコアサポートはひどい)。 –
は、それはあなたがおそらく既存のF#ソリューションを呼び出したいので、2010年
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
あなたはアドオン製品MATLABビルダー.NET用を持っている場合、あなたは、C#から呼び出すことができ.NETアセンブリにMATLABコードをパッケージ化することができます。
数値的または象徴的に? –
最新の編集内容を明確にするために、C#でMathematicaやMatlab関数を使用しようとしているのですか、MathematicaやMatlabからC#クラスを呼び出そうとしていますか? – las3rjock
アプリケーションはC#で書かれています - 私はC#(外部関数を呼び出す)からの計算を実行する必要があります – mson