2017-05-23 22 views
0

ここで、aは定数、xは時間に対する変数ですので、基本的にはx(t)としましょう。Maximaはdiffを使って式を簡略化します

Maximaでは、'diff(a*x,t)a*'diff(x,t)と置き換える最善の方法は、自動的にsubstコマンドを使用せずに行う方法です。

私がsubstを使用しない理由は、多くの変数と高次の導関数を持つからです。すべての出現箇所を置換するためにsubstを使用するのは効率的ではありません。

ありがとうございました。

UPDATE

私はdepends(x,t)コマンドを使用して試してみましたが、それだけで単純なケースで動作します。ここに私の状況の最小の例があります。

depends([x,y],t); 
eq1:diff(x,t)-b=c; 
eq2:subst([x=a*y],eq1); 
sol_dy=solve(eq2,diff(y,t)) 

もちろん、a、b、cは定数であり、x、yはtの変数です。 Maximaはdiff(y、t)を直接解くことはできません。どのようにそれに対処するのですか?

答えて

0

'diff(...)(派生名詞表現)は線形ではありません(+以上には分配されず定数を取り除かない)が、diff(...)(動詞表現)は線形です。それは少なくとも間違っている。

私はdeclare(nounify(diff), linear)を提案しようとしていましたが、あなたの例ではデリバティブが0になってしまいました...これはおそらくバグですので、もっと考えなければなりません。

ev(eq2, nouns);を動詞として再評価することをお試しください。これは、定数が原因となるはずです。

関連する問題