同志们,f[x_]:=f[x]=xxxxx一般有什么用处?
mathematica吧
全部回复
仅看楼主
level 9
f[x_]:=f[x]=xxxxx
2022年08月24日 12点08分 1
吧务
level 10
这一般叫memorization。
现定义f[x_]:=f[x]=Sin[x],并计算f[Pi]
据f的定义,第一步计算为f[Pi]=Sin[Pi]。
第二步,由于Set具有HoldFirst,跳过f[Pi]的计算,现在计算Sin[Pi]
据Sin定义,第三步计算为0。
对于0,无定义可执行,现在回到上一层(第二步),计算f[Pi]=0。对f[Pi]赋值并返回0。
对于返回的0,无定义可执行,回到最顶层,结束计算,最终返回0。
由于返回了0,所以这次计算的效果和f[x_]:=Sin[x]并无结果上的区别。
但下次执行f[Pi]时,会有两条定义适用,一是最早的f[x_]:>f[x]=Sin[x],二是上次计算过程中定义的f[Pi]=0。按语言设计,一般性较强的规则排序靠后,所以这里适用较为特殊的f[Pi]=0,仅一步就计算出0,而无需调用Sin。
2022年08月24日 15点08分 2
level 6
好像重新计算的时候会调用之前的结果,所以会更快
2022年11月04日 14点11分 4
吧务
level 15
参看自带帮助的 函数和编程->变换规则和定义->保留已有值的函数 部分。
2022年11月05日 06点11分 5
[真棒]我看看去
2022年11月05日 15点11分
1