Mathematica中存在一个奇怪的错误,至少从版本5.1开始,并持续到版本7.
Module[{f, L}, L = f[];
Do[L = f[L, i], {i, 10^4}]] // Timing
Run Code Online (Sandbox Code Playgroud)
{0.015, Null}
Module[{weirdness, L}, L = weirdness[];
Do[L = weirdness[L, i], {i, 10^4}]] // Timing
Run Code Online (Sandbox Code Playgroud)
{2.266, Null}
是什么导致这个?这是一个哈希问题吗?
在版本8中修复了吗?
除了测试之外,有没有办法知道哪些符号名称导致减速?
我如何告诉mathematica巧妙地做这个替换?(或者我如何更聪明地告诉mathematica做我想做的事)
expr = b + c d + ec + 2 a;
expr /. a + b :> 1
Out = 2 a + b + c d + ec
Run Code Online (Sandbox Code Playgroud)
我希望答案是a + cd + ec + 1.在有人建议之前,我不想这样做a :> 1 - b,因为出于审美目的,只要无法进行简化,我就想拥有两者a并且b在我的等式中a+b = 1.
此外,我如何得到它取代的所有实例1-b,-b+1或者-1+b,b-1用a或-a分别,反之亦然?
以下是此部分的示例:
expr = b + c (1 - a) + (-1 + b)(a - …Run Code Online (Sandbox Code Playgroud)