With the information found in the last section, we can redefine the density matrix. The density matrix previously discussed was exact for the kth atom in the system. In order to include the effects of the last section, we must take an average over all the atoms in the system:
where . The averaging brackets shall be dropped to simplify the notation hereafter; however, it cannot be overstressed that this density matrix describes the atoms interacting with the field and each other on average. These equations form the basis of the algorithm that the BlochApp program will utilize.
It is helpful to analyze these equations in terms of real and imaginary parts. An arbitrary element of the density matrix, , is complex, . The Pascal code for the algorithm for BlochApp solves equations in terms of and . The separation of real and imaginary components multiplies the number of equations that BlochApp must solve by two. Some of the previously observed results cut this number down to four. First, because the diagonal elements must be real; therefore, we may discard the imaginary part of . The upper off--diagonal is the complex conjugate of the lower, i.e., . Finally, we must solve for , , , and :
Expanding factors and using the definitions and