如何在Maxima中替换符号变量

时间:2018-08-02 12:41:26

标签: maxima

我有一长串包含类似

的内容
201 Created

我想执行listWidget.itemPressed['QListWidgetItem*'].connect(lambda item: item.setCheckState(QtCore.Qt.Checked if item.checkState()==QtCore.Qt.Unchecked else QtCore.Qt.Unchecked))

这样的替换

基本上将模式a:[1, a, -b, -a*b, j, -j, j^2, -j^3, a*j, a*j^2, -a*j,- a*j^2, a*b*j, a*j^4, -a*b*j^7]; 列表中的所有匹配项都替换为j^x -> j^(3 mod x)

subst和ratsubst等似乎在寻找一种字面上不是符号的模式。

在Maxima中有没有办法做到这一点?

谢谢

1 个答案:

答案 0 :(得分:2)

我认为您可以为此使用模式匹配。 (模式匹配是指匹配表达式,而不是字符串。)tellsimptellsimpafter定义了自动应用的规则; defruledefmatch定义了明确应用的规则。另请参见matchdeclare

通过defrule的解决方案可能看起来像这样;我还没有尝试过。

matchdeclare (nn, lambda ([e], integerp(e) and e >= 3));
defrule (r1, j^nn, j^(mod(3, nn)));
apply1 (mylist, r1);

其中mylist是上面的列表。 (我认为将列表分配给a是有问题的,因为a作为产品中的术语出现...。)