2011-02-05 7 views
1

Tout en effectuant une optimisation à l'aide Réduire au minimum [] dans Mathematica, je me fais ce qui semble être un peu NaN:Dans Mathematica, comment afficher la sortie complète des messages?

NMinimize :: nNum: La valeur de la fonction indéterminés est pas un nombre à {q} = {0.}. >> NMinimize :: nnum: La fonction valeur indéterminée n'est pas un nombre à {q} = {0.}. >> NMinimize :: nnum: La valeur de fonction Indéterminée n'est pas un nombre à {q} = {0.}. >> Général :: stop: Sortie supplémentaire de NMinimize :: nnum sera supprimé pendant ce calcul. >>

Les NaN sont OK, car ils ne semblent pas affecter le résultat de l'optimisation. Mais parce que d'autres messages sont supprimés, je ne suis pas sûr si je reçois des messages concernant (par exemple) le nombre maximum d'itérations dépassées sans atteindre la précision demandée.

Alors, existe-t-il un moyen de voir la liste complète des messages? Est-ce qu'une telle option, si elle existe, doit être activée avant l'évaluation, ou y a-t-il un tampon de message complet que je peux consulter par la suite? L'optimisation prend un très longtemps, donc je voudrais éviter d'avoir à le recalculer.

J'ai seulement trouvé les fonctions Off et On, qui ne semblaient pas faire ce que je voulais.

+1

Prenez garde de ne pas participer à la résolution des erreurs en cascade lors du débogage. Comme l'a dit Timo ['here'] (http://stackoverflow.com/questions/4176612/setting-up-diagnostic-error-messages-in-large-mathematica-projects) ** Le message d'erreur de Mathematica est opaque, archaïque et légion. ** –

+1

Peut-être pertinent - http://stackoverflow.com/questions/4264734/voir-des-messages-transmis-dans-mathematica. En remplaçant Message, vous pouvez obtenir tous les messages, même ceux qui sont supprimés pour commencer. Pour Maximiser cela peut produire des messages avec Hessian à chaque étape, donc peut être assez grand –

+0

Merci Yaroslav, qui a été utile aussi. –

Répondre

3

Deux commentaires. Tout d'abord, Off[General::stop] devrait faire exactement ce que vous voulez, c'est à dire, désactiver la suppression des messages. Deuxièmement, seuls les messages du type donné ont été supprimés, par exemple NMinimize::nnum dans votre cas. Les autres messages ne le sont pas. Par exemple, si $IterationLimit est dépassé, vous recevrez ce message.

EDIT: Exemple:

On[General::stop] 
Do[ 
NIntegrate[Sin[a*x], {x, 0, 10}]; 
If[i == 20, 1/0], 
{i, 1, 100}] 
3

Essayez ceci:

Off[General::stop] 

--Mark

Questions connexes