Clear
Before we can really begin working with Mathematica we also need to discuss the function Clear
, which can be a life-saver.
It just removes any definitions we’ve given to a symbol, which can be a bigger deal than one might think. Consider the following case:
aVariableIUsedBefore=1000;
aVariableIUsedBefore[x_]:=x*10;
Notice we get an error because the way Mathematica reads this, we’re trying to assign a function to the number 1000.
Here, though, all we need to do is use Clear
and we’re good to go.
Clear[aVariableIUsedBefore]
Sometimes we’ve made a lot of definitions and we want to Clear
them all, just to prevent hard to find errors from cropping up. In this case we can do the following:
Clear["Global`*"]
What this does is removes all the definitions for any symbol that looks like Global`symbolName
which is usually every symbol we’ve defined.
Sometimes we want to protect some symbols, like fundamental constants, from being erased. In this case we just need to make a symbol that doesn’t look like Global`symbolName
. A useful way to do this is to put the type of thing it is before it:
Constant`PlanckConstant = 6.626*10-34 (*J×s*);
This sort of thing is discussed more at length in the Contexts section, but first let’s just see that this does what we want it to. First let’s define a bunch of things:
a = 100;
b = 2.50;
c[x_] = RandomReal[]*x;
x[x_] := x[x];
a
b
c[10]
x[10]
(*Out:*)
100
(*Out:*)
2.5`
(*Out:*)
9.548010769916973`
(*Out:*)
10[10]
And now we’ll clear them:
Clear["Global`*"]
a
b
c[10]
x[10]
(*Out:*)
a
(*Out:*)
b
(*Out:*)
c[10]
(*Out:*)
x[10]
But our constant is fine:
Constant`PlanckConstant
(*Out:*)
6.6260000000000015`*^-34
And for those who don’t want to type out a long name every time they use this constant in a problem, here’s a trick: use some variable just for the problem to which you assign the value of the constant. e.g:
Constant`SpeedOfLight=3*108(*m/s*);
h = Constant`PlanckConstant;
c = Constant`SpeedOfLight;
λ = 1*10^-3 (*m*);
h*c/λ (*J*)
(*Out:*)
1.9878000000000004`*^-22
Then just clear all of this before starting the next problem:
Clear["Global`*"]
And now none of that can leak into the next problem:
h
c
λ
(*Out:*)
h
(*Out:*)
c
(*Out:*)
λ