問題タブ [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.
c# - 他のプログラミング言語 (python/C#) から Mathematica を使用することは可能ですか?
Mathematica の計算機能を他の言語から使用することは可能ですか? 私はいくつかの複雑な操作を行う必要があります (必ずしもシンボリックである必要はありません)。Mathematica の関数を呼び出したり、Python/C# のプログラムから直接 Mathematica のコードを実行したりできるのは非常に便利です。
出来ますか?
c - Mathematica/Mathlinkで導関数を計算する
私はMathlinkを介してCからMathematicaを使用する方法を理解しようとしています。
組み込み関数の値を計算したいだけなら、次のことができます。
そして、すべてが大丈夫です。
さて、導関数の値が必要な場合、事態はさらに悪化します。
動作しません。「D」関数を挿入しようとしましたが、機能しないようです。私がこれまでに見つけることができた最良の方法はこれです
動作しますが、非常に遅いです。おそらく、関数を呼び出すだけでなく、数式を解析するようにMathematicaに要求しているためです...もっと良い方法はありますか?
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 カーネルによって返される実際のソリューションに設定する必要があります。
wolfram-mathematica - (MathLink)スレーブカーネルによって生成されたメッセージの正しい処理
MathLink
スレーブカーネルで作業しているとき、正しい解析に問題がありますTextPacket
。特に、そのようなパケットMessage
がスレーブカーネルによって生成されたものに対応している場合、私はそれを正しく処理する方法をまったく理解していません。マスターカーネルによって生成されたかのように評価ノートに印刷する必要がありMessages
ます(ただし、スレーブからのものであることを明確にするためにいくつかのマークが付いています)。TextPacket
そして、 sに対応するMessage
sをコマンドだけから分離する必要がありPrint[]
ます。後者も正しく解析する必要があり、スレーブカーネルからのものであることを示す小さなマークを付けて評価ノートに印刷します。
何が起こるかの例を次に示します。
Message
デフォルトではMathLink
、次の形式で提供されます。
醜く見えます。私が見つけたそれをより良くする唯一の方法は、スレーブカーネルで評価することです
しかし、もっと簡単な解決策があるはずだと思います。特にこのように扱うとき、私はTextPacket
sをHoldForm
中に入れます:
そのような文字列を。として印刷するのに適した形式に変換する方法がわかりませんMessage
。
PSこの質問はその質問から来ています。
wolfram-mathematica - InString []のアナログを作成する方法は?
ヘッダー付きの入力を送信するときに、モードInString[]
で機能しないことを発見しました。したがって、前の入力行を返す独自の関数を定義する必要があります。私が開発した1つの方法は、場合によっては機能しません。MathLink
EnterExpressionPacket
here
これは、属性RuleDelayed
がないためです。HoldAllComplete
この属性を追加すると、これで問題ありません。
ただし、組み込み関数を変更することは一般的には良い考えではありません。これを行うためのより良い方法はありますか?
wolfram-mathematica - MathLinkのパケットのチェーン:パケットは常に厳密に順序付けられていますか?
ドキュメントには、を介してスレーブカーネルから返されるパケットの順序が明確に記載されていませんMathLink
。(headEnterExpressionPacket
を使用して入力式を送信し、標準モードで作業する場合):
1)次の前の最後のパケットInputNamePacket
は常に
ReturnExpressionPacket
2)常に1つだけである可能性がありReturnExpressionPacket
ます
OutputNamePacket
EnterExpressionPacket
3)ReturnExpressionPacket
常に次のOutputNamePacket
4)MessagePacket
次のパケットの後には常にTextPacket
そのメッセージのすべての内容が含まれています
InputNamePacket
5)標準モードで返されるパケットは7種類のみですOutputNamePacket
:、、、、、、、、
。ReturnExpressionPacket
DisplayPacket
DisplayEndPacket
MessagePacket
TextPacket
これらのステートメントのどれが正しいですか?
c++ - MacOSでPythonikaをコンパイルする
Snow LeopardでPythonikaをコンパイルしていますが、エラーが発生した場合は、標準フラグが欠落していることがわかります。何が欠落しているのでしょうか。別の投稿では、-lrtフラグが必要であると示唆されていますが、MacOSでは使用できません
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
?
wolfram-mathematica - スレーブカーネルを安全に強制終了するには?
LinkClose[link]
ドキュメントに記載されているように、「接続の反対側で必ずしもプログラムを終了するとは限りません」。スレーブ カーネルのプロセスを安全に強制終了する方法はありますか?
編集:
実際には、スレーブカーネルのプロセスがすでに終了し、そのメモリがすでに解放されている場合にのみ戻るMathematicaの関数が必要です。と の両方が、スレーブ カーネルが終了するまで待機LinkInterrupt[link, 1]
しLinkClose[link]
ません。現時点では、そのような機能はkillProc[procID]
、このページの回答の1つで示した機能だけのようです。しかし、内蔵のアナログはありますか?
wolfram-mathematica - MathLink関数内でCheckAbort?
MathLink
や のような機能は、アボートを吸収し、それ以上伝播しない独自の内部のようなものLinkWrite
を持っていることがわかりました。LinkRead
CheckAbort
これは、次のように簡単に表示できますLinkRead
。
上記のコードを評価した後、Alt+.を押すと、次の出力が得られます。
ご覧のとおり、アボートは によって吸収されましたLinkRead
。
私の問題は、に基づく評価のフロー制御を壊してしまうことCheckAbort
です。
LinkRead
やなどの関数によって吸収されるアボートをインターセプトする方法はありLinkWrite
ますか?