Si toutes vos variables vont être (par exemple) Real
, puis vous pouvez intercept the creation of new symbols et ajouter cette hypothèse à $Assumptions
. Par exemple.
$Assumptions = True;
$NewSymbol = If[#2 === "Global`",
Print["Created new Global` variable named ", #1, ". It is assumed to be real."];
$Assumptions = $Assumptions && Element[Symbol[#2 <> #1], Reals],
Null (* other, probably a system symbol is created *)] &;
Ensuite, si vous créez un nouveau symbole que vous ne voulez pas être vrai, alors vous pourriez suivre avec quelque chose comme $Assumptions = Most[$Assumptions]
.
Note: Je ne prétends pas nécessairement que cette approche est une bonne idée ... Il est probablement préférable de définir simplement la $Assumptions
pour les variables que vous allez utiliser. Cela peut être fait en utilisant Map
programme, Table
, etc.
Juste pour comprendre un peu mieux. Supposons que vous limitiez [a, {0,1,2,3}] avec une certaine fonction Restreindre []. Quel est votre comportement attendu si vous faites plus tard a = 5? –
Que diriez-vous de '$ Assumptions = Element [#, Reals] &/@ {a, b, c, d}' –
@Yaroslav C'est en fait équivalent à '$ Assumptions = Element [{a, b, c, d}, Reals] ', mais pour des restrictions plus générales, vous avez raison. Un simple 'Map' devrait fonctionner. – Simon