Maxima中function(functional)的功能
Function of function(functional) in 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
将 T
定义为函数,而不是宏,以便它计算其参数。
(%i) T(r,GN,M) := diff(f(r,GN,M),r)+X(r,GN,M)$
现在在 T
上定义一个函数 t
,它引用 '
它的参数(以便 T
知道要区分哪个变量)然后计算结果 %%
与 ev
.
(%i) t(r,GN,M) := (T('r,'GN,'M),ev(%%))$
(%i) t(1,2,3);
(%o) 2142
我想在 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
将 T
定义为函数,而不是宏,以便它计算其参数。
(%i) T(r,GN,M) := diff(f(r,GN,M),r)+X(r,GN,M)$
现在在 T
上定义一个函数 t
,它引用 '
它的参数(以便 T
知道要区分哪个变量)然后计算结果 %%
与 ev
.
(%i) t(r,GN,M) := (T('r,'GN,'M),ev(%%))$
(%i) t(1,2,3);
(%o) 2142