程序代写案例-PHY407F

欢迎使用51辅导,51作业君孵化低价透明的学长辅导平台,服务保持优质,平均费用压低50%以上! 51fudao.top
PHY407F Computational Physics
Final Project Guidelines

As a final assessment, you will complete a project that involves using computational br>methods to solve some physics (or related field) problem. This is an individual
assignment: you will not work in pairs like for the labs; instead, you will pick your own
topic and produce a report for which you will be the sole author. The topic and
computational methods you explore are completely up to you. I provide some possibilities
and keywords to search at the end of this document, but you can completely ignore this and
choose your own if you wish. Choose a project that is of interest to you, allows you to be
creative, challenge yourself, and enjoy learning something new.

The topic of your term project should NOT be your undergrad thesis, a topic for some other
term project you must write or work you have done for some other course. Essentially, it
should be something new you've decided to explore for this course. It may however be
related to something else you have done or are doing, as long as the part you are doing for
this course is original.

You can style your project in one of two ways:

1. You can write a ‘Lab’ like the ones we have done in this course. E.g., provide a
‘Computational Background’, then a ‘Physics Background’, then some instructions
on how to solve some problems on some related theme or topic. Also provide the
solutions and codes.
2. You can write a ‘Term Paper’. This is more like a research paper where you provide
an ‘Introduction’ section where you review the literature on your topic and
computational methods, a ‘Methods’ section where you detail your methods, a
‘Results’ section where you provide results and a ‘Discussion/Conclusion’ section
where you discuss your results.

The style choice is totally up to you. Whichever you choose, make sure to provide citations
to references that you use (see https://advice.writing.utoronto.ca/using-
sources/documentation/). Also provide all codes you develop.

Your term project should somehow go beyond the scope of this course. It can do so in one
of the following ways:

1. use a computational method that was not covered by the labs (e.g., some new way
to numerically solve an integral, or some new finite-difference scheme for solving
ODEs).
2. use a computational method for a higher-dimensional problem, as long as it
involves significant changes to the algorithm (e.g., doing a 2D shallow water
simulation instead of a 1D shallow water simulation is NOT trivial but solving for
the volume of a hypersphere in 11 dimensions instead of 10 is trivial).
3. combine several computational techniques to solve a more complicated problem (if
it is not too similar to what we did in class).

The final report should be in the range of 5-8 pages of written text (including tables
and figures, but not code lines). Use a single line spacing, margins no smaller than 2.5 cm,
Times New Roman 12 pt. font (or equivalent; the LaTeX basic font is equivalent enough). As
a general guideline, any page over 12 will be increasingly frowned upon by the marker.

Some projects might involve complex computing methods but only a few lines of code to
implement (these would probably result in a project with a much longer introduction or
computational background explaining these complex methods, but the code would be
short). Some might involve simple methods to understand but require a lot of programming
(in this case, the intro/computational background may be shorter, but the codes will be
longer). Based on the weight of the term project and the amount of time you have to
complete it, I am expecting a finished product that is the equivalent of 2 regular
course labs (in terms of time spent on the project), “one lab” being the amount of work
one student completes in one week. Equivalently, it should be the equivalent of one full lab
(as done by one lab group during a week).

Reports will be due Thursday Dec. 9th at 11:59 pm. However, there is a NO-PENALTY
extension until Sunday Dec. 19th at 11:59 pm. This extension deadline is strict. Make sure
to hand in your project long before this deadline so that there is no issue with being just
over the due date/time. Work handed in after Sunday, Dec. 19th at 11:59 pm will be
assigned a grade of 0.

How to hand in: like the labs, you will hand in your project via Quercus. Same rules as the
assignments. See “PHY407 Assignment Policy”, and in summary, it would be in the same
format as the labs, i.e., .py + .pdf (or .doc(x) or .odt): one or more python scripts, along with
a report containing text, equations, and/or explanations of various sorts. It should include
ONE document for your write up (pdf or doc(x)) and ALL files needed to run your code. You
may upload auxiliary files (movies, data files). Your total submission must not exceed 30
MB. If it does exceed it, you can use a cloud storing service. At UofT, we can all use
OneDrive, and you have the possibility to only share it with the marker if you wish to.

No matter how you style your project, it must include the following:
1. Explanation of any new computing methods (along with citations to where you
learned about them). You can assume a knowledge base of someone who took this
course (e.g., you don’t have to explain the idea of numerically solving integrals to
explain a new technique for numerically solving an integral. But if you decide to
cover finite element methods, you should explain this from its basics since we didn’t
cover any in class).
2. Some sort of efficiency/accuracy/stability/error estimates related to your project.
Which to focus on will depend on your topic and methods choice, but I expect some
discussion of these points (at least a paragraph).
3. A section where you discuss how you can test (and hopefully did test) your codes to
ensure there are no bugs and that it produces correct results. This can involve
simple test cases, limiting cases, benchmark studies etc.
4. Your codes will be graded based on computational efficiency (though we did not
insist on it during the term and therefore will be somewhat lax), organization and
readability by me. This means you should include lots of good comments, make sure
your code is organized well (with modules, nice spacing) and that it minimizes the
number of floating-point operations (based on your accuracy goals).
Here is the grading scheme for the project:
Content (11/24)
1) appropriate level/amount of discussion of computational
methods involved.
a) E.g., you could present the computational method as a
readable pseudocode.
2) effective (i.e., thorough, succinct and understandable)
descriptions of these methods and anything else involved
(e.g., your “Physics background”, or your results, discussion
etc.).
3) suitability of the methods for solving the physical problem
you are considering.
4) Efficiency/accuracy/stability/error discussion.
Code (5/24)
1) understandable code (i.e., comments, organization)
2) modularization (for testing purposes)
3) appropriate level/amount of coding for the project.
Presentation
and writeup
(8/24)
1) Grammar, style, lack of typos, good organization to the
document.
2) Effective presentation of plots and figures.

• Help, Feedback and Collaboration: Since this is a ‘final project’, we will implement the
philosophy of an open book final exam. You are required to do your own work (no
partners) although you can use any texts/articles/online refs you like. You cannot ask
for help on finding bugs in your codes from anyone. As a slight deviation from an open-
book final exam, you can informally discuss your topic with other students in the
course, compare ideas and references but you cannot work in groups, and you must
hand in a copy that is yours, and yours only. You can ask Prof. Grisouard and the TAs for
advice on whether a particular topic is appropriate and whether you are approaching it
in a good way (i.e., with appropriate methods). But make sure to do this early (i.e.
before the end of labs). If you want feedback on your choice of topic or
computational approach, you must ask by Dec. 1st. By then you are expected to have
a detailed plan in place for your project.

Basically, the point of the project is for you to demonstrate, individually, what you
have learned in this course and how you would apply it to some new scenario not
covered in the course.

Potential Project Topics:

Here are some ideas for different topics and/or computational methods you can use in your
project. Some of these are just keywords (i.e., they wouldn’t be an entire project but could
be a specific method to implement as part of a project). Some are just physics topics that
typically involve computational methods. Do some online searching of these methods to
learn what they are about. I’ve tried to organize them based on their relevance to the
chapters of the text. Feel free to completely ignore these and come up with your own
(maybe by looking through other computational text like Numerical Recipes). Again, if you
want feedback/advice/guidance you must see one of us before Dec. 2nd.

I urge you to choose a project that is of scientific nature. It does not have to be physics:
it can be about biology, medical sciences, finance, engineering… But I advise against picking
a project that is purely about image processing or convolutional neural networks, for
example. Instead, try and tie it to a scientific topic.

Some decent texts where you can look for methods and problems are:
1) Press et al., Numerical Recipes
2) Heath, Scientific Computing
3) Giordano & Nakanishi, Computational Physics

Ideas for Topics & Methods:

• Functional Analysis (Integrals, Derivatives, Interpolation, Extrapolation…):
o Gauss-Kronrod quadrature
o higher order finite difference approximations
o using Chebyshev approximations for derivatives & integrals
o cubic spline interpolation
o computing special functions: gamma function, error function, Bessel
functions, Legendre polynomials, spherical harmonics
• Solving linear systems and linear algebra:
o Singular Value Decomposition
o Cholesky Decomposition
o Conjugate gradient method
o Sparse systems
o Lanczos algorithm
o data optimization
o Methods of interest for determining eigenvalues/eigenfunctions (Jacobi,
Power, QR, Krylov subspace, etc.)
• FFTS:
o dealing with aliasing
o correlation and autocorrelation
o filtering and data windowing
o wavelet transforms
o compression of information
• Solving ODEs:
o methods for stiff equations
o predictor-corrector methods
o integral equations
o bifurcations in nonlinear systems
o resonances in planetary orbits
o chaotic tumbling of satellites
o other chaotic systems
o molecular dynamics simulations: dilute gas, planetary motions, planetary
formation, melting transitions
o efficient numerical methods for integrating N-body problems: fast multipole
method or particle-mesh methods
o Fermi-Pasta-Ulam-Tsingou system
o Galerkin method
o Collocation method
• Solving PDEs:
o solving for electric fields and potentials for different charge distributions
o magnetic fields produced by current distributions
o wave motions (on a string, in the ocean, atmosphere, …)
o membrane vibrations
o 2D or 3D parabolic, elliptic, or hyperbolic equations
o Schrodinger’s equation in 2 or 3D, different potentials, barriers, quantum
tunneling
o multigrid methods
o finite element methods
o spectral element methods
o fluid dynamics with shocks
o nonlinear PDEs
o solitons
o 2D shallow water equations
o barotropic vorticity equations (simple atmospheric dynamics)
o time dependent/time independent quantum mechanical calculations
• Random Processes & Monte Carlo:
o stratified sampling
o adaptive Monte Carlo for particle physics (VEGAS)
o relationship between diffusion and entropy
o fractal dimensionality of curves
o percolation
o 1st order phase transitions
o 2nd order phase transitions
o protein folding
o neural networks/machine learning
o neurons and action potentials
o cellular automata
o Master’s equation
o variational Monte Carlo method for time independent Schrodinger equation
o earthquake simulations: block sticking & slipping
o kinetic Monte Carlo (Gillespie algorithm)
o Langevin dynamics
o Density functional theory (quantum Monte Carlo)

欢迎咨询51作业君
51作业君

Email:51zuoyejun

@gmail.com

添加客服微信: abby12468