• 締切済み

c言語についての質問です

c言語で複雑な処理をmathematicaに処理させてその結果をc言語に出力させたいのですが可能ですか? また、可能な場合どのようにすればいいですか。

みんなの回答

  • sanze_hui
  • ベストアンサー率100% (6/6)
回答No.2

呼び出す際にはそれほど特別なことは行いません(何を以って「特別」なのかが分かりませんが、通信を行うプログラムとしては普通です)。 前回の参照URLに書いてあるように、 1. カーネルを起動して接続 2. カーネルにデータ(パケット)を送って計算させる 3. 返されたデータ(パケット)を処理する 4. 最後は接続を閉じて終了 という流れです。 呼び出す時よりも、コンパイルやリンクする際にヘッダファイルやライブラリを自分の環境に合わせて準備しておく必要がありますので、ちょっと面倒です。 幸い日本語のドキュメントがありますので、一通りお読みになることをおすすめします。

参考URL:
http://reference.wolfram.com/language/tutorial/WSTPAndExternalProgramCommunicationOverview.html
abchiro5296
質問者

お礼

ありがとうございます。 ちなみに環境は windows vista cygwin mathematica 9 です。

  • sanze_hui
  • ベストアンサー率100% (6/6)
回答No.1

可能です。 最新のMathematicaではWSTPという名前になりましたが、私が使っているMathematica 8ではMathLinkという名前でした。 私の環境と名前が変わっているため、詳しくは参考URLを見ていただくしかないのですが、Mathematicaをインストールしたディレクトリの下に、サンプルファイルがいくつかありますので、それを見ながら試行錯誤してみてください。 Linux 64bit、Mathematica 8の場合は/usr/local/Wolfram/Mathematica/8.0/SystemFiles/Links/MathLink/DeveloperKit/Linux-x86-64/MathLinkExamplesにサンプルがありますが、環境やMathematicaのバージョンによって多少変わっていると思います。 ちなみに、C以外でも、.NETの言語(C#やVB.NET)、JavaからもMathematicaを呼び出せます。やりたいことに合わせて選択してください。

参考URL:
http://reference.wolfram.com/language/tutorial/RunningTheWolframSystemFromWithinAnExternalProgram.html
abchiro5296
質問者

お礼

ありがとうございます。 参考しさせていいただきます。 もうひとつ質問なのですがc言語側では呼び出す際には何か特別なことはしないんですか。

関連するQ&A