level 2
慌衍
楼主

代码是为了定义微分算符d /: d[x_]*w_ := D[w, x]<br>
(*可以实现手写运算时的微分算子∂x*w=D[w, x]*)
运算过程中采用Defer或者Inactive函数来推迟运算,直至矩阵计算后得到最终结果,例如:
Defer[d[z]/r]*y[r,z]此时希望重载运算符为Defer[x_]*y_=Defer[x*y],符合平常推导的思路:∂x*(1/r)*y=∂x*(y/r)
具体代码如下:
d /: d[x_]*(w_) := D[w, x];
A = {{d[r], 0}, {0,
Defer[(1/r)*d[\[Theta]]]}} . {{ur[r, \[Theta], z]}, {uz[
r, \[Theta], z]}} // InputForm
结果为:
{{Derivative[1, 0, 0][ur][r, \[Theta], z]}, {Defer[(1/r)*d[\[Theta]]]*uz[r, \[Theta], z]}}
我希望得到Defer[x_]*y_=Defer[x*y]即Defer[(1/r)*d[\[Theta]]]*uz[r, \[Theta], z]->Defer[(1/r)*d[\[Theta]]*uz[r, \[Theta], z]]
