gpt4 book ai didi

wolfram-mathematica - 如何有效地计算Mathematica中的递归关系?

转载 作者:行者123 更新时间:2023-12-04 08:19:45 26 4
gpt4 key购买 nike

我有一个递归来解决。

f(m,n)=Sum[f[m - 1, n - 1 - i] + f[m - 3, n - 5 - i], {i, 2, n - 2*m + 2}] + f[m - 1, n - 3] + f[m - 3, n - 7]
f(0,n)=1, f(1,n)=n

但是,以下mma代码效率很低
f[m_, n_] := Module[{},
If[m < 0, Return[0];];
If[m == 0, Return[1];];
If[m == 1, Return[n];];
Return[Sum[f[m - 1, n - 1 - i] + f[m - 3, n - 5 - i], {i, 2, n - 2*m + 2}] + f[m - 1, n - 3] + f[m - 3, n - 7]];]

计算f [40,20]花费了难以忍受的时间。有人可以建议一种有效的方法吗?非常感谢!

最佳答案

标准技巧是保存中间值。以下花费0.000025秒

f[m_, n_] := 0 /; m < 0;
f[0, n_] := 1;
f[1, n_] := n;
f[m_, n_] := (f[m, n] =
Sum[f[m - 1, n - 1 - i] + f[m - 3, n - 5 - i], {i, 2,
n - 2*m + 2}] + f[m - 1, n - 3] + f[m - 3, n - 7]);
AbsoluteTiming[f[40, 20]]

关于wolfram-mathematica - 如何有效地计算Mathematica中的递归关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4664855/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com