如何将数组作为参数传递给最大值函数?

时间:2014-09-09 21:32:18

标签: maxima

我正致力于创建最大值函数以简化向量上的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);

1 个答案:

答案 0 :(得分:2)

Maxima对范围和下标有极其混乱的规则。首先,我会为此道歉。

我的猜测是,在定义a时,您已经有一个名为grad的数组。为grad的参数尝试不同的名称 - 尝试一些尚未使用的内容。这样做有用吗?

无论如何,定义不应该是:

grad(a) := [diff(a, x), diff(a, y), diff(a, z)];

...