Home / Help

Author Sรฉroul, Raymond. author Programming for Mathematicians [electronic resource] / by Raymond Sรฉroul Berlin, Heidelberg : Springer Berlin Heidelberg : Imprint: Springer, 2000 http://dx.doi.org/10.1007/978-3-642-57129-9 XVI, 432 p. 8 illus. online resource

SUMMARY

The aim of this book is to teach mathematics students how to program using their knowledge of mathematics. For this they require only to know how to construct a proof. The entire book's emphasis is on "how to think" when programming. Three methods for constructing an algorithm or a program are used: a) manipulation and enrichment of existing code; b) use of recurrent sequences; c) deferral of code writing, in order to deal with one difficulty at a time. Many theorems are mathematically proved and programmed. The last chapter explains how a compiler works and shows how to compile "by hand" little (but not trivial--even recursive) programs. The book is intended for anyone who thinks mathematically and wants to program and play with mathematics

CONTENT

1. Programming Proverbs -- 1.1. Above all, no tricks! -- 1.2. Do not chewing gum while climbing stairs -- 1.3. Name that which you still donโ{128}{153}t know -- 1.4. Tomorrow, things will be better; the day after, better still -- 1.5. Never execute an order before it is given -- 1.6. Document today to avoid tears tomorrow -- 1.7. Descartesโ{128}{153} Discourse on the Method -- 2. Review of Arithmetic -- 2.1. Euclidean Division -- 2.2. Numeration Systems -- 2.3. Prime Numbers -- 2.3.1. The number of primes smaller than a given real number -- 2.4. The Greatest Common Divisor -- 2.5. Congruences -- 2.6. The Chinese Remainder Theorem -- 2.7. The Euler phi Function -- 2.8. The Theorems of Fermat and Euler -- 2.9. Wilsonโ{128}{153}s Theorem -- 2.10. Quadratic Residues -- 2.11. Prime Number and Sum of Two Squares -- 2.12. The Moebius Function -- 2.13. The Fibonacci Numbers -- 2.14. Reasoning by Induction -- 2.15. Solutions of the Exercises -- 3. An Algorithmic Description Language -- 3.1. Identifiers -- 3.2. Arithmetic Expressions -- 3.3. Boolean Expressions -- 3.4. Statements and their Syntax -- 3.5. The Semantics of Statements -- 3.6. Which Loop to Choose? -- 4. How to Create an Algorithm -- 4.1. The Trace of an Algorithm -- 4.2. First Method: Recycling Known Code -- 4.3. Second Method: Using Sequences -- 4.4. Third Method: Defered Writing -- 4.5. How to Prove an Algorithm -- 4.6. Solutions of the Exercises -- 5. Algorithms and Classical Constructions -- 5.1. Exchanging the Contents of Two Variables -- 5.2. Diverse Sums -- 5.3. Searching for a Maximum -- 5.4. Solving a Triangular Cramer System -- 5.5. Rapid Calculation of Powers -- 5.6. Calculation of the Fibonacci Numbers -- 5.7. The Notion of a Stack -- 5.8. Linear Traversal of a Finite Set -- 5.9. The Lexicographic Order -- 5.10. Solutions to the Exercises -- 6. The Pascal Language -- 6.1. Storage of the Usual Objects -- 6.2. Integer Arithmetic in Pascal -- 6.3. Arrays in Pascal -- 6.4. Declaration of an Array -- 6.5. Product Sets and Types -- 6.6. The Role of Constants -- 6.7. Litter -- 6.8. Procedures -- 6.9. Visibility of the Variables in a Procedure -- 6.10. Context Effects -- 6.11. Procedures: What the Program Seems To Do -- 6.12. Solutions of the Exercises -- 7. How to Write a Program -- 7.1. Inverse of an Order 4 Matrix -- 7.2. Characteristic Polynomial of a Matrix -- 7.3. How to Write a Program -- 7.4. A Poorly Written Procedure -- 8. The Integers -- 8.1. The Euclidean Algorithm -- 8.2. The Blankinship Algorithm -- 8.3. Perfect Numbers -- 8.4. The Lowest Divisor Function -- 8.5. The Moebius Function -- 8.6. The Sieve of Eratosthenes -- 8.7. The Function pi(x) -- 8.8. Egyptian Fractions -- 8.9. Operations on Large Integers -- 8.10. Division in Base b -- 8.11. Sums of Fibonacci Numbers -- 8.12. Odd Primes as a Sum of Two Squares -- 8.13. Sums of Four Squares -- 8.14. Highly Composite Numbers -- 8.15. Permutations: Johnsonโ{128}{153}sโ{128}{153} Algorithm -- 8.16. The Count is Good -- 9. The Complex Numbers -- 9.1. The Gaussian Integers -- 9.2. Bases of Numeration in the Gaussian Integers -- 9.3. Machin Formulas -- 10. Polynomials -- 10.1. Definitions -- 10.2. Degree of a Polynomial -- 10.3. How to Store a Polynomial -- 10.4. The Conventions we Adopt -- 10.5. Euclidean Division -- 10.6. Evaluation of Polynomials: Hornerโ{128}{153}s Method -- 10.7. Translation and Composition -- 10.8. Cyclotomic Polynomials -- 10.9. Lagrange Interpolation -- 10.10. Basis Change -- 10.11. Differentiation and Discrete Taylor Formulas -- 10.12. Newton-Girard Formulas -- 10.13. Stable Polynomials -- 10.14. Factoring a Polynomial with Integral Coefficients -- 11. Matrices -- 11.1. Z-Linear Algebra -- 11.2. Linear Systems with Integral Coefficients -- 11.3. Exponential of a Matrix: Putzerโ{128}{153}s Algorithm -- 11.4. Jordan Reduction -- 12. Recursion -- 12.1. Presentation -- 12.2. The Ackermann function -- 12.3. The Towers of Hanoi -- 12.4. Baguenaudier -- 12.5. The Hofstadter Function -- 12.6. How to Write a Recursive Code -- 13. Elements of compiler theory -- 13.1. Pseudocode -- 13.2. A Pseudocode Interpreter -- 13.3. How to Analyze an Arithmetic Expression -- 13.4. How to Evaluate an Arithmetic Expression -- 13.5. How to Compile an Arithmetic Expression -- References

Mathematics Software engineering Computer programming Applied mathematics Engineering mathematics Computer mathematics Mathematics Applications of Mathematics Software Engineering/Programming and Operating Systems Computational Mathematics and Numerical Analysis Programming Techniques

Location

Office of Academic Resources, Chulalongkorn University, Phayathai Rd. Pathumwan Bangkok 10330 Thailand