General Remarks

The complete assignment must be written as a single Jupyter notebook that contains the code, relevant output, graphcis and all explanations.

The Notebook must be executable without errors. To make sure that this is the case, before submitting reload the notebook and run it from scratch to make sure it runs fine. Any submitted notebook that does not run correctly will receive an automatic 0 mark.

While you can (and should) include in your notebooks results from longer runtime, make sure that the parameter choices in your notebook on submission are chosen such that the notebook does not take longer than 2 minutes to run on your computer. We are most likely using much faster machines for marking. But notebooks that have a substantially longer running time will be rejected.

You must follow in your code PEP8 coding guidelines with the only exception that lines can be longer than 80 characters. But please do not make them much longer than 100 characters so that they are still readable (consider at a soft limit). Failure to adhere to PEP8 coding guidelines can result in substantial point reductions in severe cases.

The task this time consists of a single question that asks to find a single number through computation. We have provided the solution already. The task is to use everything you have learned this term to compute a solution that is as accurate as possible and efficient in the sense that it uses modern Python optimisation techniques that we have discussed. The final mark is not split up into categories, but will be a mixture of good documentation, demonstration of efficient technologies used and ingenuity in your approach.

Note. The following problem is taken from the SIAM 100 Digit Challenge (see the corresponding book "The SIAM 100 Digit Challenge"). We want to investigate parabolic time-dependent problems of the form (see the corresponding book "The SIAM 100 Digit Challenge"). We want to investigate parabolic time-dependent problems of the form ut = f(u; t). Consider a square plate with sides [-1; 1] × [-1; 1]. At time t = 0 we are heating the plate up such that the temperature is u = 5 on one side and u = 0 on the other sides. The temperature evolves according to ut = ∆u. At what time tdoes the plate reach u = 1 at the center of the plate? You should use finite differences or spectral discretisations, and also try with explicit and implicit time-stepping schemes. How you implement your solution and what techniques you use is up to you. But you should clearly demonstrate by scaling experiments how many reliable digits of the solution you achieve. To twelve digits the wanted solution is t= 0:424011387033.