To save content items to your account,
please confirm that you agree to abide by our usage policies.
If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your account.
Find out more about saving content to .
To save content items to your Kindle, first ensure no-reply@cambridge.org
is added to your Approved Personal Document E-mail List under your Personal Document Settings
on the Manage Your Content and Devices page of your Amazon account. Then enter the ‘name’ part
of your Kindle email address below.
Find out more about saving to your Kindle.
Note you can select to save to either the @free.kindle.com or @kindle.com variations.
‘@free.kindle.com’ emails are free but can only be saved to your device when it is connected to wi-fi.
‘@kindle.com’ emails can be delivered even when you are not connected to wi-fi, but note that service fees apply.
In this chapter, we present two rather different topics, which we have linked together. First we shall study some initial value problems and initial-boundary value problems, where the forward-in-time integration is handled by the “method of lines”. We can treat the spatial derivatives by one of two methods:
finite differencing, the standard approach, which is discussed in every textbook, and some aspects of which will be treated in the next chapter,
spectral methods which, for smooth solutions, will give near exponential accuracy.
For simplicity, we shall study only scalar partial differential equations in one spatial dimension, but everything can be generalized to systems of equations in two or more dimensions. We look first at Fourier methods capable of handling problems with periodic spatial dependence. Then in Section 8.6 we suggest a promising approach using Chebyshev transforms for spatial dependencies that are more general. Unfortunately, there is no pre-existing Python black box package to implement this, but there is legacy Fortran77 code which we list in Appendix B.
The second main topic of this chapter is to present the numpy f2py tool in Section 8.7, so that we can re-use the legacy code of Appendix B to construct Python functions to implement the ideas of Section 8.6. If you are interested in reusing legacy code, then you should study the ideas presented in Section 8.7, to find out how to do it, even if you have no interest in Chebyshev transforms.
I have used computers as an aid to scientific research for over 40 years. During that time, hardware has become cheap, fast and powerful. However, software relevant to the working scientist has become progressively more complicated. My favourite textbooks on Fortran90 and C++ run to 1200 and 1600 pages respectively. And then we need documentation on mathematics libraries and graphics packages. A newcomer going down this route is going to have to invest significant amounts of time and energy in order to write useful programmes. This has led to the emergence of “scientific packages” such as Matlab or Mathematica which avoid the complications of compiled languages, separate mathematics libraries and graphics packages. I have used them and found them very convenient for executing the tasks envisaged by their developers. However, I also found them very difficult to extend beyond these boundaries, and so I looked for alternative approaches.
Some years ago, a computer science colleague suggested that I should take a look at Python. At that time, it was clear that Python had great potential but a very flaky implementation. It was however free and open-source, and was attracting what has turned out to be a very effective army of developers. More recently, their efforts have coordinated to produce a formidable package consisting of a small core language surrounded by a wealth of add-on libraries or modules. A select group of these can and do replicate the facilities of the conventional scientific packages.
Although Python is a small language it is a very rich one. It is very tempting, when writing a textbook, to spell out all of the ramifications, concept by concept. The obvious example is the introductory tutorial from the originator of Python, Guido van Rossum. This is available in electronic form as the tutorial in your Python documentation or on-line or as hard copy, van Rossum and Drake Jr. (2011). It is relatively terse at 150 printed pages, and does not mention numpy. My favourite textbook, Lutz (2009) runs to over 1200 pages, a marathon learning curve, and only mentions numpy in passing. It is excellent at explaining the features in detail, but is too expansive for a first course in Python. A similar criticism can be applied to two books with a more scientific orientation, Langtangen (2008) and Langtangen (2009), both around 700 pages with a significant overlap between them. I recommend these various books among many others for reference, but not for learning the language.
Very few people would learn a foreign language by first mastering a grammar textbook and then memorizing a dictionary. Most start with a few rudiments of grammar and a tiny vocabulary. Then by practice they gradually extend their range of constructs and working vocabulary. This allows them to comprehend and speak the language very quickly, and it is the approach to learning Python that is being adopted here.
The most venerable and perhaps best-known scientific graphics package is Gnuplot, and downloads of this open-source project can be obtained from its website. The official documentation is Gnuplot Community (2012), some 238 pages, and a more descriptive introduction can be found in Janert (2010). Gnuplot is of course independent of Python. However, there is a numpy interface to it, which provides Python-like access to the most commonly used Gnuplot functions. This is available on line. Although most scientific Python implementations install the relevant code as a matter of course, the documentation and example files from this online source are useful. For many applications requiring two-dimensional graphics, the output from Gnuplot is satisfactory, but only at its best is it of publication quality. Here Matlab is, until recently, the market leader in this respect, but Python aims to equal or surpass it in quality and versatility.
The matplotlib project aims to produce Matlab-quality graphics as an add-on to numpy. Almost certainly, this should be part of your installation. It is installed by default in most Python packages designed for scientists. There is extensive “official documentation” (1255 pages) at Matplotlib Community (2013), and a useful alternative description in Tosi (2009). The reader is strongly urged to peruse the Matplotlib Gallery where a large collection of publication quality figures, and the code to generate them, is displayed.
We find all quadratic post-critically finite (PCF) rational functions defined over $\mathbb{Q}$, up to conjugation by elements of $\mathop{\rm PGL}_2(\overline{\mathbb{Q}})$. We describe an algorithm to search for possibly PCF functions. Using the algorithm, we eliminate all but 12 rational functions, all of which are verified to be PCF. We also give a complete description of all possible rational preperiodic structures for quadratic PCF functions defined over $\mathbb{Q}$.
This book traces a remarkable path of mathematical connections through seemingly disparate topics. Frustrations with a 1940's electro-mechanical computer at a premier research laboratory begin this story. Subsequent mathematical methods of encoding messages to ensure correctness when transmitted over noisy channels lead to discoveries of extremely efficient lattice packings of equal-radius balls, especially in 24-dimensional space. In turn, this highly symmetric lattice, with each point neighboring exactly 196,560 other points, suggested the possible presence of new simple groups as groups of symmetries. Indeed, new groups were found and are now part of the "Enormous Theorem" - the classification of all simple groups whose entire proof runs some 10,000+ pages. And these connections, along with the fascinating history and the proof of the simplicity of one of those "sporatic" simple groups, are presented at an undergraduate mathematical level.
A solid introduction to mathematical modeling for a range of chemical engineering applications, covering model formulation, simplification and validation. It explains how to describe a physical/chemical reality in mathematical language and how to select the type and degree of sophistication for a model. Model reduction and approximation methods are presented, including dimensional analysis, time constant analysis and asymptotic methods. An overview of solution methods for typical classes of models is given. As final steps in model building, parameter estimation and model validation and assessment are discussed. The reader is given hands-on experience of formulating new models, reducing the models and validating the models. The authors assume the knowledge of basic chemical engineering, in particular transport phenomena, as well as basic mathematics, statistics and programming. The accompanying problems, tutorials, and projects include model formulation at different levels, analysis, parameter estimation and numerical solution.
This paper proposes a new family of symmetric $4$-point ternary non-stationary subdivision schemes that can generate the limit curves of $C^3$ continuity. The continuity of this scheme is higher than the existing 4-point ternary approximating schemes. The proposed scheme has been developed using trigonometric B-spline basis functions and analyzed using the theory of asymptotic equivalence. It has the ability to reproduce or regenerate the conic sections, trigonometric polynomials and trigonometric splines as well. Some graphical and numerical examples are being considered, by choosing an appropriate tension parameter $0<\alpha <\pi /3 $, to show the usefulness of the proposed scheme. Moreover, the Hölder regularity and the reproduction property are also being calculated.
We address the problem of evaluating an $L$-function when only a small number of its Dirichlet coefficients are known. We use the approximate functional equation in a new way and find that it is possible to evaluate the $L$-function more precisely than one would expect from the standard approach. The method, however, requires considerably more computational effort to achieve a given accuracy than would be needed if more Dirichlet coefficients were available.
We construct an elliptic curve over the field of rational functions with torsion group $\mathbb{Z}/2\mathbb{Z}\times \mathbb{Z}/4\mathbb{Z}$ and rank equal to four, and an elliptic curve over $\mathbb{Q}$ with the same torsion group and rank nine. Both results improve previous records for ranks of curves of this torsion group. They are obtained by considering elliptic curves induced by Diophantine triples.
Boyd showed that the beta expansion of Salem numbers of degree 4 were always eventually periodic. Based on an heuristic argument, Boyd had conjectured that the same is true for Salem numbers of degree 6 but not for Salem numbers of degree 8. This paper examines Salem numbers of degree 8 and collects experimental evidence in support of Boyd’s conjecture.
We give a computationally effective criterion for determining whether a finite-index subgroup of $\mathrm{SL}_2(\mathbf{Z})$ is a congruence subgroup, extending earlier work of Hsu for subgroups of $\mathrm{PSL}_2(\mathbf{Z})$.
We study the radius of absolute monotonicity $R$ of rational functions with numerator and denominator of degree $s$ that approximate the exponential function to order $p$. Such functions arise in the application of implicit $s$-stage, order $p$ Runge–Kutta methods for initial value problems, and the radius of absolute monotonicity governs the numerical preservation of properties like positivity and maximum-norm contractivity. We construct a function with $p=2$ and $R>2s$, disproving a conjecture of van de Griend and Kraaijevanger. We determine the maximum attainable radius for functions in several one-parameter families of rational functions. Moreover, we prove earlier conjectured optimal radii in some families with two or three parameters via uniqueness arguments for systems of polynomial inequalities. Our results also prove the optimality of some strong stability preserving implicit and singly diagonally implicit Runge–Kutta methods. Whereas previous results in this area were primarily numerical, we give all constants as exact algebraic numbers.