Differences between revisions 8 and 16 (spanning 8 versions) Back to page
Revision 8 as of 3:55AM, Apr 25, 2011
Size: 1337
Editor: Gweon
Comment:
Revision 16 as of 4:06AM, Apr 25, 2011
Size: 2651
Editor: Gweon
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
[[ Matlab and Python | First, here is some base-line discussion for Matlab and Python]]. === Here is some discussion of the programming part of Homework #4. ===
Line 3: Line 3:
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. [[ 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.
Line 5: Line 5:
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. 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 36: Line 38:
The obtained images by Matlab and Octave are as follows. To run the above code with Octave, you can uncomment the last line, and then do The obtained images by Matlab and Octave are as follows (click to see full images).

<<lia(E2.3.jpg)>> <<lia(E2.3.oct.jpg)>>

To run the above code with Octave, you should un-comment the last line, and then run
Line 40: Line 46:
where octave must be in your path, and E2.3.oct.m is the assumed file name of 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!), and E2.3.oct.m must be the file name of the above code.
Line 42: Line 48:
<<lia(E2.3.jpg)>> <<lia(E2.3.oct.jpg)>> '''Here is the Python code for Example 2.3.'''
{{{#!highlight python
# 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 ('E - E' + r'$_\mathrm{F}$' + ' (eV)')
ylabel('f (E)')
text (.05,.22,'T=400K')
text(-.04,.12,'T=100K')

# after showing, it is possible to save the plot as an image.
show ()
}}}

You should get an image like this, when you save the image.
<<lia(E2.3.png)>>

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

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.

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.

%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');

%Octave-specific -- uncomment this line for using with Octave.
%print -djpg E2.3.oct.jpg

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 Octave, you should un-comment the last line, and then run

octave E2.3.oct.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!), and E2.3.oct.m must be the file name of the above code.

Here is the Python code for Example 2.3.

# 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 ('E - E' + r'$_\mathrm{F}$' + ' (eV)')
ylabel('f (E)')
text (.05,.22,'T=400K')
text(-.04,.12,'T=100K')

# after showing, it is possible to save the plot as an image.
show ()

You should get an image like this, when you save the image. Inlined image: E2.3.png