首页 > > 详细

讲解 data 编程、辅导 python 设计程序

The University of Nottingham Ningbo China SCHOOL OF MATHEMATICAL SCIENCES
SPRING SEMESTER 2024–2025
Put all your Python files in one folder with Name FIRSTNAME LASTNAME (student ID STUDENTIDNUMBER) and submit the folder.
Submission deadline: 11.59pm, Friday 9th May 2025
This coursework contributes 20% towards the overall grade for the module.
Rules:
Each student is to submit their own coursework.
You must submit only the .py files requested in this question paper. Details of the required filenames are given within the questions.
You may adapt any code that we developed in class (i.e. you do not have to start from scratch).
Coursework template python files are available on the module homepage on Moodle. Download these first.
In each template file, the packages and libraries required to complete the question are listed. You are not permitted to use any libraries or packages beyond those included in each question’s template file.
1 MATH2052
MATH2052 Turn Over

Marks breakdown:
2 MATH2052
This coursework is out of 100 marks: 􏰁 Outputs in Q1 – 20 marks;
􏰁 Outputs in Q2 – 45 marks;
􏰁 Outputs in Q3 – 25 marks;
􏰁 Commenting and structure – 10 marks.
To obtain the maximum marks for code commenting and structure:
􏰁 Your comments should be helpful to the reader; they should help make your program easier to navigate. Note that having too many comments is potentially as bad as having too few comments! The style of commenting we used in the example programs is what you should aim for.
􏰁 Your program structure should be: imports at the top (these should not need to change from the template files), followed by the requested function definitions, followed by anything else. You ought to remove or comment out any lines of code used to call and test your functions prior to submission.
Viewing Animations in Spyder:
Please see the first item on the module Moodle page “Installing Spyder” for details of how to alter settings to show matplotlib animations.
Guidelines for submitting the coursework correctly:
Take time to read the coursework questions in detail.
For full marks, your functions need to return the correct outputs for particular input arguments. Suggestions for tests you can use to check your code with are given but you are encouraged to test your code using your own examples also.
Please be aware that we will test your functions to check that they work and produce the desired output(s), both with the test given in the question and with different undisclosed data.
If your modules have filenames that differ to what we have explicitly asked for, then you risk losing marks. 􏰁 Therefore, please do not add your username or student ID number to your filename.
Your functions must have the same inputs and outputs as those specified in the questions (highlighted in blue), and in the same order as specified.
You can check you have all the required methods and files by running test call.py and reading the output messages.
MATH2052 Turn Over

1. Question 1: Double Integral
3 MATH2052
We are going to write a scalar function f of two variables, distance x (in metres) and time t (in seconds). The function f(x,t) describes the output of a machine which behaves periodically, according to the following rules:
􏰁 When time t = 0.05 the machine switches on (it is not on at t < 0.05).
􏰁 It remains on for 0.05 seconds, then switches off (at t = 0.1).
􏰁 This pattern repeats periodically every T = STIMPERIOD seconds (i.e. the machine switches on again at t = T + 0.05, off at t = T + 0.1, on again at t = 2T + 0.05, off at t = 2T + 0.1 and so on . . . )
􏰁 When the machine is off then f(x,t) = 0.
􏰁 When the machine is on then f(x,t) = g(x), where g(x) is the following ‘triangular wave’ pattern in
space, symmetric around the given x value (not to scale): g(x) = STIMHEIGHT
g(x) = 0
x = STIMCENTRE m
S T I M W I D S T T H I Mm W I D T H m
a) Begin with the template code templateQ1.py and modify it such that the function f(x,t) behaves as specified by the above rules.
Note: you can use f=np.vectorize(f) to automatically convert your function so that it can be called with (and return) numpy vectors.
Test: you can use the code at the bottom of the template file to plot f(x,t) across space at different time points, and compare with the diagram above, to check that it is coded up correctly.
b) Write a function using the Composite (2D) Simpson’s Rule to calculate and return the value I of the following integral (for any function f(x,t))
I =
􏰂 Tfinal 􏰂 DOMAINSIZE
00
f(x,t)dxdt
The function should be written as
calculate double simpsons integral(Tfinal, f, Nx, Nt)
where the arguments are:
– Tfinal — the upper limit of the time integral, Tfinal; – f — the function, f(x,t);
– Nx — the number of strips to use in the x-direction; – Nt — the number of strips to use in the t direction.
The rest of the integral limits can be hardcoded into the function, rather than supplied as arguments.
MATH2052 Turn Over

2. Question 2: Time-dependent advection-diffusion equation
We wish to solve the time-dependent advection-diffusion equation, as explored in Lectures.
4 MATH2052
Ensure your code raises a runtime error if either Nx or Nt is specified by the user as an odd number, using a python command like
raise RuntimeError("Nx must be even")
Test: your double integral should return 0.2 (or very close to it) when called with Tfinal = T (the period of the machine activation), f = f(x,t) as defined above,
Nx = Q1NX, and Nt = Q1NT.
Be sure to use the template templateQ1.py which contains some clues and the method templates for you to fill in. When it is complete, rename to completeQ1.py and submit it with this filename.
Here, u(x, t) represents the concentration of a chemical called Unobtainium (in units of moles per metre) dissolved in water, at position x along a pipe (measured in metres) at time t (measured in seconds). The concentration of unobtainium will obey the PDE
∂u − a∂2u + b∂u = 0, (1) ∂t ∂x2 ∂x
where the diffusion coefficient a = Q2AV ALUE m2s−1, the water in the pipe is flowing with velocity b = Q2BV ALUE ms−1, and our pipe covers the domain Ω : x ∈ [0, DOMAINSIZE].
The concentration profile at time t = 0 is given as
4x, 
u(x,0)= 4(1−x), 0,
for 0 < x < 0.5
for0.5x<1.0 (2) otherwise.
which should be coded into a method u0(x).
Note: you can use u0=np.vectorize(u0) to automatically convert your initial condition function so
that it can be called with (and return) a numpy vector.
Your aim in this question is to write code to run a finite difference scheme to solve Equation (1) up to time t = Tfinal, which will
联系我们
  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp
热点标签

联系我们 - QQ: 99515681 微信:codinghelp
程序辅导网!