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: