Available:*
Library | Item Barcode | Call Number | Material Type | Item Category 1 | Status |
---|---|---|---|---|---|
Searching... | 30000010343224 | QC52 B48 2015 | Open Access Book | Book | Searching... |
On Order
Summary
Summary
Makes Numerical Programming More Accessible to a Wider Audience
Bearing in mind the evolution of modern programming, most specifically emergent programming languages that reflect modern practice, Numerical Programming: A Practical Guide for Scientists and Engineers Using Python and C/C++ utilizes the author's many years of practical research and teaching experience to offer a systematic approach to relevant programming concepts. Adopting a practical, broad appeal, this user-friendly book offers guidance to anyone interested in using numerical programming to solve science and engineering problems. Emphasizing methods generally used in physics and engineering--from elementary methods to complex algorithms--it gradually incorporates algorithmic elements with increasing complexity.
Develop a Combination of Theoretical Knowledge, Efficient Analysis Skills, and Code Design Know-How
The book encourages algorithmic thinking, which is essential to numerical analysis. Establishing the fundamental numerical methods, application numerical behavior and graphical output needed to foster algorithmic reasoning, coding dexterity, and a scientific programming style, it enables readers to successfully navigate relevant algorithms, understand coding design, and develop efficient programming skills. The book incorporates real code, and includes examples and problem sets to assist in hands-on learning.
Begins with an overview on approximate numbers and programming in Python and C/C++, followed by discussion of basic sorting and indexing methods, as well as portable graphic functionality Contains methods for function evaluation, solving algebraic and transcendental equations, systems of linear algebraic equations, ordinary differential equations, and eigenvalue problems Addresses approximation of tabulated functions, regression, integration of one- and multi-dimensional functions by classical and Gaussian quadratures, Monte Carlo integration techniques, generation of random variables, discretization methods for ordinary and partial differential equations, and stability analysisThis text introduces platform-independent numerical programming using Python and C/C++, and appeals to advanced undergraduate and graduate students in natural sciences and engineering, researchers involved in scientific computing, and engineers carrying out applicative calculations.
Author Notes
Titus Adrian Beu, professor of theoretical and computational physics at the University "Babes-Bolyai" from Cluj-Napoca, Romania, has been active in the broader field of computational physics for more than 30 years. His research topics have evolved from Tokamak plasma and nuclear reactor calculations in the 1980s, collision theory and molecular cluster spectroscopy in the 1990s, to fullerenes and nanofluidics simulations in recent years. Development of ample computer codes has been at the core of all research projects the author has conducted. In parallel, he has lectured on general programming techniques and advanced numerical methods, general simulation methods, and advanced molecular dynamics.
Table of Contents
Series Preface | p. xi |
Preface | p. xiii |
Author | p. xvii |
Acknowledgments | p. xix |
1 Approximate Numbers | p. 1 |
1.1 Sources of Errors in Numerical Calculations | p. 1 |
1.2 Absolute and Relative Errors | p. 2 |
1.3 Representation of Numbers | p. 4 |
1.4 Significant Digits | p. 5 |
1.5 Errors of Elementary Operations | p. 7 |
References and Suggested Further Reading | p. 10 |
2 Basic Programming Techniques | p. 11 |
2.1 Programming Concepts | p. 11 |
2.2 Functions and Parameters | p. 12 |
2.3 Passing Arguments to Python Functions | p. 15 |
2.4 Passing Arguments to C/C++ Functions | p. 17 |
2.5 Arrays in Python | p. 19 |
2.6 Dynamic Array Allocation in C/C++ | p. 19 |
2.7 Basic Matrix Operations | p. 24 |
References and Suggested Further Reading | p. 30 |
3 Elements of Scientific Graphics | p. 31 |
3.1 The Tkinter Package | p. 31 |
3.2 The Canvas Widget | p. 32 |
3.3 Simple Tkinter Applications | p. 35 |
3.4 Plotting Functions of One Variable | p. 39 |
3.5 Graphics Library graphlib.py | p. 44 |
3.6 Creating Plots in C++ Using the Library graphlib.py | p. 57 |
References and Suggested Further Reading | p. 61 |
4 Sorting and Indexing | p. 63 |
4.1 Introduction | p. 63 |
4.2 Bubble Sort | p. 64 |
4.3 Insertion Sort | p. 66 |
4.4 Quicksort | p. 70 |
4.5 Indexing and Ranking | p. 71 |
4.6 Implementations in C/C++ | p. 75 |
4.7 Problems | p. 78 |
References and Suggested Further Reading | p. 84 |
5 Evaluation of Functions | p. 85 |
5.1 Evaluation of Polynomials by Horner's Scheme | p. 85 |
5.2 Evaluation of Analytic Functions | p. 88 |
5.3 Continued Fractions | p. 91 |
5.4 Orthogonal Polynomials | p. 94 |
5.5 Spherical Harmonics-Associated Legendre Functions | p. 98 |
5.6 Spherical Bessel Functions | p. 102 |
5.7 Implementations in C/C++ | p. 105 |
5.8 Problems | p. 113 |
References and Suggested Further Reading | p. 125 |
6 Algebraic and Transcendental Equations | p. 127 |
6.1 Root Separation | p. 127 |
6.2 Bisection Method | p. 129 |
6.3 Method of False Position | p. 132 |
6.4 Method of Successive Approximations | p. 134 |
6.5 Newton's Method | p. 139 |
6.6 Secant Method | p. 142 |
6.7 Birge-Vieta Method | p. 144 |
6.8 Newton's Method for Systems of Nonlinear Equations | p. 147 |
6.9 Implementations in C/C++ | p. 151 |
6.10 Problems | p. 157 |
References and Suggested Further Reading | p. 168 |
7 Systems of Linear Equations | p. 169 |
7.1 Introduction | p. 169 |
7.2 Gaussian Elimination with Backward Substitution | p. 169 |
7.3 Gauss-Jordan Elimination | p. 179 |
7.4 LU Factorization | p. 187 |
7.5 Inversion of Triangular Matrices | p. 195 |
7.6 Cholesky Factorization | p. 197 |
7.7 Tridiagonal Systems of Linear Equations | p. 203 |
7.8 Block Tridiagonal Systems of Linear Equations | p. 207 |
7.9 Complex Matrix Equations | p. 208 |
7.10 Jacobi and Gauss-Seidel Iterative Methods | p. 209 |
7.11 Implementations in C/C++ | p. 213 |
7.12 Problems | p. 223 |
References and Suggested Further Reading | p. 231 |
8 Eigenvalue Problems | p. 233 |
8.1 Introduction | p. 233 |
8.2 Diagonalization of Matrices by Similarity Transformations | p. 234 |
8.3 Jacobi Method | p. 235 |
8.4 Generalized Eigenvalue Problems for Symmetric Matrices | p. 243 |
8.5 Implementations in C/C++ | p. 246 |
8.6 Problems | p. 249 |
References and Suggested Further Reading | p. 264 |
9 Modeling of Tabulated Functions | p. 265 |
9.1 Interpolation and Regression | p. 265 |
9.2 Lagrange Interpolation Polynomial | p. 268 |
9.3 Neville's Interpolation Method | p. 273 |
9.4 Cubic Spline Interpolation | p. 276 |
9.5 Linear Regression | p. 283 |
9.6 Multilinear Regression Models | p. 287 |
9.7 Nonlinear Regression: The Levenberg-Marquardt Method | p. 293 |
9.8 Implementations in C/C++ | p. 301 |
9.9 Problems | p. 309 |
References and Suggested Further Reading | p. 331 |
10 Integration of Functions | p. 333 |
10.1 Introduction | p. 333 |
10.2 Trapezoidal Rule; A Heuristic Approach | p. 333 |
10.3 The Newton-Cotes Quadrature Formulas | p. 335 |
10.4 Trapezoidal Rule | p. 337 |
10.5 Simpson's Rule | p. 339 |
10.6 Adaptive Quadrature Methods | p. 341 |
10.7 Romberg's Method | p. 344 |
10.8 Improper Integrals: Open Formulas | p. 348 |
10.9 Midpoint Rule | p. 352 |
10.10 Gaussian Quadratures | p. 354 |
10.11 Multidimensional Integration | p. 361 |
10.12 Adaptive Multidimensional Integration | p. 369 |
10.13 Implementations in C/C++ | p. 372 |
10.14 Problems | p. 384 |
References and Suggested Further Reading | p. 393 |
11 Monte Carlo Method | p. 395 |
11.1 Introduction | p. 395 |
11.2 Integration of Functions | p. 396 |
11.3 Importance Sampling | p. 399 |
11.4 Multidimensional Integrals | p. 402 |
11.5 Generation of Random Numbers | p. 408 |
11.6 Implementations in C/C++ | p. 415 |
11.7 Problems | p. 417 |
References and Suggested Further Reading | p. 426 |
12 Ordinary Differential Equations | p. 427 |
12.1 Introduction | p. 427 |
12.2 Taylor Series Method | p. 429 |
12.3 Euler's Method | p. 431 |
12.4 Runge-Kutta Methods | p. 434 |
12.5 Adaptive Step Size Control | p. 440 |
12.6 Methods for Second-Order ODEs | p. 447 |
12.7 Numerov's Method | p. 454 |
12.8 Shooting Methods for Two-Point Problems | p. 457 |
12.9 Finite-Difference Methods for Linear Two-Point Problems | p. 466 |
12.10 Implementations in C/C++ | p. 471 |
12.11 Problems | p. 481 |
References and Suggested Further Reading | p. 507 |
13 Partial Differential Equations | p. 509 |
13.1 Introduction | p. 509 |
13.2 Boundary-Value Problems for Elliptic Differential Equations | p. 511 |
13.3 Initial-Value Problems for Parabolic Differential Equations | p. 525 |
13.4 Time-Dependent Schrodinger Equation | p. 542 |
13.5 Initial-Value Problems for Hyperbolic Differential Equations | p. 553 |
13.6 Implementations in C/C++ | p. 559 |
13.7 Problems | p. 567 |
References and Suggested Further Reading | p. 585 |
Appendix A Dynamic Array Allocation in C/C++ | p. 587 |
Appendix B Basic Operations with Vectors and Matrices | p. 591 |
Appendix C Embedding Python in C/C++ | p. 599 |
Appendix D The Numerical Libraries numxlib.py and numxlib. h | p. 605 |
Appendix E The Graphics Library graphlib.py Based on Tkinter | p. 611 |
Appendix F The C++ Interface to the Graphics Library graphlib.py | p. 627 |
Appendix G List of Programs by Chapter | p. 637 |
Index | p. 641 |