# Giving value to a constant so that Mathematica simplifies the answer without having to do the whole operation again

I am doing some nasty integrals trying to fill in a matrix, and to save computation time, I set my hbar to be a constant of undefined value, so the answer it spits out consists of a real number plus some number times the square of hbar, which means I should be able to ignore it and chop it off since hbar squared is very small. Essentially I want to tell mathematica to apply to the answer the value of hbar. To clarify, I don't want to define hbar and have it do the integration again because that would make the computation time too long. I want the value of hbar to be defined only on the answer I get from the integration, not during the integration.

Thank you!

-
I took at shot at answering this. If you mean something other than how I interpreted it please clarify and I'll try again. –  Mr.Wizard Feb 20 '13 at 1:21
why not use dimensionless units? this is usually the way to go with numerical calculations. –  acl Feb 20 '13 at 2:22
@acl We were told not to use all physical constants equal to one. I tried it too and the integration takes a long time surprisingly. –  user17338 Feb 20 '13 at 5:02

I'm not sure what you are describing is well advised but it sounds like you just want the function of $PrePrint: $PrePrint = # /. {HoldPattern[\[HBar]] -> 0} &;


Now:

17 a + b \[HBar]^2

17 a


If you don't want to apply this every time you can just do the replacement manually:

17 a + b \[HBar]^2 /. HoldPattern[\[HBar]] -> 0

17 a

-
I just ran across some of your code on Project Euler that greatly intrigues me. Love to have you explain it some time. –  kale Feb 20 '13 at 4:04
Is HoldPattern really necessary in the second example? –  Ajasja Feb 20 '13 at 10:15
@Ajasja I was waiting for someone to ask that. Normally I would not use it, but it occurred to me that it might be useful to a beginner. You see if Hbar was also assigned a value then the LHS of the pattern would evaluate to this value, and you might replace more than just Hbar in an expression. For example, if you do a^(1/3) + h^2 /. h -> 0 you get a^(1/3) as expected, but if you first set h = 1/3 you get 10/9 which might be quite unexpected to a new user. Of course this situation would be avoided by a more experienced user but I thought it best to include this safeguard. –  Mr.Wizard Feb 20 '13 at 21:02
Aha, good point. –  Ajasja Feb 21 '13 at 8:27