1D Diffusion Problem: Tridiagonal Matrix Algorithm

This problem set proved mightier than me. While I conceptually understand the mathematics

behind the use of tridiagonal matrices to compute diffusion equation solutions, encoding the

process in Python proved to be pretty difficult. Using C may have been a more intuitive

approach, however I am pretty unfamiliar with C and chose to translate C's logic into python,

rather than learn the C syntax.

Currently, my program is in two pieces:

The first intends to compute matrix values using numpy arrays. I begin by setting up arrays for

the current and future function states. I then solicit parameters via raw input from the user. Next, I

condense the diffusion constant dt/(dx)^2 into a single term: alpha. This term is used to update

states in the matrix according to the results of our forward discretization.

My trouble starts with setting up the first array, consisting of 500 sites and the vector needed to

multiply in order to solve for u(sub i, sup n). I can't figure out how to create a tridiagonal matrix in

python that contains different terms of the discretized equation each updated by alpha at the

center state. While I figured out how to set up a tridiagonal matrix in the abstract sense, I had a

hard time retrofitting it to our specific conditions. The second program piece is this general

tridiagonal matrix.

Below is a screenshot of the current states of my program pieces:

And the general tridiagonal matrix:

Problem Set 5: Handwritten Math Problems

Forward finite-difference approximation:

Von Neumann stability and modes of decay: