【问题标题】:How to pass an array as an argument to a maxima function?如何将数组作为参数传递给最大值函数?
【发布时间】:2014-09-10 08:20:27
【问题描述】:

我正在创建最大值函数以简化向量上的 del 运算符。如何将列表/向量传递给最大值的函数?这有效:

(%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


    【解决方案1】:

    Maxima 关于范围和下标的规则非常混乱。首先,我会为此道歉。

    我的猜测是,在您定义 grad 时,您已经有了一个名为 a 的数组。为grad 的参数尝试一个不同的名称——尝试一些你还没有使用过的东西。是这样的吗?

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

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

    ??

    【讨论】:

    • 好点。我真的是在定义 del(a),我混淆了标量/向量形式的术语
    猜你喜欢
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 2013-01-20
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    相关资源
    最近更新 更多