問題タブ [wolfram-mathematica]
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# - Mathematica 構文のパーサー?
Mathematica 式を解析できる C# から使用できる組み込みのパーサーはありますか?
カーネル自体を使用して式を解析し、.NET/Link を使用してツリー構造を取得できることを知っています...しかし、カーネルに依存しないものを探しています。
function - Mathematica のオプションの名前付き引数
オプションの名前付き引数を持つ関数を定義するための最良/標準的な方法は何ですか? 具体的にするために、foo
名前付き引数a
、b
、およびを持つ関数を作成しましょうc
。デフォルトはそれぞれ 1、2、および 3 です。比較のために、foo
位置引数付きのバージョンを次に示します。
の名前付き引数バージョンの入力と出力の例を次に示しますfoo
。
もちろん、名前付き引数の前に位置引数を指定することも簡単です。
wolfram-mathematica - Mathematica:FindInstanceの結果から「x ->」を取り除く
次の結果があるとします。
「b->」を取り除き、b の回答の配列を取得するにはどうすればよいですか? 私はそこに途中まで行くことができます:
しかし、どうすれば取得できますか:
ありがとう
macros - Mathematica:未評価vs延期vs保留vs HoldForm vsHoldAllCompletevsなど
私は、何らかの方法で評価を防ぐことを目的としたすべての組み込みのMathematica関数に戸惑っています:、、、Unevaluated
およびフォームの半ダース以上。Mathematicaのドキュメントでは、どちらかを選択する理由を説明せずに、各関数を個別に説明しています。誰かがこれらすべての機能の首尾一貫した説明を提供できますか?全体が複雑な混乱のように思えます。すべてをLispマクロに関連付けることから始めるのが良いかもしれません。Defer
Hold
Hold*
Mathematica言語のほとんどは驚くほどうまく設計されていますが、Wolframはこの面で本当に自分自身を隅に追いやったようです。または、何かが足りない可能性があります。
image-processing - Mathematica プログラミング グラフ プロット
40,000 データ ポイントのファイルがあります。Matlab では、plot コマンドを使用してプロットを描画できます。
Mathematica でそれを行うにはどうすればよいですか?私は試した:
しかし、うまくいきません。
parsing - foo[.2] と foo[.20] を区別できる Mathematica 関数 foo
数値を受け取り、それを指定されたとおりに文字列として返す関数が必要だとします。以下は機能しません。
foo[.2]
との出力foo[.20]
は同じです。
これを行う理由は、区切り記号としてドットを使用した日付を理解できる関数が必要だからですf[2009.10.20]
。これは Mathematica の奇妙な乱用であることは理解していますが、私はドメイン固有言語を作成しており、eval (ToExpression) を実行するだけでそのパーサーとして Mathematica を使用したいと考えています。2009.01.02 のように 2 桁の日と月に頼ることができれば、実際にこれを機能させることができますが、2009.1.2 も許可したいので、上記の質問に要約されます。
唯一の答えは、文字列として渡してから解析することだと思いますが、おそらく私にはわからないトリックがあります。これはこの質問に関連していることに注意してください: Mathematica: Unevaluated vs Defer vs Hold vs HoldForm vs HoldAllComplete vs etc etc
list - Mathematica で重複を表示
Mathematica にはリストがあります:
重複したリストを作成するにはどうすればよいですか? お気に入り:
Lists as Setsを見てきましたが、リストに Except[] のようなものがある場合は、次のことができます。
(もちろん、x に 2 つ以上の重複がある場合、たとえば {1, 2,2,2 ,3,4,4} の場合、出力は {2,2,4} になりますが、追加の Union[]これで解決します。)
しかし、そのようなことはありませんでした(すべての機能をよく理解していれば)。
それで、それを行う方法は?
memory-management - Mathematica のメモリ不足
次のプログラムを実行しようとしています。このプログラムは、係数が +1 または -1 のみの d までの次数の多項式の根を計算し、それをファイルに保存します。
ここで、f[z,i] は、2 進数でカウントするプラスまたはマイナス符号を持つ z の多項式を返します。d=2 としましょう。
f[z,1] = -z 2 - z - 1
f[z,2] = -z 2 - z + 1
f[z,3] = -z 2 + z - 1
f[z,4] = - z 2 + z + 1
これを読んでもあまり楽しくないかもしれませんが、とにかく比較的短いです。関連する部分に切り詰めようとしましたが、ここでは何が問題なのかまったくわかりません。f[z,i] のすべてのルートを計算し、それらを四捨五入して n グリッドの点に対応させ、そのデータをさまざまなファイルに保存します。
何らかの理由で、Mathematica のメモリ使用量が徐々に増加し、すべてのメモリ (このマシンでは 6 GB) がいっぱいになります。その後、計算は非常にゆっくりと続行されます。どうしてこれなの?
ここで何がメモリを使い果たしているのかわかりません - 私の唯一の推測はファイルのストリームがメモリを使い果たしたということでしたが、そうではありません: 2GB のファイルにデータを追加しようとしましたが、そのための目立ったメモリ使用量はありませんでした. ここで Mathematica が大量のメモリを使用する理由はまったくないようです.
d の値が小さい場合 (たとえば 15)、動作は次のようになります。4 つのカーネルが実行されています。すべてが ParallelDo ループを実行する (それぞれが一度に j の値を実行する) と、すべてがそのループを 1 回通過し終わるまで、メモリ使用量が増加します。次にそのループを通過するとき、メモリ使用量はまったく増加しません。計算は最終的に終了し、すべて問題ありません。
また、非常に重要なことに、計算が停止すると、メモリ使用量は元に戻りません。別の計算を開始すると、次のことが起こります。
- メモリ使用量がまだ増加しているときに前回の計算が停止した場合は、増加し続けます (基本的に計算で同じポイントに到達するには、再び増加し始めるまでに時間がかかる場合があります)。
- メモリ使用量が増加していないときに前回の計算が停止した場合、それ以上増加しません。
編集:この問題は、 f の相対的な複雑さに起因しているようです。より簡単な多項式に変更すると、問題が解決するようです。問題は、Mathematica が i の特定の値に対して f[z,i] を記憶しているが、f[z,i] := を設定していることだと思いました。f[z,i] のルートを計算した直後に、代入がそもそも存在しなかったと不平を言い、メモリはまだ使用されています。
f がメモリを消費すると想像できる唯一の残りのものであるため、実際には非常に不可解ですが、内側の Do ループで f を定義し、根が計算されるたびにそれをクリアしても問題は解決しません。
wolfram-mathematica - Mathematica 7 のリスト間の複数代入
2 つのリストa = {a1, a2, a3}
とがあり、 とのみを参照するb = {b1, b2, b3}
make への割り当てステートメントを書きたいとします。a1=b1,a2=b2,a3=b3
a
b
しかし、それは作るだけa={b1,b2,b3}
です。:=
代わりに (SetDelayed)を使用=
しても機能しません。
解決策はありますか?ありがとう。
wolfram-mathematica - Mathematicaで以前に定義されたメッセージを見つける
Mathematicaはデフォルトで、間違った数の引数で関数が呼び出されたり、ファイルが見つからなかったりするなど、一般的なエラーを通知するための多くの有用なメッセージを定義します。Check
一般に、私は可能な限り既存の定義済みメッセージを使用することを好みます。これにより、、、Quiet
およびOn
/などのメカニズムを介してメッセージを処理しやすくなりますOff
。ただし、現在定義されているメッセージを見つけるためのすべての試みは失敗しました。のような明白なアプローチ
まったく動作しません。
私が見逃しているトリックはありますか?
前もって感謝します。