我想在Mathematica中使用稀疏数组 喜欢:a = SparseArray [{},{m,n},“*”] 使用默认值*而不是零。是吗 可以用这种方式扩展Plus和Times 的是:
加[1, = 倍[1, = 但 加[0,*] = 0
谢谢, Lavoslav
答案 0 :(得分:3)
由于您在这里询问有关如何修改内在函数的建议,因此我得出结论,您还不是Mathematica的足够经验丰富的用户,您可以安全地进行此类修改。
是的,可以修改Mathematica内在函数的定义和活动,例如Plus
和Times
。但这几乎肯定是一个非常糟糕的主意。主要的威胁是,这尤其适用于加法和乘法等基本操作,很难将这些修改的影响仅控制在您想要并理解其影响的情况下。
更好的想法是定义您自己的函数版本,以便按照您的意愿操作。这样的操作可能会这样开始;
mySparseArrayPlus[term1_SparseArray,term2_] :=
我认为您应该避免使用"*"
之类的字符串作为SparseArray
中的默认值,而是使用Symbol
。
如果您必须修改Plus
并Times
通过UpValues
的定义来处理它;来自Mathematica文档的this page提供了一个开始阅读的好地方。
最后,如果您必须干涉,请阅读有关Unprotect
的所有内容。祝你好运,当你打破加法和乘法时不要回来寻求帮助。