Maxima 使用 diff 简化表达式

Maxima simplify expression with diff

让我们假设 a 是一个常数,x 是我关于时间的变量,所以基本上 x(t)。

那么在 Maxima 中,最好的方法是在不使用 subst 命令的情况下自动将 'diff(a*x,t) 替换为 a*'diff(x,t)

我不使用 subst 的原因是我有很多变量和高阶导数。使用 subst 替换所有出现的地方效率不高。

谢谢。

更新

我试过 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)。如何处理?

我看到 'diff(...)(即派生名词表达式)不是线性的(不分布在 + 上并且不分解常数)但是 diff(...)(动词表达式)是线性的。至少这是一个错误。

我本来打算建议 declare(nounify(diff), linear) 但这会使导数在您的示例中显示为 0 ...这可能是一个错误,我将不得不考虑更多。

尝试 ev(eq2, nouns); 将派生词重新评估为动词——我认为这应该会导致常数分解。