【问题标题】:maxima: use function as function argument最大值:使用函数作为函数参数
【发布时间】:2016-05-30 13:47:55
【问题描述】:

正如标题所说,我想使用函数作为函数参数。 直觉我尝试了类似的东西:

a(t,c) := t+c;
b(R_11, R_12, R_13, d_1x, d_1y, d_1z) := R_11*d_1x + R_12*d_1y + R_13*d_1z;

f( a(t,c), b(R_11, R_12, R_13, d_1x, d_1y, d_1z), %lambda ) := a(t,c) + 
     %lambda * b(R_11, R_12, R_13, d_1x, d_1y, d_1z);

但 Maxima 声明“定义:在 f 的定义中,发现错误的参数”

我的目标是简化我的方程式以获得更好的概览。当我区分像

diff( f(...), R_11 )

这个例子的结果应该是 b 对 R_11 的偏导数。

f' = b_R11(...)

有没有办法做这样的想法,或者这是一个奇怪的尝试,也许有更好的方法?

【问题讨论】:

    标签: maxima


    【解决方案1】:

    您可以声明b 依赖于一些参数,然后diff 将构造b 的形式派生。

    (%i1) depends (b, [R1, R2]);
    (%o1)                             [b(R1, R2)]
    (%i2) depends (a, t);
    (%o2)                               [a(t)]
    (%i3) f(t, R1, R2) := a(t) + b(R1, R2);
    (%o3)                  f(t, R1, R2) := a(t) + b(R1, R2)
    (%i4) diff (f(t, R1, R2), R1);
                                     d
    (%o4)                           --- (b(R1, R2))
                                    dR1
    (%i5) diff (f(t, R1, R2), t);
                                       d
    (%o5)                              -- (a(t))
                                       dt
    

    但这只有在 b 未定义时才有效。当b 被定义时,diff 将继续调用b 并计算关于返回值的导数。

    (%i8) b(R1, R2) := 2*R1 + 3*R2;
    (%o8)                      b(R1, R2) := 2 R1 + 3 R2
    (%i9) diff (f(t, R1, R2), R1);
    (%o9)                                  2
    

    【讨论】:

    • 感谢您的提示!很高兴这里有开发人员 ;-) depends 是一个很棒的功能,适合我的需要。
    猜你喜欢
    • 2021-01-04
    • 2015-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 2019-06-12
    • 2019-09-11
    • 1970-01-01
    相关资源
    最近更新 更多