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à scopesiTER 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'utiliserBlock code> au lieu du modulecode>.@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 PASITER CODE> - Il scope un module code> -1 / code> -Génerated symbole commeiter $ 123 code> ( peut être vu, par exemple avectrace code>). Dans le cas du bloc code> code>, il existe des utilisations constructives pour les combinaisons telles queModule [{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 vraimentiter $ 123 code>, ce qui le rend délicat de se référer à elle de l'extérieur du modulecode>. Mon point est que, dans ce cas particulier, y comprisiTer 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érieuriTer code> à partir de collisions de noms possibles avec le scopage dynamique: définirFF [] : = 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.