Difference between revisions of "584 Computational Methods"

From gradcomputer
Jump to: navigation, search
(Ryan Ogliore (Apr 18, 25))
(Ryan Ogliore (April 3, 10, and 17) ((tentative dates)))
 
(59 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 
'''Tentative Syllabus'''
 
'''Tentative Syllabus'''
  
 +
== Mark Alford (Jan 16, 23, and 30, 2020) ==
  
 +
'''Mathematica'''
  
== Wim Dickhoff (Feb 1, 8) ==
+
<strong>Goal:</strong> Mathematica is an incredibly powerful tool for physics: it does symbolic math, numerical calculations, data plotting, etc.<br/>
 +
This part of the course will give students a good basic knowledge of Mathematica.
  
* Project: diagonalization of quantum mechanical potentials.
+
<strong>Requirements:</strong> Before starting the class, students should
 +
* Make sure you have ''easy'' access to Mathematica. Preferably it should be installed on your own laptop.
 +
** Physics graduate students: for a free Mathematica license, write to Sai Iyer giving your WUSTL email address and approximate month and year of graduation.
 +
** Undergraduates (and non-physics grads): you can buy Mathematica from Wash U. Go to the [http://sl.wustl.edu/catalog Software Licensing Catalog] (note that this URL is only accessible from within Wash U) and click on the link for <q>Mathematica - Wolfram Research</q>.
 +
* Reproduce ''all'' the examples in my [http://web.physics.wustl.edu/alford/mathematica/mathematica_intro.html Introduction to Mathematica]
 +
* Study (and preferably reproduce) the examples in my [http://web.physics.wustl.edu/alford/mathematica/mathematica_techniques.html Mathematica Techniques]
  
The Schroedinger equation of Quantum Mechanics can in some cases be solved analytically for discrete eigenvalues and corresponding wave functions. This is true for potentials with spherical symmetry like the Coulomb or 3-D Harmonic Oscillator. We will extend the solution for discrete eigenvalues for bound states of potentials that do not allow an analytical solution.
 
  
 +
<strong>Project:</strong>
 +
Students should bring their laptop, with Mathematica installed, to class.
 +
* Class 1: Using Mathematica to calculate the statistical mechanics of free fermions at zero temperature
 +
** [http://web.physics.wustl.edu/alford/pub/free_fermions_questions.m First project file] containing the exercises that students will start solving in the first class.
 +
** [http://web.physics.wustl.edu/alford/pub/fermion_stat_mech.pdf Slides describing the stat mech of degenerate fermions]
 +
* Class 2: Using Mathematica to make a model of nuclear matter in terms of free protons, neutrons, and electrons
 +
** [http://web.physics.wustl.edu/alford/pub/free_nucleons_questions.m Second project file] containing the exercises that students will start solving in the second class.
 +
** [http://web.physics.wustl.edu/alford/pub/nuclear_matter.pdf Slides describing a simple model of nuclear matter]
 +
* Class 3: Completion of the nuclear matter project
  
 +
For this segment of the course we will have teaching help from Dr.&nbsp;Mary Leopold ([mailto:mary.muldoon.leopold@gmail.com email here]).
 +
Please feel free to contact her or Prof.&nbsp;Alford with any questions about the project.
  
== Francesc Ferrer (Feb 15, 22) ==
 
  
''' Python/Matplotlib '''
+
== Francesc Ferrer (February 6, 13 and 20, 2020) ((tentative dates)) ==
 +
 
 +
''' Python'''
  
 
*<strong> Requirements:</strong>
 
*<strong> Requirements:</strong>
** Make sure that you bring to class your computer with a working Python environment (including Numpy, Scipy and Matplotlib). Consider for example the [https://www.enthought.com/products/epd/ Enthought] distribution, which is available for free and provides a one-click Python installation for Windows, Linux and Mac.  
+
** Make sure that you bring to class your computer with a working Python environment (including Numpy, Scipy and Matplotlib). Consider for example the [https://docs.continuum.io/anaconda Anaconda] distribution, which is available for free and provides a one-click Python installation for Windows, Linux and Mac.  
** Our first goal will be to write a script that produces the [http://http://en.wikipedia.org/wiki/File:TentMap_BifurcationDiagram.png bifurcation diagram for the tent-map]. To develop the script, and to get used to the language itself, it will be very useful to run Python interactively. It is highly recommended that you use [http://ipython.org/ Ipython] for this purpose. You can think of Ipython as an equivalent to the Mathematica FrontEnd containing an integrated graphics environment, easily accessible help, and many other useful features. You can launch the shell from the command line ('ipython --pylab' loads the graphics environment automatically), which is faster, or use its web-based notebook environment.
+
** Our first goal will be to write a script that produces the [http://http://en.wikipedia.org/wiki/File:TentMap_BifurcationDiagram.png bifurcation diagram for the tent-map]. To develop the script, and to get used to the language itself, it will be very useful to run Python interactively. It is highly recommended that you use [http://ipython.org/ Ipython] for this purpose. You can think of Ipython as an equivalent to the Mathematica FrontEnd containing an integrated graphics environment, easily accessible help, and many other useful features. You can launch the shell from the command line ('ipython --pylab' loads the graphics environment automatically), which is faster, or use its web-based notebook environment ('jupyter-notebook').
  
 
*<strong> Background: </strong>
 
*<strong> Background: </strong>
Line 27: Line 46:
 
[[File:elephant.ipynb]]
 
[[File:elephant.ipynb]]
  
*<strong> Winking elephant notebook (works in Chromium, but not on Firefox since it requires html v5)</strong>  
+
*<strong> Tent map bare notebook</strong>  
  
[[File:winkingelephant.ipynb]]
+
[[File:tentmap0.ipynb]]
  
*<strong> Solution to bifurcation diagram</strong>  
+
<!--*<strong> Winking elephant notebook</strong>  
  
[[File:bifurcation.ipynb]]
+
[[File:winkingelephant.ipynb]]-->
  
== Mike Ogilvie (Feb 29, Mar 7) ==
+
<!--*<strong> Solution to bifurcation diagram</strong>
 +
 
 +
[[File:bifurcation.ipynb]]-->
 +
 
 +
== Mike Ogilvie (Feb 27; March 5 and 19) ((tentative dates)) ==
  
 
'''Monte Carlo, Metropolis and the Ising Model'''
 
'''Monte Carlo, Metropolis and the Ising Model'''
Line 46: Line 69:
  
 
* <strong>Requirements</strong>
 
* <strong>Requirements</strong>
We will continue with Python. You may use the the iPython environment if you like. Notes and a basic Ising simulation in Python will be sent to you. As written, the Ising simulation requires the use of numpy and matplotlib. If you do not want to use matplotlib for plotting, you can comment out the relevant code. The notes contain a number of problems. You will be expected to do at least three of these, and everyone must do the first project.
+
We will continue with Python. You may use the the iPython environment if you like. Notes and a basic Ising simulation in Python will be sent to you. As written, the Ising simulation requires the use of numpy and matplotlib. If you do not want to use matplotlib for plotting, you can comment out the relevant code. The notes contain a number of problems. You will be expected to do at least three of these, and everyone must do the first problem.
 
+
== Mark Alford (Mar 21, 28) ==
+
 
+
'''Mathematica for Statistical Mechanics of Fermions'''
+
 
+
<strong>Requirements:</strong> Before starting the class, students should
+
* Make sure you have ''easy'' access to Mathematica. Preferably it should be installed on your own laptop.
+
** Physics graduate students: for a free Mathematica license, write to Sai Iyer giving your WUSTL email address and approximate month and year of graduation.
+
** Undergraduates (and non-physics grads): buy it for $25.00 from Software Licensing. Send email to <kbd>WU_SoftwareLicensing@wumail.wustl.edu</kbd> giving your first and last name, Washington University email address, and how payment will be made (check or credit/debit card). Once payment has been satisfied you will receive a unique activation code.
+
* Reproduce ''all'' the examples in my [http://www.physics.wustl.edu/alford/mathematica/mathematica_intro.html Introduction to Mathematica]
+
* Study (and preferably reproduce) the examples in my [http://www.physics.wustl.edu/alford/mathematica/mathematica_techniques.html Mathematica Techniques]
+
* Refresh your undergraduate statistical mechanics knowledge. Make sure you understand this [http://www.physics.wustl.edu/alford/pub/fermion_stat_mech.pdf summary of zero-temperature fermion stat mech]
+
 
+
<strong>Project:</strong>
+
Students should bring their laptop, with Mathematica installed, to class. The following files should be loaded on the laptop:
+
* [http://physics.wustl.edu/alford/pub/free_fermions_questions.m First project file] containing the exercises that will be explained and that students will start solving in the first class.
+
* [http://physics.wustl.edu/alford/pub/free_nucleons_questions.m Second project file] containing the exercises that will be explained and that students will start solving in the second class.
+
 
+
== Erik Henriksen (Apr 4, 11) ==
+
 
+
<i> Note: This section will meet in Crow-302. </i>
+
 
+
<strong>LabVIEW</strong> (Laboratory Virtual Instrument Engineering Workbench) is a graphical programming language that uses graphical drawings instead of lines of text to create applications. In contrast to text-based programming languages that use instructions to determine the order of program execution, LabVIEW uses <i>dataflow programming</i>. In data flow programming, the flow of data through nodes in the block diagram determines the execution order of the VIs and functions. VIs, or <i>virtual instruments</i>, are LabVIEW programs that imitate physical instruments.
+
 
+
In LabVIEW, you build a user interface by using a set of tools and objects. The user interface is known as the "front panel." After you build the front panel, you add code using graphical representations of functions in order to control the front panel objects. You add this graphical code, also known as <i>G code</i> or <i>block diagram code</i>, to the block diagram. The block diagram somewhat resembles a flowchart. The block diagram, front panel, and graphical representations of code compose a VI.
+
 
+
Ultimately the VI is used to acquire, display, analyze and save data. VIs interface with real instruments in a lab through USB, serial, or GPIB connections and can remotely control a wide range of standard laboratory equipment.
+
 
+
We will undertake the measurement of a simple RC circuit using your own VI, a function generator, and an oscilloscope. The basic approaches to communicating with lab equipment will be discussed in class. To prepare, it is best to become familiar with the Labview environment by diving right in!
+
 
+
We will meet in Crow 302 rather than Crow 205. The Mac computers in Crow 302 have Labview 2014 installed on them. You will be given card swipe access to 302.
+
 
+
<strong>Assignment:</strong>
+
 
+
<strong>1.</strong> Find time prior to the first class to familiarize yourself with Labview: after launching the program, open "Help/Find Examples," then open "Fundamentals/Waveforms/Waveforms - XY pairs.vi." Run the program to observe its behavior. Then click "Window/Show Block Diagram" to explore the underlying block diagram which displays the code, in graphical form, of this program.
+
 
+
Furthermore, be sure to explore "Fundamentals/Loops," "Structures/Feedback Node - Building An Array.vi,"  and "/Loop Tunnel Modes.vi." You may wish to open many more examples: there is a wide range of simple VIs illustrating many basic concepts of Labview programming. <strong>You will need to have familiarized yourself with these examples in order to complete the assignments below!</strong>
+
 
+
Note that right-clicking in a block diagram allows you to add prewritten functions, structures, basic math, &c.
+
 
+
  
<strong>2.</strong> <i>Before</i> the first class session on April 4, use your new knowledge of Labview to construct a VI that, when run, graphically displays the sum of a series of arbitrary sines and cosines whose frequencies and amplitudes can be entered in controls on the VI front panel. Keep it simple: at the very least, your VI should be able to display either a composite square wave or triangle wave built of a given number of terms added together (so that we could see a rough square wave approximation with only, say, 5 terms; or a very good approx using 100 terms).
+
* <strong>Lecture Notes on Ising Model</strong>
 +
[[File:Ising notes v2.pdf]]
  
In class on April 4, you will demonstrate your VI to the instructor and the class.
+
* <strong>Ising model python code</strong>
 +
[[File:Ising.pdf]] This pdf is a hack to give you a downloadable version of the Ising model code, rather than the annotated version in the notes. If you can copy this pdf into a .py file, fine, but I will send out the .py file (text) to everyone registered in the course along with the notes pdf.
  
<strong>3.</strong> A second assignment will be described in class on April 4, to control a particular set of instruments in a mock "data acquisition" excercise. You will demonstrate this capability in class April 11.
+
== Ryan Ogliore (April 3, 10, and 17) ((tentative dates))==
  
== Ryan Ogliore (Apr 18, 25) ==
+
'''MATLAB'''
  
 
'''MATLAB''' stands for '''mat'''rix '''lab'''oratory. It is a proprietary, commercial programming language developed by MathWorks. MATLAB is primarily for numerical calculations but can also perform symbolic manipulations. The capabilities of MATLAB can be greatly expanded via toolboxes and packages so that one can build, e.g. graphical-user interfaces in MATLAB. MATLAB is a high-level interpreted language (not compiled), but it can call functions written in C or Fortran. MATLAB is used broadly in science and engineering. MATLAB’s power comes from its ease of use, pre-built set of toolboxes, interactive development environment, and visualization. A feature particular to MATLAB is that arithmetic operations are assumed to be matrix operations unless specified otherwise.
 
'''MATLAB''' stands for '''mat'''rix '''lab'''oratory. It is a proprietary, commercial programming language developed by MathWorks. MATLAB is primarily for numerical calculations but can also perform symbolic manipulations. The capabilities of MATLAB can be greatly expanded via toolboxes and packages so that one can build, e.g. graphical-user interfaces in MATLAB. MATLAB is a high-level interpreted language (not compiled), but it can call functions written in C or Fortran. MATLAB is used broadly in science and engineering. MATLAB’s power comes from its ease of use, pre-built set of toolboxes, interactive development environment, and visualization. A feature particular to MATLAB is that arithmetic operations are assumed to be matrix operations unless specified otherwise.
Line 103: Line 88:
  
 
You’ll have to create a login for MathWorks (apologies). But you do not need MATLAB installed on your computer to use the MATLAB Academy.
 
You’ll have to create a login for MathWorks (apologies). But you do not need MATLAB installed on your computer to use the MATLAB Academy.
Please familiarize yourself with MATLAB, before class on April 18, by completing the MATLAB Onramp in the MATLAB Academy. This should take less than two hours to complete.
+
Please familiarize yourself with MATLAB, before or soon after the first lecture, by completing the MATLAB Onramp in the MATLAB Academy. This should take less than two hours to complete.
  
'''Assignments:'''
+
There will be a project assigned before the first lecture. The second lecture will be short, followed by time for students to work on the project and ask me questions. In the third lecture, we will discuss the project and further applications of the principles explored in the project.
  
1. Complete MATLAB Onramp before class on April 18.  
+
<!-- [[https://sites.physics.wustl.edu/gradcomputer/wiki/images/c/c0/Physics_584_2019_Ogliore_Lecture_1.pdf  Lecture 1 slides]] -->
  
2. We will discuss chaotic dynamics in class on April 18. A project based on what was discussed in class will be due on April 25. Be prepared to discuss the assignment on April 25, and we will discuss related problems in class and the types of algorithms used to solve them, focusing on MATLAB implementation.
+
<!-- [[https://sites.physics.wustl.edu/gradcomputer/wiki/index.php/File:Physics_584_Lecture3_OGLIORE.pdf  Lecture 3 slides]] -->

Latest revision as of 17:01, 31 March 2020

Tentative Syllabus

Mark Alford (Jan 16, 23, and 30, 2020)

Mathematica

Goal: Mathematica is an incredibly powerful tool for physics: it does symbolic math, numerical calculations, data plotting, etc.
This part of the course will give students a good basic knowledge of Mathematica.

Requirements: Before starting the class, students should

  • Make sure you have easy access to Mathematica. Preferably it should be installed on your own laptop.
    • Physics graduate students: for a free Mathematica license, write to Sai Iyer giving your WUSTL email address and approximate month and year of graduation.
    • Undergraduates (and non-physics grads): you can buy Mathematica from Wash U. Go to the Software Licensing Catalog (note that this URL is only accessible from within Wash U) and click on the link for Mathematica - Wolfram Research.
  • Reproduce all the examples in my Introduction to Mathematica
  • Study (and preferably reproduce) the examples in my Mathematica Techniques


Project: Students should bring their laptop, with Mathematica installed, to class.

For this segment of the course we will have teaching help from Dr. Mary Leopold (email here). Please feel free to contact her or Prof. Alford with any questions about the project.


Francesc Ferrer (February 6, 13 and 20, 2020) ((tentative dates))

Python

  • Requirements:
    • Make sure that you bring to class your computer with a working Python environment (including Numpy, Scipy and Matplotlib). Consider for example the Anaconda distribution, which is available for free and provides a one-click Python installation for Windows, Linux and Mac.
    • Our first goal will be to write a script that produces the bifurcation diagram for the tent-map. To develop the script, and to get used to the language itself, it will be very useful to run Python interactively. It is highly recommended that you use Ipython for this purpose. You can think of Ipython as an equivalent to the Mathematica FrontEnd containing an integrated graphics environment, easily accessible help, and many other useful features. You can launch the shell from the command line ('ipython --pylab' loads the graphics environment automatically), which is faster, or use its web-based notebook environment ('jupyter-notebook').
  • Background:
    • Some good resources to get acquainted with the basics of the language are listed in the official Python site: Tutorials. An accessible, yet fairly complete, one can be found here; if you have a little bit of programming experience, you might want to browse Google's Python class.
    • Matplotlib will allow you to plot functions and it provides the source code for an extensive list of examples.
  • Example notebook

File:Elephant.ipynb

  • Tent map bare notebook

File:Tentmap0.ipynb


Mike Ogilvie (Feb 27; March 5 and 19) ((tentative dates))

Monte Carlo, Metropolis and the Ising Model

  • Project

Our goal is to learn to use Monte Carlo simulation to understand the behavior of complex systems with many degrees of freedom. We will study the two-dimensional Ising model, perhaps the most celebrated model in all theoretical physics.

  • Background

Introductory material on the Ising model can be found in most graduate-level statistical mechanics texts, as well as here: Ising model.

  • Requirements

We will continue with Python. You may use the the iPython environment if you like. Notes and a basic Ising simulation in Python will be sent to you. As written, the Ising simulation requires the use of numpy and matplotlib. If you do not want to use matplotlib for plotting, you can comment out the relevant code. The notes contain a number of problems. You will be expected to do at least three of these, and everyone must do the first problem.

  • Lecture Notes on Ising Model

File:Ising notes v2.pdf

  • Ising model python code

File:Ising.pdf This pdf is a hack to give you a downloadable version of the Ising model code, rather than the annotated version in the notes. If you can copy this pdf into a .py file, fine, but I will send out the .py file (text) to everyone registered in the course along with the notes pdf.

Ryan Ogliore (April 3, 10, and 17) ((tentative dates))

MATLAB

MATLAB stands for matrix laboratory. It is a proprietary, commercial programming language developed by MathWorks. MATLAB is primarily for numerical calculations but can also perform symbolic manipulations. The capabilities of MATLAB can be greatly expanded via toolboxes and packages so that one can build, e.g. graphical-user interfaces in MATLAB. MATLAB is a high-level interpreted language (not compiled), but it can call functions written in C or Fortran. MATLAB is used broadly in science and engineering. MATLAB’s power comes from its ease of use, pre-built set of toolboxes, interactive development environment, and visualization. A feature particular to MATLAB is that arithmetic operations are assumed to be matrix operations unless specified otherwise.

Please install MATLAB on your laptop if you have one, or have easy access to it if you don’t. It works on Linux/Mac/Windows. Please contact Sai Iyer (sai@physics.wustl.edu) about obtaining and installing MATLAB.

MATLAB offers a nice introduction to the language in the MATLAB Academy: https://matlabacademy.mathworks.com/

You’ll have to create a login for MathWorks (apologies). But you do not need MATLAB installed on your computer to use the MATLAB Academy. Please familiarize yourself with MATLAB, before or soon after the first lecture, by completing the MATLAB Onramp in the MATLAB Academy. This should take less than two hours to complete.

There will be a project assigned before the first lecture. The second lecture will be short, followed by time for students to work on the project and ask me questions. In the third lecture, we will discuss the project and further applications of the principles explored in the project.