A First Course in Scientific Computing

Book Description

This book offers a new approach to introductory scientific computing. It aims to make students comfortable using computers to do science, to provide them with the computational tools and knowledge they need throughout their college careers and into their professional careers, and to show how all the pieces can work together. Rubin Landau introduces the requisite mathematics and computer science in the course of realistic problems, from energy use to the building of skyscrapers to projectile motion with drag. He is attentive to how each discipline uses its own language to describe the same concepts and how computations are concrete instances of the abstract.


Landau covers the basics of computation, numerical analysis, and programming from a computational science perspective. The first part of the printed book uses the problem-solving environment Maple as its context, with the same material covered on the accompanying CD as both Maple and Mathematica programs; the second part uses the compiled language Java, with equivalent materials in Fortran90 on the CD; and the final part presents an introduction to LaTeX replete with sample files.


Providing the essentials of computing, with practical examples, A First Course in Scientific Computing adheres to the principle that science and engineering students learn computation best while sitting in front of a computer, book in hand, in trial-and-error mode. Not only is it an invaluable learning text and an essential reference for students of mathematics, engineering, physics, and other sciences, but it is also a consummate model for future textbooks in computational science and engineering courses.


  • A broad spectrum of computing tools and examples that can be used throughout an academic career

  • Practical computing aimed at solving realistic problems

  • Both symbolic and numerical computations

  • A multidisciplinary approach: science + math + computer science

  • Maple and Java in the book itself; Mathematica, Fortran90, Maple and Java on the accompanying CD in an interactive workbook format

Table of Contents

  1. Cover
  2. Title
  3. Copyright
  4. Contents
  5. List of Figures
  6. List of Tables
  7. Preface
  8. Chapter 1. Introduction
    1. 1.1 Nature of Scientific Computing
    2. 1.2 Talking to Computers
    3. 1.3 Instructional Guide
    4. 1.4 Exercises to Come Back To
  9. PART 1. MAPLE (OR MATHEMATICA) BY DOING
    1. Chapter 2. Getting Started with Maple
      1. 2.1 Setting Up Your Work Space
      2. 2.2 Maple’s Problem-Solving Environment
      3. 2.3 Maple’s Command Structure
      4. 2.4 Sums and sums
      5. 2.5 Execution Groups
      6. 2.6 Key Words and Concepts
      7. 2.7 Supplementary Exercises
    2. Chapter 3. Numbers, Expressions, Functions; Rocket Golf
      1. 3.1 Problem: Viewing Rocket Golf
      2. 3.2 Theory: Einstein’s Special Relativity
      3. 3.3 Math: Integer, Rational and Irrational Numbers
      4. 3.4 CS: Floating-Point Numbers
      5. 3.5 Complex Numbers
      6. 3.6 Expressions
      7. 3.7 Assignment Statements
      8. 3.8 Equality (rhs, lhs)
      9. 3.9 Functions
      10. 3.10 User-Defined Functions
      11. 3.11 Reexpressing Answers
      12. 3.12 CS: Overflow, Underflow, and Round-Off Error
      13. 3.13 Solution: Viewing Rocket Golf
      14. 3.14 Extension: Tachyons*
      15. 3.15 Key Words and Concepts
      16. 3.16 Supplementary Exercises
    3. Chapter 4. Visualizing Data, Abstract Types; Electric Fields
      1. 4.1 Why Visualization?
      2. 4.2 Problem: Stable Points in Electric Fields
      3. 4.3 Theory: Stability Criteria and Potential Energy
      4. 4.4 Basic 2-D Plots: plot
      5. 4.5 Compound (Abstract) Data Types: [Lists] and {Sets}
      6. 4.6 3-D (Surface) Plots of Analytic Functions
      7. 4.7 Solution: Dipole and Quadrupole Fields
      8. 4.8 Exploration: The Tripole
      9. 4.9 Extension: Yet More Plot Types*
      10. 4.10 Visualizing Numerical Data
      11. 4.11 Plotting a Matrix: matrixplot*
      12. 4.12 Animations of Data*
      13. 4.13 Key Words and Concepts
      14. 4.14 Supplementary Exercises
    4. Chapter 5. Solving Equations, Differentiation; Towers
      1. 5.1 Problem: Maximum Height of a Tower
      2. 5.2 Model: Block Stacking
      3. 5.3 Math: Equations as Challenges
      4. 5.4 Solving a Single Equation: solve, fsolve
      5. 5.5 Solving Simultaneous Equations (Sets)
      6. 5.6 Solution to Tower Problem
      7. 5.7 Differentiation: limit, diff, D
      8. 5.8 Numerical Derivatives*
      9. 5.9 Alternate Solution: Maximum Tower Height
      10. 5.10 Assessment and Exploration
      11. 5.11 Auxiliary Problem: Nonlinear Oscillations
      12. 5.12 Key Words and Concepts
      13. 5.13 Supplementary Exercises
    5. Chapter 6. Integration; Power and Energy Usage (Also 14)
      1. 6.1 Problem: Relating Power and Energy Usage
      2. 6.2 Empirical Models
      3. 6.3 Theory: Power and Energy Definitions
      4. 6.4 Maple: Tools for Integration
      5. 6.5 Problem Solution: Energy from Power
      6. 6.6 Key Words and Concepts
      7. 6.7 Supplementary Exercises
    6. Chapter 7. Matrices and Vectors; Rotation
      1. 7.1 Problem: Rigid-Body Rotation
      2. 7.2 Math: Vectors and Matrices
      3. 7.3 Theory: Angular Momentum Dynamics
      4. 7.4 Maple: Linear Algebra Tools
      5. 7.5 Matrix Arithmetic and Operations
      6. 7.6 Solution: Rotating Rigid Bodies
      7. 7.7 Exploration: Principal Axes of Rotation*
      8. 7.8 Key Words and Concepts
      9. 7.9 Supplementary Exercises
    7. Chapter 8. Searching, Programming; Dipsticks
      1. 8.1 Problem: Volume of Liquid in Spherical Tanks
      2. 8.2 Math: Volume Integration
      3. 8.3 Algorithm: Bisection Searches
      4. 8.4 Programming in Maple
      5. 8.5 Solution: Volume from Dipstick Height
      6. 8.6 Key Words and Concepts
      7. 8.7 Supplementary Exercises
  10. PART 2. JAVA (OR FORTRAN90) BY DOING
    1. Chapter 9. Getting Started with Java
      1. 9.1 Compiled Languages
      2. 9.2 Java Program Pieces
      3. 9.3 Entering and Running Your First Program
      4. 9.4 Looking Inside Area.java
      5. 9.5 Key Words
      6. 9.6 Supplementary Exercises
    2. Chapter 10. Data Types, Limits, Methods; Rocket Golf
      1. 10.1 Problem and Theory (Same as Chapter 3)
      2. 10.2 Java’s Primitive Data Types
      3. 10.3 Methods (Functions) and Modular Programming
      4. 10.4 Solution: Viewing Rocket Golf
      5. 10.5 Your Problem: Modify Golf.java
      6. 10.6 Coercion and Overloading*
      7. 10.7 Key Words
      8. 10.8 Supplementary Exercises
    3. Chapter 11. Visualization with Java, Classes, Packages
      1. 11.1 2-D Graphs within Java: PtPlot
      2. 11.2 Installing PtPlot: See Appendix C*
      3. 11.3 Classes and Packages*
      4. 11.4 Gnuplot Basics
      5. 11.5 Java Archives: jar*
    4. Chapter 12. Flow Control via Logic; Projectiles
      1. 12.1 Problem: Frictionless Projectile Motion
      2. 12.2 Theory: Kinematics
      3. 12.3 Computer Science: Designing Structured Programs
      4. 12.4 Flow Control via Logic
      5. 12.5 Implementation: Projectile.java
      6. 12.6 Solution: Projectile Trajectories
      7. 12.7 Key Words
      8. 12.8 Supplementary Exercises
    5. Chapter 13. Java Input and Output*
      1. 13.1 Basic Input with Scanner
      2. 13.2 Streams: Standard Output, Input, and Error
      3. 13.3 I/O Exceptions: FileCatchThrow.java
      4. 13.4 Automatic Code Documentation: javadoc
      5. 13.5 Nonstandard Formatted Output: printf
    6. Chapter 14. Numerical Integration; Power and Energy Usage
      1. 14.1 Problem (Same as Chapter 6): Power and Energy
      2. 14.2 Algorithms: Trapezoid and Simpson’s Rules
      3. 14.3 Assessment: Which Rule Is Better?
      4. 14.4 Key Words and Concepts
      5. 14.5 Supplementary Exercises
    7. Chapter 15. Differential Equations with Java and Maple*
      1. 15.1 Problem: Projectile Motion with Drag
      2. 15.2 Model: Velocity-Dependent Drag
      3. 15.3 Algorithm: Numerical Differentiation
      4. 15.4 Math: Solving Differential Equations
      5. 15.5 Assessment: Balls Falling Out of the Sky?
      6. 15.6 Maple: Differential-Equation Tools
      7. 15.7 Maple Solution: Drag ∝ Velocity
      8. 15.8 Extract Operands
      9. 15.9 Drag ∝v2 (Exercise)
      10. 15.10 Drag ∝v3/2
      11. 15.11 Exploration: Planetary Motion*
      12. 15.12 Key Words
      13. 15.13 Supplementary Exercises
    8. Chapter 16. Object-Oriented Programming; Complex Currents
      1. 16.1 Problem: Resonance in RLC Circuit
      2. 16.2 Math: Complex Numbers
      3. 16.3 Theory: Resistance Becomes Impedance
      4. 16.4 CS: Abstract Data Types, Objects
      5. 16.5 Java Solution: Complex Currents
      6. 16.6 Maple Solution: Complex Currents
      7. 16.7 Explorations: OOP Worked Examples*
      8. 16.8 Key Words
      9. 16.9 Java and Maple Exercises
    9. Chapter 17. Arrays: Vectors, Matrices; Rigid-Body Rotations
      1. 17.1 Problem: Rigid-Body Rotations
      2. 17.2 Theory: Angular-Momentum Dynamics
      3. 17.3 CS, Math: Arrays, Vectors, and Matrices
      4. 17.4 Implementation: Inertia.java, Inertia3D.java
      5. 17.5 Jama: Java Matrix Library*
      6. 17.6 Key Words
      7. 17.7 Supplementary Exercises
    10. Chapter 18. Advanced Objects; Baton Projectiles*
      1. 18.1 Problem: Trajectory of Thrown Baton
      2. 18.2 Theory: Combined Translation and Rotation
      3. 18.3 CS: OOP Design Concepts
      4. 18.4 Key Words
      5. 18.5 Supplementary Exercises
    11. Chapter 19. Discrete Math, Arrays as Bins; Bug Dynamics*
      1. 19.1 Problem: Variability of Bug Populations
      2. 19.2 Theory: Self-Limiting Growth, Discrete Maps
      3. 19.3 Assessment: Properties of Nonlinear Maps
      4. 19.4 Exploration: Bifurcation Diagram, BugSort.java*
      5. 19.5 Exploration: Other Discrete Maps*
    12. Chapter 20. 2-D Arrays: File I/O, PDEs; Realistic Capacitor
      1. 20.1 Problem: Field of Realistic Capacitor
      2. 20.2 Theory and Model: Electrostatics and PDEs
      3. 20.3 Algorithm: Finite Differences
      4. 20.4 Implementation: Laplace.java
      5. 20.5 Exploration: 2-D Capacitor
      6. 20.6 Exploration: 3-D Capacitor*
      7. 20.7 Key Words
    13. Chapter 21. Web Computing, Applets, Primitive Graphics
      1. 21.1 What Is Web Computing?
      2. 21.2 Implementation: Get This to Work First
      3. 21.3 Exploration: Modify Applet1.java
      4. 21.4 Extension: PtPlot as Applet*
      5. 21.5 Extension: Applet with Button Input*
      6. 21.6 Extension: AWT, JFC, and Swing*
      7. 21.7 Example: Baton Applet, Jparabola.java*
      8. 21.8 Key Words
      9. 21.9 Supplementary Exercises
  11. PART 3. LATEX SURVIVAL GUIDE
    1. Chapter 22. LATEX for Text
      1. 22.1 Why LATEX?
      2. 22.2 Structure of a LATEX Document
      3. 22.3 Sample Input File (Sample.tex)
      4. 22.4 Sample LATEX Output
      5. 22.5 Fonts for Text
      6. 22.6 Environments
      7. 22.7 Lists
      8. 22.8 Sections
    2. Chapter 23. LAT X for Mathematics E
      1. 23.1 Entering Mathematics: Math Mode
      2. 23.2 Mathematical Symbols and Greek
      3. 23.3 Math Accents
      4. 23.4 Superscripts and Subscripts
      5. 23.5 Calculus and Sums
      6. 23.6 Changing Math Fonts
      7. 23.7 Math Functions
      8. 23.8 Fractions
      9. 23.9 Roots
      10. 23.10 Brackets (Delimiters)
      11. 23.11 Multiline Equations
      12. 23.12 Matrices and Math Arrays
      13. 23.13 Including Graphics
      14. 23.14 Exercise: Putting It All Together
  12. Appendix A. Glossary
  13. Appendix B. Maple Quick Reference, Debugging Help
  14. Appendix C. Java Quick Reference and Installing Software
    1. C.1 Java Elements
    2. C.2 Transferring Files from the CD
    3. C.3 Using our Maple Worksheets
    4. C.4 Using our Java Programs
    5. C.5 Installing PtPlot (or Other) Packages
    6. C.6 Installing Java Developer’s Kit
  15. Bibliography
  16. Index

Product Information

  • Title: A First Course in Scientific Computing
  • Author(s): Rubin H. Landau
  • Release date: October 2011
  • Publisher(s): Princeton University Press
  • ISBN: 9781400841172