Maple:patmatch 无法识别 diff() 运算符中的模式

计算科学 符号计算
2021-12-05 19:11:26

我了解该功能applyrule用于patmatch识别模式并相应地应用转换。

假设,我想写一个规则,用于将方向的空间导数转换为动量空间,这样:zEi(x,y,z)

z(Ei(x,y,z))ikEi(x,y,z)

我试图定义如下规则:

In: applyrule(diff(f::function,z)=-I*k*f,diff(E1(x, y, z), z))
Out: diff(E1(x, y, z), z)

这是行不通的。原因是,patmatch 无法匹配上述模式:

In: patmatch(diff(E1(x, y, z), z), diff(f::function, z))
Out: false

相反,如果没有diff()运算符,

In: patmatch(E1(x, y, z), f::function)
Out: true

作为一种解决方法,我目前编写以下命令:

applyrule(diff(dE1(X), z) = -I*k*dE1(X),expression)

对于每个字段组件expression,它工作正常。

但我想知道一种更简单的方法来做到这一点,这样我就不必分别为每个组件编写规则。具体来说,无法patmatch识别内部模式diff()是令人不安的。解决此问题的任何解决方法或解决方案都会有所帮助。

0个回答
没有发现任何回复~