gpt4 book ai didi

wolfram-mathematica - 数学 : Grokking 'maximal number of evaluations' argument for `NestWhileList`

转载 作者:行者123 更新时间:2023-12-04 12:37:38 24 4
gpt4 key购买 nike

我正在使用 NestWhileList在它经常达到“最大评估次数”的情况下。得到一些古玩结果后,我仔细看看如何NestWhileList对指定最大数量的结果使用react:

Table[{nmax,
Length@NestWhileList[
(* f: nesting function *) Identity,
(* initial state *) 1,
(* test function *) False &,
(* m: of arguments for test *) 1,
(* nmax: max # applications of f *) nmax,
(* n: extra evaluations *) 1]}, {nmax, 0, 2}];
ToString[TableForm[%,
TableHeadings -> {None, {"nmax", "output length"}}]]

令人惊讶的部分是 nmax=1单挑:这里 f应用 2 次,而对于所有其他值,仅应用一次:
 nmax   output length
0 2
1 3
2 2

“额外评估”似乎是问题的一部分。不考虑该选项会给出更合理的结果:
Table[{nmax,
Length@NestWhileList[
(* f: nesting function *) Identity,
(* initial state *) 1,
(* test function *) False&,
(* m: of arguments for test *) 1,
(* max: max # applications of f *) nmax]},{nmax,0,2}];
ToString[TableForm[%,TableHeadings->{None, {"nmax","output length"}}]]

Out[123]=
nmax output length
0 1
1 1
2 1

我的问题:这是否有意义,还是只是一个错误?

最佳答案

这没有意义,我很确定这只是一个错误。 NestWhile同样受到折磨:

In[53]:= NestWhileList[# + 1 &, 1, False &, 1, 1, 1]

Out[53]= {1, 2, 3}

In[54]:= NestWhile[# + 1 &, 1, False &, 1, 1, 1]

Out[54]= 3

这是 NestWhileList 的变通方法功能:
myNestWhileList[f_, expr_, test_, m_, max_, n_] :=
Module[{nwl},
nwl = NestWhileList[f, expr, test, m, max];
Join[nwl, Rest[NestList[f, Last[nwl], n]]]
]

In[75]:= myNestWhileList[# + 1 &, 1, False &, 1, 1, 1]

Out[75]= {1, 2}

显然,它不是 NestWhileList 的完全通用替代品。 ,但如果有必要,它应该很容易概括。

我已经提交了错误报告。

关于wolfram-mathematica - 数学 : Grokking 'maximal number of evaluations' argument for `NestWhileList` ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4120786/

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