Differences between revisions 25 and 33 (spanning 8 versions) Back to page
Revision 25 as of 10:12AM, Apr 25, 2011
Size: 3222
Editor: Sam
Comment:
Revision 33 as of 6:20PM, May 06, 2011
Size: 3483
Editor: Sam
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
[[ Matlab and Python | First, here is some base-line discussion for Matlab and Python that you might find useful]]. Please read it, or at least run a quick scan through it. [[ Matlab and Python | First, here is some base-line discussion of Matlab and Python that you might find useful]]. Please read it, or at least run a quick scan through it.
Line 9: Line 9:
{{{#!highlight matlab '''Line numbers are not part of the program. Toggle them before copying this program!'''
{{{#!highlight matlab numbers=off
Line 34: Line 35:
%Comment these out for batch mode %Comment (some of) these out for a batch mode run
Line 49: Line 50:
Here, I am assuming that the file name is E2p3.m (note the absence of .m in the above command).
Line 54: Line 56:
Of course, for this command to run successfully, octave must be in the path (which is ''not'' the case by default for Windows installation! -- I had to add the Octave bin directory to path manually!), and E2p3.m must be the file name for the above code. Of course, for this command to run successfully, octave must be in the path (which is ''not'' the case by default for Windows installation! -- I had to add the Octave bin directory to path manually!).
Line 57: Line 59:
{{{#!highlight python
'''Line numbers are not part of the program. Toggle them before copying this program!'''
{{{#!highlight python numbers=off
Line 83: Line 87:
# Comment out one of these lines to get an automatic print-out.
#savefig ('E2p3_py.svg')
#savefig ('E2p3_py.eps')
#savefig ('E2p3_py.png')
# Comment out one of these lines to get a print-out in batch mode.
#savefig ('E2p3.svg')
#savefig ('E2p3.eps')
#savefig ('E2p3.png')

Here is some discussion of the programming part of Homework #4.

First, here is some base-line discussion of Matlab and Python that you might find useful. Please read it, or at least run a quick scan through it.

Now, for this homework, you basically need to calculate some functions and plot up the results. Example 2.3 of the textbook is a pretty good "template" for this task, and so I will discuss that example here.

Here is the Matlab code for Example 2.3. This code is somewhat different from the code in the text book, but does the same thing.

Line numbers are not part of the program. Toggle them before copying this program!

%E2.3: Fermi Function Calculation, f(E-EF,T)

%Initialization
clear
close

%Constant
%25.85 meV for 300 K is an equivalent way to remember it.
k=8.617e-5;

%Google for "Matlab linspace", to find out what linspace does!
dE=linspace(-0.2,0.2);
for ii=1:4;
    T=100*ii;
    kT=k*T;
    f(ii,:)=1./(1+exp(dE./kT));
end

%Plotting result
close
plot(dE,f); grid;
xlabel('E - E_F (eV)'); ylabel('f (E)');
text(.05,.22,'T=400K'); text(-.03,.12,'T=100K');

%Comment (some of) these out for a batch mode run
%print -djpeg E2p3.jpg
%print -depsc E2p3.eps
%print -dpng E2p3.png
%exit

The obtained images by Matlab and Octave are as follows (click to see full images).

Inlined image: E2.3.jpg Inlined image: E2.3.oct.jpg

To run the above code with Matlab in batch mode (after commenting out at least one of the print lines):

matlab -nosplash -nodesktop -minimize -r E2p3

Here, I am assuming that the file name is E2p3.m (note the absence of .m in the above command).

To run the above code with Octave in batch mode (after commenting out at least one of the print lines):

octave E2p3.m

Of course, for this command to run successfully, octave must be in the path (which is not the case by default for Windows installation! -- I had to add the Octave bin directory to path manually!).

Here is the Python code for Example 2.3.

Line numbers are not part of the program. Toggle them before copying this program!

# E2.3: Fermi Function Calculation, f(E-EF,T)

# pylab is part of matplotlib, a matlab like environment in python.
#    http://matplotlib.sourceforge.net/index.html
# Lots of names are imported by this (numpy, scipy, matplotlib, I think).
from pylab import *

# 25.85 meV for 300 K is an equivalent way to remember it.
k = 8.617e-5

# linspace defaults to 50 points -- I want 100 (like in matlab).
dE = linspace (-0.2, 0.2, 100)
Ts = [100, 200, 300, 400]

for T in Ts:
    plot (dE, 1./(1 + exp (dE / (k * T))))
grid ()

# matplotlib comes with its own LaTeX parser -- cool!
xlabel (r'E - E$_\mathrm{F}$ (eV)')
ylabel ('f (E)')
text (.05,.22,'T=400K')
text (-.04,.12,'T=100K')

# Sort of equivalent to "print" of matlab.  "print" is a python keyword.
# Comment out one of these lines to get a print-out in batch mode.
#savefig ('E2p3.svg')
#savefig ('E2p3.eps')
#savefig ('E2p3.png')

# After showing, it is possible to save the figure (again).
# This line can be commented out if one of the above "savefig" lines is turned on.
show ()

You should get an image like this (click to see the full image), when you save the image from the interactive window that pops up on "show ()".

Inlined image: E2.3.png