Re: Rule-based programming: declare variables to be a number
- To: mathgroup at smc.vnet.net
- Subject: [mg80792] Re: Rule-based programming: declare variables to be a number
- From: dh <dh at metrohm.ch>
- Date: Sat, 1 Sep 2007 00:39:28 -0400 (EDT)
- References: <fb83lf$82d$1@smc.twtelecom.net>
Hi Hendrick, simpliy replace g by 1. before calling NumberQ. Further, I think it is a bad thing to change definitions of built in function. Better create your own. Then: myNumberQ[expr_] := NumberQ[expr /. g -> 1.] By the way, I noted ,that NumberQ returns True for Exp[1.] but False for Exp[1] hope this helps, Daniel Hendrik van Hees wrote: > I still work with Mathematica 4.0. I hope, somebody can answer my > question despite this. > > I have written a simple rule-based program to evaluate traces of > SU(2)-Lie algebra (Pauli matrices) to help me to obtain the Lagrangian > of a chiral model, but that's not so important for my question. > > My problem is the following: To get the usual rules with algebraic > expressions containing numbers and Lie-algebra variables, one needs to > define what happens when a Lie-algebra variable is multiplied by a > number. This works fine as long as I use really constant numbers like > 1, 2, 1/2, etc. > > However, of course, one needs this feature also for variable numbers, > say a coupling constant g. So I wrote Unprotect[NumberQ] and then said > > NumberQ[g]:=True, > > but then NumberQ[g^2] evaluates to False. So I have written a whole > bunch of rules to make powers of g also numbers. It works already quite > well, but is there a possibility to just declare a variable (like g) to > be a number, and then make Mathematica know, that expressions like g^2, > Sqrt[g], 1+g, etc. are also numbers? >