在Mathematica中重新定义Plus和Times

时间:2012-10-31 13:50:41

标签: wolfram-mathematica

我想在Mathematica中使用稀疏数组 喜欢:a = SparseArray [{},{m,n},“*”] 使用默认值*而不是零。是吗 可以用这种方式扩展Plus和Times 的是:

加[1, = 倍[1, = 但 加[0,*] = 0

谢谢, Lavoslav

1 个答案:

答案 0 :(得分:3)

由于您在这里询问有关如何修改内在函数的建议,因此我得出结论,您还不是Mathematica的足够经验丰富的用户,您可以安全地进行此类修改。

是的,可以修改Mathematica内在函数的定义和活动,例如PlusTimes。但这几乎肯定是一个非常糟糕的主意。主要的威胁是,这尤其适用于加法和乘法等基本操作,很难将这些修改的影响仅控制在您想要并理解其影响的情况下。

更好的想法是定义您自己的函数版本,以便按照您的意愿操作。这样的操作可能会这样开始;

mySparseArrayPlus[term1_SparseArray,term2_] :=

我认为您应该避免使用"*"之类的字符串作为SparseArray中的默认值,而是使用Symbol

如果您必须修改PlusTimes通过UpValues的定义来处理它;来自Mathematica文档的this page提供了一个开始阅读的好地方。

最后,如果您必须干涉,请阅读有关Unprotect的所有内容。祝你好运,当你打破加法和乘法时不要回来寻求帮助。