我正在创建最大值函数,以简化向量上的del运算符。如何将列表/向量传递给maxima函数?这有效:
(%i7) dot(a,b) := a[1]*b[1]+a[2]*b[2]+a[3]*b[3];
(%o7) dot(a, b) := a b + a b + a b
1 1 2 2 3 3
(%i8) dot(a,b);
2
(%o8) 3 x y - 4 x
但这不是:
(%i13) grad(a) := diff(a[1],x) + diff(a[2],y) + diff(a[3],z);
define: argument cannot be an atom or a subscripted memoizing function; found:
a
-- an error. To debug this try: debugmode(true);
Maxima关于范围和下标的规则极为混乱。首先,我对此表示歉意。
我的猜测是,您已经有一个a
按定义时间命名的数组grad
。尝试使用其他名称作为参数grad
-尝试使用尚未使用的参数。这样行吗?
无论如何,定义不应该是:
grad(a) := [diff(a, x), diff(a, y), diff(a, z)];
??
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句