2.4.12 修改内部函数在 Mathematica 中可以对任何表达式定义变换规则.不仅可以定义添加到 Mathematica 中去的函数,而且还可以对 Mathematica 的内部函数进行变换,于是就可以增强 或修改内部函数的功能.这一功能是强大的,同时也具有潜在的危险. Mathematica 永远遵循给出的规则,当规则不正确时,就会得出错误的结果. 为了避免在修改内部函数过程中的错误, Mathematica 限制对内部函数重新定义. 当要定义内部函数时,首先要去掉这种限制. 完成定义以后要恢复这一限制以免 以后犯错误. 函数的保护 内部函数通常被保护,不能 重新定义它们
Out[1]= |  |
去掉 Log 的保护
Out[2]= |  |
现在可以自行定义 Log 函数,即使这个定义不正确,Mathematica 也允许你这样定义
Out[3]= |  |
不论这个定义正确与否,Mathematica 将使用这个它清
Out[4]= |  |
除 Log 的不正确定义 恢复对 Log 的保护
Out[6]= |  |
用户定义的函数高于内部函数,Mathematica 总是先使用用户定义的函数. Mathematica 的内部规则是希望能进行宽广的各种运算. 在有些不愿意用内部规则 的情况下,可以用自己定义的规则来超越内部的规则. 简化 Exp[Log[expr]] 时有一个内部规则
Out[7]= |  |
可以自行定义 Exp[Log[expr]] 来代替内部规则 现在使用了自己的定义,而不是内部规则
Out[9]= |  |
|