MAS115辅导、辅导Python语言、讲解Python编程设计、辅导SAM MARSH
- 首页 >> Python编程MAS115: GROUP PROJECT 1
SAM MARSH AND ALEX FLETCHER
1. The task
Below you will find some discussion of recurrence relations. In your groups,
your task is to investigate this area and create a website that presents your
findings, using Python as imaginatively as you can and analyzing the data
that your programs produce.
You will find suggestions on what to investigate. You are free to investigate
things that have not been suggested, and you do not need to cover all of the
things that have been.
Your write-up could involve some background material to the area, but
you must ensure this isn’t plagiarised from other sources and is genuinely
your own work. Any material that relies on other sources must be properly
referenced and credited to them. It will be assumed that you attended the
Week 11 lecture where plagiarism was covered.
You should aim to create a self-contained account of the subject that your
peers who aren’t taking MAS115 would be interested in reading.
Submission
The submission of the project comes in two parts:
(1) a short, individual submission in mid-January;
(2) your group’s final submission in late January.
Both of these submissions will be uploaded via the upload system on the
course webpage.
An individual submission must be completed by each student. For this,
you must create a short webpage covering the ‘Individual Tasks’ found in
Section 2. This should feature working Python programs embedded in the
page or available as .py files for download. The deadline for uploading
the individual submission is midnight at the end of Friday 11th
January. This submission will not be marked, but failure to complete it
will result in a penalty being applied to that student’s overall mark.
There is no minimum or maximum length for the final submission. As
a guide, we expect approximately four times the length and depth of the
average mini-project. You may have just one webpage or a series of linked
pages (that is, a website). You may link to or embed Python programs,
external sites or any other appropriate material. The title on the index page
should be ‘Recurrence relations: Group Project (Group x)’. The deadline
for uploading the final group submission is midnight at the end of
Friday 25th January.
1
2 SAM MARSH AND ALEX FLETCHER
You may use any of the CSS files which appear on the course webpage. You
are also free to create one of your own. However, you may be criticised if
your CSS file makes your site hard to read.
You will receive a mark out of 100 for the project, which will contribute
20% of your final grade. In all but exceptional circumstances, all members
of the group will receive the same mark (subject to individual penalties as
above). We are aware that contributions are likely to be unequal, but as a
group you will take joint responsibility for your output. There will be an
opportunity to comment on exceptional cases at the end of the project.
January computer labs
There will be one or two computer labs in January, which you should use
to work on and finalize the project in your groups. We will email details of
these closer to the time.
Late work and plagiarism
Late work. It is important that work is submitted on time. Any work
submitted after the deadline may be subject to a penalty and could be
given a mark of zero. Anybody with circumstances affecting their ability to
hand in the work must contact Dr Marsh in advance of the hand-in date.
Plagiarism. The project must be your own group’s work. You should
collaborate with your other group members to identify the work to be done
and solve problems. You should not share material with other groups except
via the MAS115 discussion board (see below). Please also ensure you have
understood the material on plagiarism from the Week 11 lecture. If we judge
that work has been plagiarised from another source, there is a possibility of
a mark of zero being awarded for those projects. Please bear this in mind!
Final comments
Here are some final bits of advice on how to do a good project.
? Make sure the project is a coherent whole, not just unrelated pages.
? The first-person (‘I wrote a program’) is not appropriate in group work.
Read other people’s contributions and check for any mistakes.
Reference everything! Look out for strangely good work: could it be
plagiarised?
Always make Python code downloadable, or embed with repl.it or
trinket.io.
Make your site easy to browse by keeping the structure simple.
Don’t use capital letters or spaces in filenames.
Use the MAS115 discussion board if you’re stuck as a group.
Remember: you must participate satisfactorily in all three group projects
to pass the module.
MAS115: GROUP PROJECT 1 3
2. Recurrence relations
A recurrence relation for a sequence x1, x2, x3, . . . is
an equation which, for each i past a certain threshhold, relates xi to
earlier terms in the sequence, along with
a specification of initial values.
For example, the sequence 1, 2, 4, 8, . . . has a recurrence relation given by
xi = 2 xi?1 for i ≥ 2, with initial value x1 = 1. Other simple examples
include arithmetic and geometric progressions, the sequence of factorials
(1, 2, 6, 24, . . .), and the Fibonacci sequence.
Individual submission. The individual submission looks at some simple
examples of recurrence relations.
Individual task. Write Python code to return the nth term
of some interesting sequences generated by recurrence relations,
starting with some of the examples mentioned above
and looking at other interesting cases you can find.
Sequences with recurrence relations can be used to generate interesting numbers,
usually roots of equations, as you may have seen at A-level.
Individual task. What is the behaviour of the recurrence
relation with equation What
happens as you vary the value of x1? Give a good account of
the ideas behind using recurrence relations in this way, and
use Python to illustrate what’s going on as best you can.
There’s an interesting recurrence relation with equation xi = r(1?xi?1)xi1
for i ≥ 2, often called the logistic map. By varying the choice of parameter
r, the behaviour of the sequences it generates changes dramatically.
Individual task. For starting values 0 < x1 < 1, see what
happens using the logistic map with the following choices of
parameter r, using Python, and summarising your findings:
(a) r = 2.4; (b) r = 3.5; (c) r = 3.55; (d) r = 3.82.
Write up your individual submission as a basic webpage, with embedded or
downloadable Python programs, and upload your page to the upload system
by midnight at the end of Friday 11th January.
The purpose of the individual submission is to enable group members to form
a common understanding of the methods needed to investigate the group
project below. Material from the individual task can and should feature in
the group project by pooling the findings from the group’s members.
Group project. You should now, as a group, investigate recurrence relations
further, using Python imaginatively where it is useful. Below are
some suggested areas you could choose to investigate. Note that we will be
more impressed by fewer areas explored in more depth than by many areas
considered superficially.
4 SAM MARSH AND ALEX FLETCHER
More on the logistic map. The bifurcation diagram for the logistic map is a
striking visual image which represents interesting dynamics occurring within
a simple-looking recurrence relation.
Figure 1. The bifurcation diagram for the logistic map.
(Picture from Wikipedia, public domain.)
You could investigate the logistic map further, giving a good account of what
the bifurcation diagram shows, and use Python to investigate and explain
what’s going on.
Cobwebbing. You could investigate how cobwebbing, a graphical technique,
can be used to help understand the behaviour of recurrence relations of the
form xi = f(xi?1), for nonlinear functions f other than the logistic map.
The Mandelbrot set. The Mandelbrot set for complex numbers comes as the
result of an iterative procedure using ideas similar to those outlined above.
What can you find out about this and how it relates to Julia sets?
Generalised Fibonacci sequences. You could investigate generalising the Fibonacci
sequence, looking at recurrence relations of the form xi = c1xi1 +
c2xi2 + . . . + cnxin or similar. What can you find out about these, and
can you find anything interesting to demonstrate using Python?
Real-world applications. Recurrence relations (also called difference equations)
have been used to model a variety of processes, from sunflower seed
spirals to fisheries management to tumour cell growth. You could investigate
one or more examples where recurrence relations have been applied to
real-world phenomena.
You have freedom to explore, write about and impress us with your Python
abilities on any related area. We look forward to seeing what you come up
with!