この質問に対する標準的な答えは、Brettが提示されたものです。 、つまりThread
を使用しています。 しかし、私はDSolve
、NDSolve
などで使用することがわかりました。コマンドLogicalExpand
が優れています。
eqn = {f'[t], g'[t]} == {{a, b}, {c, d}}.{f[t], g[t]};
LogicalExpand[eqn]
(* f'[t] == a f[t] + b g[t] && g'[t] == c f[t] + d g[t] *)
それはリストに、ベクトル方程式を変換しないが、それは自動的に行列/テンソル方程式およびベクトル式の組み合わせを平坦化するので、より有用です。あなたは上記の微分方程式に初期条件を追加したい場合 たとえば、あなたが行列式の例
init = {f[0], g[0]} == {f0, g0};
LogicalExpand[eqn && init]
(* f[0] == f0 && g[0] == g0 &&
f'[t] == a f[t] + b g[t] && g'[t] == c f[t] + d g[t] *)
を使用したいここThread
を使用して
mEqn = Array[a, {2, 2}] == Partition[Range[4], 2];
がぎこちないです、あなたが必要ですそれを複数回適用すると、結果はFlatten
になります。 LogicalExpand
を使用すると簡単です
LogicalExpand[mEqn]
(* a[1, 1] == 1 && a[1, 2] == 2 && a[2, 1] == 3 && a[2, 2] == 4 *)
@Mike古い回答を展開する場合は、関連する機能や概念へのドキュメントリンクも追加することを検討してください。たとえば、「Head」という言葉はコードのどこにも現れず、誰かが推測してしまうかもしれません。 –