Scientific Constants in Maple 8
Copyright 2002 Waterloo Maple Inc.
The new
ScientificConstants
package in Maple 8 provides the values, symbols, uncertainty and units of over 13,000 physical constants. Never again do you have to search the internet or grab a reference book to look up such values. This extensive package gives you access to the basic chemical properties of any element or isotope from the Periodic Table. Also available are 70 physical constants, such as Planck's constant, the Newtonian constant of gravitation, magnetic flux quantum, and speed of light in a vacuum. If a specific physical constant that you need is not included, simply add the constants you commonly use to Maple's database. This flexible package also allows you to modify properties or change the system associated with a constant.
The
ScientificConstants
package in conjunction with the comprehensive
Units
package introduced in Maple 7 together provide valuable tools for scientists and engineers.
Overview of the Scientific Constants Package
> |
with(ScientificConstants);
|
Which constants does the ScientificConstants package recognize?
Access the name, symbol, value, uncertainty, and units associated with the mass of the sun.
Retrieve the same information for the speed of light in a vacuum.
If you are not sure of the symbol associated with a constant, you can use the name of the constant.
> |
GetConstant(Planck_constant);
|
> |
GetConstant(Avogadro_constant);
|
The
ScientificConstants
package includes values of 70 common physical constants.
Let's list the names of all supported constants.
Which chemical elements does the ScientificConstants package recognize?
You can also retrieve the value, uncertainty and units of numerous properties associated with elements from the Periodic Table, including electron affinity, ionization energy, melting point, boiling point, density, etc.
We can easily retrieve the properties associated with the element gold.
Again, if the symbol name is uncertain, display this information using the name of the element.
If you are interested in specific properties associated with an element, simply state those properties in the expression.
> |
GetElement(terbium, symbol, boilingpoint, density, electronegativity);
|
List all the elements known in the
ScientificConstants
package.
You can also display the isotopes of an element. The following example lists the isotopes of the element californium.
> |
GetIsotopes(element=Cf);
|
If the
output=atomicnumbers
option is given, the isotopes are returned in the form [atomic_number, mass_number].
> |
GetIsotopes(electronaffinityisotopic, output=atomicnumbers);
|
Adding your own constants
You can extend the set of constants and elements or change the existing properties supported.
> |
AddConstant( hydrogen_mass, symbol=m[H], value=1.67353404*10^(-27), units=kg );
|
Solved Problems
Molecular Weight
How many molecules of acetone are in a 10 gram sample?
The chemical formula for acetone is
.
> |
acetoneMole:=3*Element( C, atomicweight )+6*Element( H, atomicweight )+Element( O, atomicweight );
|
The molecular weight is evaluated according to the default system of units SI. Therefore this measures in kilograms (kg).
Let's convert this from kilograms (kg) to atomic mass units (amu), using the
convert/units
function.
> |
convert( %, units, kg, amu );
|
By definition, the number of atomic mass units per molecule is equal to the number of grams per mole. Hence, divide 10 by the above result to determine the number of moles in the sample.
To calculate the number of molecules, multiply the above result by Avogadro's constant.
> |
%*evalf( Constant( N['A'] ) );
|
Geostationary Orbit
Find the radius of a geostationary orbit.
The formula for circular orbital velocity around a spherically symmetric body is
where G is the gravitational constant, M is the mass of the body and R is the radius of orbit..
> |
vCirc := sqrt( G*M/R );
|
For geostationary orbit, an orbital velocity of
meters per day is required. Convert this to meters per second.
> |
convert( 2*Pi*R, units, m/d, m/s );
|
Equate this to
eqn1:= vCirc = %;
Solve for
. To disregard non-real solutions, use the
RealDomain
package.
> |
use RealDomain in
rGeo := solve( eqn1, R );
end use;
|
Replace
with its value and
with the mass of the Earth and then evaluate
> |
evalf( eval( rGeo, {G=Constant( G ), M=Constant( M[Earth] ) } ) );
|
> |
convert( %, units, m, km );
|
The result is the radius in kilometers (km) of a geostationary orbit.
Periodicity of Ionization Energy
Plot the ionization energies in electronvolts of the elements of the periodic table ordered by increasing atomic number.
> |
ionEn := map( an -> [an, evalf( Element( an, ionizationenergy ) )],[ GetElements(ionizationenergy,output=atomicnumbers)]):
|
> |
plots[pointplot]( ionEn, style=line, labels=["atomic number","eV"] );
|
Decay Activity
Plot the decrease in the radioactive decay activity for a sample of iodine-131.
The expression for the activity is defined as A where
is the initial activity,
is the mean lifetime of the isotope, and
is the elapsed time
> |
A := A0*exp(-lambda*t);
|
The mean lifetime is related to the half-life by
.
> |
lambda := 0.693/evalf( Element( I[131], halflife ) );
|
Plot with
.
> |
A0:=1:
plot( A, t=0..6e6, labels=["time (s)","Activity"] );
|
Simple Chart of Nuclides
List all of the isotopes
> |
isos := map( i -> [i[2]-i[1],i[1]], {GetIsotopes( output=atomicnumbers )} ):
|
List only the stable isotopes
> |
isos_stable := map( i -> [i[2]-i[1],i[1]], {GetIsotopes( abundance, output=atomicnumbers )} ):
|
List the unstable isotopes
> |
isos_unstable := isos minus isos_stable:
|
> |
isos_st_p := plots[pointplot]( isos_stable, color=green, legend="stable" ):
|
> |
isos_unst_p := plots[pointplot]( isos_unstable, color=grey, legend="unstable" ):
|
> |
plots[display]( [isos_st_p, isos_unst_p], symbol=CROSS, labels=["neutron number", "atomic number"], labeldirections=[HORIZONTAL,VERTICAL] );
|
Binding Energy per Nucleon
Plot the average binding energy per nucleon as a function of mass number.
Selecting odd-even nuclei (i.e. A odd) that are stable
> |
bindEn := map( i -> [i[2], convert( evalf( Element( i, bindingenergy ) ), units, J, MeV )/i[2]], select( j -> type( j[2], odd ), [GetIsotopes( abundance, bindingenergy, output=atomicnumbers )]) ):
|
> |
plots[pointplot]( bindEn, symbol=CIRCLE, symbolsize=5, labels=["mass number", "MeV per nucleon"], labeldirections=[HORIZONTAL,VERTICAL], view=[0..220, 7.5..9] );
|