J'utilise NestWhileList dans une situation où il atteint souvent le' nombre maximum d'évaluations '. Après avoir obtenu des résultats de bibelots, j'ai regardé de plus près comment NestWhileList
réagit à avoir un nombre maximal de résultats précis:Mathematica: argument de 'nombre maximal d'évaluations' de Grokking pour 'NestWhileList`
Table[{nmax,
[email protected][
(* 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"}}]]
La partie surprenante est que nmax=1
se singularise: Ici f
est appliqué 2 fois, alors que pour toutes les autres valeurs, il est appliqué qu'une fois:
nmax output length
0 2
1 3
2 2
les « évaluations supplémentaires » semblent faire partie du problème. En quittant cette option donne à des résultats beaucoup plus raisonnables:
Table[{nmax,
[email protected][
(* 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
Ma question: cela fait en quelque sorte le sens, ou est-ce juste un bug?
Merci Michael - pensé que c'était à peu près la façon la plus simple de le faire :) – Janus
Pas de problème, et merci de le signaler. Vous pouvez toujours envoyer des bugs à [email protected], si vous préférez. –