問題タブ [mathlink]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
3129 参照

c# - 他のプログラミング言語 (python/C#) から Mathematica を使用することは可能ですか?

Mathematica の計算機能を他の言語から使用することは可能ですか? 私はいくつかの複雑な操作を行う必要があります (必ずしもシンボリックである必要はありません)。Mathematica の関数を呼び出したり、Python/C# のプログラムから直接 Mathematica のコードを実行したりできるのは非常に便利です。

出来ますか?

0 投票する
1 に答える
299 参照

c - Mathematica/Mathlinkで導関数を計算する

私はMathlinkを介してCからMathematicaを使用する方法を理解しようとしています。

組み込み関数の値を計算したいだけなら、次のことができます。

そして、すべてが大丈夫です。

さて、導関数の値が必要な場合、事態はさらに悪化します。

動作しません。「D」関数を挿入しようとしましたが、機能しないようです。私がこれまでに見つけることができた最良の方法はこれです

動作しますが、非常に遅いです。おそらく、関数を呼び出すだけでなく、数式を解析するようにMathematicaに要求しているためです...もっと良い方法はありますか?

0 投票する
3 に答える
874 参照

wolfram-mathematica - MathLink を介して v.7.01 セッション内から v.5.2 カーネルでコードを実行する

Mathematica 7.01 とMathematica 5.2を同じマシンにインストールしています。Mathematica 7.01 セッション内から v.5.2 カーネルのコードを評価できるようにしたいと考えています。つまり、Mathematica 7.0.1 標準セッションを実行しているkernel5Evaluateときに、5.2 カーネルのコードを評価し、その結果を 7.01 カーネルに返し、7.01 フロントエンド ノートブックにリンクするようなコマンドが必要です。 7.01 カーネル。

例 (標準のMathematica v.7.01 セッション):

どちらの場合も、v.5.2 カーネルが v.7.01 フロントエンドで「ノートブックのカーネル」に設定されているかのような結果になるはずです。もちろん、solutionFrom5変数は v.5.2 カーネルによって返される実際のソリューションに設定する必要があります。

0 投票する
2 に答える
576 参照

wolfram-mathematica - (MathLink)スレーブカーネルによって生成されたメッセージの正しい処理

MathLinkスレーブカーネルで作業しているとき、正しい解析に問題がありますTextPacket。特に、そのようなパケットMessageがスレーブカーネルによって生成されたものに対応している場合、私はそれを正しく処理する方法をまったく理解していません。マスターカーネルによって生成されたかのように評価ノートに印刷する必要がありMessagesます(ただし、スレーブからのものであることを明確にするためにいくつかのマークが付いています)。TextPacketそして、 sに対応するMessagesをコマンドだけから分離する必要がありPrint[]ます。後者も正しく解析する必要があり、スレーブカーネルからのものであることを示す小さなマークを付けて評価ノートに印刷します。

何が起こるかの例を次に示します。

MessageデフォルトではMathLink、次の形式で提供されます。

醜く見えます。私が見つけたそれをより良くする唯一の方法は、スレーブカーネルで評価することです

しかし、もっと簡単な解決策があるはずだと思います。特にこのように扱うとき、私はTextPacketsをHoldForm中に入れます:

そのような文字列を。として印刷するのに適した形式に変換する方法がわかりませんMessage

PSこの質問はその質問から来ています。

0 投票する
3 に答える
277 参照

wolfram-mathematica - InString []のアナログを作成する方法は?

ヘッダー付きの入力を送信するときに、モードInString[]で機能しないことを発見しました。したがって、前の入力行を返す独自の関数を定義する必要があります。私が開発した1つの方法は、場合によっては機能しません。MathLinkEnterExpressionPackethere

これは、属性RuleDelayedがないためです。HoldAllCompleteこの属性を追加すると、これで問題ありません。

ただし、組み込み関数を変更することは一般的には良い考えではありません。これを行うためのより良い方法はありますか?

0 投票する
1 に答える
112 参照

wolfram-mathematica - MathLinkのパケットのチェーン:パケットは常に厳密に順序付けられていますか?

ドキュメントには、を介してスレーブカーネルから返されるパケットの順序が明確に記載されていませんMathLink。(headEnterExpressionPacketを使用して入力式を送信し、標準モードで作業する場合):

1)次の前の最後のパケットInputNamePacketは常に ReturnExpressionPacket

2)常に1つだけである可能性がありReturnExpressionPacketます OutputNamePacketEnterExpressionPacket

3)ReturnExpressionPacket常に次のOutputNamePacket

4)MessagePacket次のパケットの後には常にTextPacketそのメッセージのすべての内容が含まれています

InputNamePacket5)標準モードで返されるパケットは7種類のみですOutputNamePacket:、、、、、、、、 。ReturnExpressionPacketDisplayPacketDisplayEndPacketMessagePacketTextPacket

これらのステートメントのどれが正しいですか?

0 投票する
1 に答える
367 参照

c++ - MacOSでPythonikaをコンパイルする

Snow LeopardでPythonikaをコンパイルしていますが、エラーが発生した場合は、標準フラグが欠落していることがわかります。何が欠落しているのでしょうか。別の投稿では、-lrtフラグが必要であると示唆されていますが、MacOSでは使用できません

0 投票する
2 に答える
294 参照

wolfram-mathematica - General::stop とメイン ループの動作の変更

ドキュメンテーションpageには、次のように記載されGeneral::stopています。

このメッセージは、示されたメッセージが1 回の評価で3 回生成された後に生成されます。

長い計算でメッセージが冗長または繰り返しになるのを防ぐために、メッセージは抑制されます。

私の問題は、作業中MathLinkにすべてのポイントを単一の評価として渡すため、General::stop表示されないことです。

たとえば、次のように定義するとします。

Messageの評価と同じ数のパケットを取得しますf[z]。もちろんGeneral::stop、同じメッセージを 3 回生成した後、スレーブ カーネルでメッセージの生成を停止させたいと考えています。これを達成する方法はありますか?

のドキュメントページで、$MessageListそれを読みました

標準のMathematicaメインループでは、特定の入力行の処理が完了すると $MessageList が {} にリセットされます。

そして、tutorial/Messages私たちが読んだページで:

実行するすべての計算で、 Mathematicaは生成されるすべてのメッセージのリスト $MessageList を維持します。標準Mathematicaセッションでは、このリストは出力の各行が生成されるたびにクリアされます。

General::stopこれが表示されない理由でしょうか?それが本当なら、メイン ループのこの側面を制御する方法はありますか? このような非標準のMathematicaセッションを作成する方法はありますか?

編集: 私の推測は正しかったようです。$MessageListすべてのメッセージの後にクリアすると、General::stop表示されなくなります。

出力を生成した後に自動クリアを無効にする方法は$MessageList?

0 投票する
2 に答える
569 参照

wolfram-mathematica - スレーブカーネルを安全に強制終了するには?

LinkClose[link]ドキュメントに記載されているように、「接続の反対側で必ずしもプログラムを終了するとは限りません」。スレーブ カーネルのプロセスを安全に強制終了する方法はありますか?

編集:

実際には、スレーブカーネルのプロセスがすでに終了し、そのメモリがすでに解放されている場合にのみ戻るMathematicaの関数が必要です。と の両方が、スレーブ カーネルが終了するまで待機LinkInterrupt[link, 1]LinkClose[link]ません。現時点では、そのような機能はkillProc[procID]、このページの回答の1つで示した機能だけのようです。しかし、内蔵のアナログはありますか?

0 投票する
1 に答える
263 参照

wolfram-mathematica - MathLink関数内でCheckAbort?

MathLinkや のような機能は、アボートを吸収し、それ以上伝播しない独自の内部のようなものLinkWriteを持っていることがわかりました。LinkReadCheckAbort

これは、次のように簡単に表示できますLinkRead

上記のコードを評価した後、Alt+.を押すと、次の出力が得られます。

ご覧のとおり、アボートは によって吸収されましたLinkRead

私の問題は、に基づく評価のフロー制御を壊してしまうことCheckAbortです。

LinkReadやなどの関数によって吸収されるアボートをインターセプトする方法はありLinkWriteますか?