This post has been de-listed
It is no longer included in search results and normal feeds (front page, hot posts, subreddit posts, etc). It remains visible only via the author's post history.
I'm a grad student starting to study dynamical systems. Up until now I've avoided learning much programming but I want to break that habit, and I have an interesting project involving simulating billiards that is related to my research. I would like some guidance on a general path to realizing this project.
Basically I'm starting to learn some chaos theory and am interested in simulating billiards as a playground for experimenting with different billiard board shapes and geometries. I think I have a good plan conceptually, but am honestly lost on where to get started programming wise. I definitely want to use this as a project to learn how to use computers to simulate mathematical problems, so dont want to use preexisting software.
My experience with programming is pretty basic. I have taught Matlab computer classes as part of teaching a first year linear algebra course, and I took a course on R once. I am open to learning any language, but am interested in functional programming languages such as haskell. Here is my basic plan:
First I literally just want to draw a particle moving in a straight line. I want to make a program that has a speed and direction as inputs and shows a point particle moving with that speed in that direction.
Next I want to simulate the particle bouncing off a straight line. These are specular reflections, and I would like to start with simulating a ball contained in a simple rectangular shape. I.e. I want to update the program from step 1 to include the fact that the particle is stuck on a billiard table.
I would like to simulate more complicated shapes. There are several standard examples (for examples see https://en.m.wikipedia.org/wiki/Dynamical_billiards). Ideally I would like to update the program from step 1 to also accept an arbitrary curve as input. And simulate a billiard in a board of that shape.
Slightly more ambitious, but I would also like to simulate a particle moving in arbitrary geometries. I would like to know how to calculate geodesics given a metric, and display a particle moving along them on e.g. a surface of genus 2.
Even more ambitious (and outside of my conceptual understanding right now tbh): in the long term I'm also interested in quantum billiards, which I think involves finding eigenfunctions of the laplacian on particular domains. So maybe I could update the program in part 1 to also be able to find eigenfunctions of the laplacian and e.g. display areas of high density.
I'm interested in any advice on how to get started. For instance, if you were trying to do this, what steps would you take? Just a simple outline like that would help hugely in giving me some structure to base my own learning around.
I honestly appreciate any thoughts, both on the programming side and on the math side. E.g. are there other interesting things I could simulate along these lines? Do you think I should modify my plan in any way?
Thanks for any thoughts!
Subreddit
Post Details
- Posted
- 1 year ago
- Reddit URL
- View post on reddit.com
- External URL
- reddit.com/r/math/commen...