Je suis intéressé par la surveillance de la progression d'un calcul à l'aide de dynamique. Cela peut être fait de manière interactive comme suit: Cependant, si la table est dans une fonction telle que p> Comment puis-je garder une piste de la valeur de iter, lorsque j'exécute la fonction via p> ? p> p>
3 Réponses :
Pas sûr que ce soit un bon conseil, mais:
Dynamic[monitor] f[500000];
Ce qui suit fonctionne également, f [m_]: = module [{iter}, getretre = iter; Tableau [{iTer, iter ^ 2}, {iter, 1, m}]]. Lequel est préférable?
@asim entre ces deux, c'est largement une question de style. Je préfère celui avec getretre [] code>, mais il s'agit simplement d'une préférence personnelle. Mais voyez mon édition pour ce que je pense est une solution généralement meilleure.
Merci! Qui semble sophistiqué.
@ASIM Cela vous permet de spécifier le nom du symbole de surveillance, en tant que deuxième paramètre de l'appel de votre fonction, plus garantit l'absence d'effets secondaires mondiaux, comme expliqué dans la réponse.
Si vous souhaitez utiliser progressindicator code>, vous pouvez faire quelque chose comme ceci:
p> p>
Pour surveiller une expression, vous pouvez essayer d'utiliser code> moniteur code>: Vous pouvez également utiliser progressindicator code> avec la plage sur
i code>: p>
Table Code> Déjà scopes
iTER code>, donc dans ce cas, je ne vois pas la nécessité de l'inclure dans le premier argument du module code>. Cela pourrait ne pas s'appliquer dans des fonctions plus compliquées, auquel cas vous pourriez envisager d'utiliser
Block code> au lieu du module
code>.
@Brett C'est un peu plus subtile, je pense que je ne peux pas trouver un exemple d'utilisation constructive de celui-ci dans ce cas donné.
Tableau CODE> SCOPES DYNAMIQUEMENT, mais COPE SUPPES PAS
ITER CODE> - Il scope un module code> -1 / code> -Génerated symbole comme
iter $ 123 code> ( peut être vu, par exemple avec
trace code>). Dans le cas du bloc code> code>, il existe des utilisations constructives pour les combinaisons telles que
Module [{SYM}, bloc [{SYM}, ...]]] code>, par exemple comme dans ce Réponse: Stackoverflow.com/Questions/7394113/...
@Leonid Oui, je sais que dans le code ci-dessus, au-dessus du
iTer code> dans la table code> est vraiment
iter $ 123 code>, ce qui le rend délicat de se référer à elle de l'extérieur du module
code>. Mon point est que, dans ce cas particulier, y compris
iTer code> en tant que module code> la variable code> est inutile et fait en fait les choses plus difficiles qu'elles doivent être.
@Brett je suis d'accord. Mais je peux penser à un exemple (un peu artificiel) où
module code> peut servir à protéger l'intérieur
iTer code> à partir de collisions de noms possibles avec le scopage dynamique: définir
FF [] : = iter ^ 3 code>, puis contraste ceci:
bloquer [{iter = 2}, module [{iter}, table [{iter, iter ^ 2, ff []}, {iter, 1, {iter, 1 , 5}]]]] code>, avec ceci:
bloquer [{iter = 2}, table [{iter, iter ^ 2, ff []}, {iter, 1, 5}]] code>. Pas que je rencontre cela dans mon travail quotidien, cependant.