zHW: Stoichiometric Matrix
Using the list of species from HW_03, verify that the columns of the stoichiometric matrix are in the null space of the atomic matrix.
Contents
Chemical Species
The first step is to provide a list of all chemical species partcipating in the reaction system. Use molweight to verify correct entry of this list of species.
species = { ...
'CH3OH', ... % Methanol
'O2', ... % Oxygen
'CH2O', ... % Formaldehyde
'CHOOH', ... % Formic Acid
'CO', ... % Carbon Monoxide
'CO2', ... % Carbon Dioxide
'H2O'}; % Water
molweight(species);
Species Mol. Wt. ------- -------- CH3OH 32.04 O2 32.00 CH2O 30.03 CHOOH 46.03 CO 28.01 CO2 44.01 H2O 18.02
Atomic Matrix
Element a(i,j) of the atomic matrix A is the number of atoms of element i that appear in a molecule of species j.
atomic(species);
CH3OH O2 CH2O CHOOH CO CO2 H2O
C: 1 0 1 1 1 1 0
H: 4 0 2 2 0 0 2
O: 1 2 1 2 1 2 1
Stoichiometric Matrix
Element v(j,k) of the stoichiometric matrix V is the number of molecules of species j that participate in reaction k. The stoichiometric coefficient is negative if species j is a reactant, or positive if species j is a product of the reaction.
V = stoich(species);
disp('V = ');
disp(V);
V =
-1 0 0 0
0 -1 0 0
0 0 -1 0
0 0 0 -1
3 -2 2 1
-2 2 -1 0
2 0 1 1
Product of the Atomic and Stoichiometric Matrices
In principle, each matrix element b(i,k) of the product of the atomic and stoichiometric matrices, B = A*V, would the net number of atoms of atomic element j produced (if positive) or consumed (if negative) by reaction k. However, atoms are neither produced or consumed in a balanced reaction. Therefore the product A*V ought to be zero. Stated in terms of linear algebra, the columns of V are in the null space of A.
A = atomic(species); V = stoich(species); disp('Product of Atomic & Stoichiometric Matrices = '); disp(' '); disp(A*V)
Product of Atomic & Stoichiometric Matrices =
0 0 0 0
0 0 0 0
0 0 0 0