Maxima 中的函数(泛函)函数

标签 function user-defined-functions maxima

我想在Maxima中定义一个函数的函数(也许是函数式的)。比如我想在代码中定义T:

f(r,GN,M)::=(2*GN*M^2)*(2*GN*M/r-(2*GN*M/(2*r))^2);
X(r,GN,M) ::= 2*GN*M/(2*r)+2*GN*M/r*(1-2*GN*M/(4*r));
T(r,GN,M) ::= diff(f(r,GN,M),r)+X(r,GN,M);

但我不知道代码。

最佳答案

在 maxima 中使用表达式很方便。

定义两个表达式

(%i1) display2d: false $
(%i2) f: (2*GN*M^2)*(2*GN*M/r-(2*GN*M/(2*r))^2) $
(%i3) X: 2*GN*M/(2*r)+2*GN*M/r*(1-2*GN*M/(4*r)) $

定义一个对两个表达式进行操作的函数

(%i4) T(f, X) := diff(f, r) + X $

调用它。结果是一个表达式

(%i5) dfpX: T(f, X);
(%o5) (2*GN*M*(1-(GN*M)/(2*r)))/r+(GN*M)/r+2*GN*M^2
                                            *((2*GN^2*M^2)/r^3-(2*GN*M)/r^2)

您可以基于dfpX创建函数

(%i6) define(f(r, GN, M), dfpX);
(%o6) f(r,GN,M):=(2*GN*M*(1-(GN*M)/(2*r)))/r+(GN*M)/r
        +2*GN*M^2*((2*GN^2*M^2)/r^3-(2*GN*M)/r^2)

并调用它

(%i7) f(1, 2, 3);
(%o7) 2142

但你可以继续使用表达式

(%i8) subst([r=1, GN=2, M=3], dfpX);
(%o8) 2142

关于Maxima 中的函数(泛函)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43087567/

相关文章:

function - 自定义查找功能

hadoop - 从其他 Pig 脚本调用 Pig Latin 脚本

maxima - 在 Maxima 中堆叠矩阵的列

lisp - Maxima:从函数返回函数并在之后对其进行评估

maxima - 用变量填充数组(Maxima)

python - 我如何从字符串中删除标点符号,然后再将其添加回同一索引?

javascript - 使用参数从 PHP 调用带有参数(在特定文件中)的 Javascript 函数

function - 带整数参数的分段 numpy 函数

hadoop - Jython 在 Pig 的 UDF 上下文中的局限性

scala - Spark/Scala在多个列上使用相同的函数重复调用withColumn()