# How to calculate density of states (DOS) from 8 energy eigenvalues of a Quantum model calculated by exact diagonalization?

• A

## Summary:

I have energy spectrum of a single sample. I want to calculate and plot DOS. Since DOS is dN/dE number of states available in unit interval of energy . How I can calculate this unit interval? If I plot histogram and select bins of equal size, it doesn't give me unit interval.Data = np.array([-1.61032636, -1.23577245, -0.50587484, -0.28348457,
-0.18748945, 0.4537447, 1.2338455, 2.13535718])

## Main Question or Discussion Point

Data = np.array([-1.61032636, -1.23577245, -0.50587484, -0.28348457, -0.18748945, 0.4537447, 1.2338455, 2.13535718])
print("Data is: ", Data)
print(Data.shape)
n,bins,patches = plt.hist(Data,bins=4)
print("n: ",n)
print("bins: ",bins)
plt.savefig("./DOS")

## Answers and Replies

Related Atomic and Condensed Matter News on Phys.org
ZapperZ
Staff Emeritus
Summary: I have energy spectrum of a single sample. I want to calculate and plot DOS. Since DOS is dN/dE number of states available in unit interval of energy . How I can calculate this unit interval? If I plot histogram and select bins of equal size, it doesn't give me unit interval.Data = np.array([-1.61032636, -1.23577245, -0.50587484, -0.28348457,
-0.18748945, 0.4537447, 1.2338455, 2.13535718])

Data = np.array([-1.61032636, -1.23577245, -0.50587484, -0.28348457, -0.18748945, 0.4537447, 1.2338455, 2.13535718])
print("Data is: ", Data)
print(Data.shape)
n,bins,patches = plt.hist(Data,bins=4)
print("n: ",n)
print("bins: ",bins)
plt.savefig("./DOS")
The phrase "energy spectrum" is vague. WHAT energy spectrum? Is this out of an experiment? If so, what TYPE of experiment.

For example, I could have an "energy spectrum" corresponding to emission levels. But this depends on how these excitations were obtained. You can't always use the intensity height to indicate the density of such a state, because it depends on the cross-section of absorption to excite that state, and you also do not have a clear calibration of the photon flux that was used to excite that state.

This is why we do not often calculate the DOS from such a spectrum unless we know a few other factors, something that you did not provide.

Zz.

The phrase "energy spectrum" is vague. WHAT energy spectrum? Is this out of an experiment? If so, what TYPE of experiment.

For example, I could have an "energy spectrum" corresponding to emission levels. But this depends on how these excitations were obtained. You can't always use the intensity height to indicate the density of such a state, because it depends on the cross-section of absorption to excite that state, and you also do not have a clear calibration of the photon flux that was used to excite that state.

This is why we do not often calculate the DOS from such a spectrum unless we know a few other factors, something that you did not provide.

Zz.
I have calculated the energy spectrum of a Quantum model using exact denationalization method using system size L=3 so there are 2^L means (8) energy levels. Now I want to plot DOS for these 8 levels.

I assume you have also determined the degeneracy of the energy levels. With that in hand it you should be ready to determine the DOS by the standard prescription.

There is no degeneracy among energy levels. If I have values [-1.5,-1.2,-0.5,-0.2,-0.1,0.5,1.0]. How we can calculate DOS and then plot it with standard prescription? DOS =dN/dE, where dN= N(E2)-N(E1) and dE= E2-E1 i.e, difference in the number of states the difference in the energy b/w states. If I plot histogram y-axis gives be counts(how many values in each bin) and x-axis is the bins. If the first bin has width 1.5 then I can say there are 3 engery eigenvalues in this bin. Then how to calculate dN= N(E2)-N(E1)? Moreover DOS has the units of 1/E so how to get these units in histogram?

Last edited:
If there is no degeneracy then clearly ##dN = 1##, but if you need more detail then here it is.
Your density of states is give by:
$$D(E_{n}) = \frac{dN}{dE}$$
where ##N(E_{n})## is the total number of states up to energy ##E_{n}##:
$$N(E_{n}) = \sum_{k=0}^n g_{k}$$
As you stated there is no level degeneracy so ##g_{k} = 1##
For a discreet setting determine ##dN## and ##dE##
$$dN = N(E_{n+1}) - N(E_{n}) = (n+1) - (n) = 1$$
I leave it to you to workout the pointwise determination of ##dE## from the 1x8 energy list you provided above.

member659127

That's what it should look like. I only showed 4, but you have 8. Ideally you have to put dirac delta functions at your energy values. However this is not very convenient since you can't plot them. Here I used very narrow triangles. If I were to code I could use gaussians or lorentzians, etc... that's what typical quantum chemistry software does actually (but they have hundreds of energy values so overlapping functions give some sort of different shapes.). Don't get yourself confused by the equations... This is what it should look like in the end, I never use histograms for such a purpose, a gaussian centered on energy value with a pre-determined arbitrary width of your choice does the job.

I have tried to calculate DOS which seem to be incorrect. I used formula DOS=dN/dE, where dE is simply energy difference b/w consecutive eigenvalue, So I simply put 1/dE, So I got 7 values where as originally they were 8. where x-axis is simply energy level. I'm dealing with 1D spin chain. Most of the explanation about DOS is for particle moving in 1D box. I'm really confused about this. Can someone please tell me where I'm wrong and what should I correct.

with histogram I can calculate DOS. we select some interval and then count states in that interval. But I want to plot graph b/w E vs DOS not using histogram

In my last post I said you needed to determine the interval ##dE## that matches ##dN=1##. If you are sitting at an energy interval in between two levels it should be abundantly clear that ##dN=0##. So for ##dE<(E_{n+1} - E_{n-1})##, would you agree with the following statement?
$$dN = \begin{cases} 1 & \text{if the interval } dE \text{ includes } E_{n} \\ 0 & \text{otherwise} \end{cases}$$

This holds even as ##dE \rightarrow 0##. What function matches this? If you read erbahar's message he told you:
Ideally you have to put dirac delta functions at your energy values.
So the functional representation of ##D(E)## should look like this:
$$f(x) = \alpha\delta(x-x_0)$$
What do you think ##\alpha## and ##x_0## should be? Hint: one is related to the degeneracy (which I alluded to in my first post) and one is related to the positioning of the energy levels (as I alluded to in my second post.)