Wolfram mathematica 在Mathematica中重新定义加号和时间

Wolfram mathematica 在Mathematica中重新定义加号和时间,wolfram-mathematica,Wolfram Mathematica,我想在Mathematica中使用稀疏数组 比如:a=SparseArray[{},{m,n},“*”] 使用默认值*而不是零。它是 可以以这种方式延长加号和时间 即: 加上[1,]= 倍[1,]= 但是 加上[0,*]=0 谢谢, Lavoslav既然你在这里征求关于如何修改内在函数的建议,我的结论是,你还没有足够的经验使用Mathematica来安全地进行这样的修改 是的,可以修改Mathematica内在函数的定义和活动,如Plus和Times。但这几乎肯定是一个非常糟糕的主意。主要的威胁

我想在Mathematica中使用稀疏数组 比如:a=SparseArray[{},{m,n},“*”] 使用默认值*而不是零。它是 可以以这种方式延长加号和时间 即:

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

谢谢,
Lavoslav

既然你在这里征求关于如何修改内在函数的建议,我的结论是,你还没有足够的经验使用Mathematica来安全地进行这样的修改

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

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

mysparsearayplus[term1\u SparseArray,term2]:=

我还认为,您应该避免在
SparseArray
中的默认值中使用字符串,例如
“*”
,而应使用
符号

如果您必须修改
Plus
Times
,请通过定义
UpValues
来处理它;Mathematica文档提供了一个开始阅读的好地方

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

是的,我是非常初学者:))谢谢你的建议。L