|
| Login | Sign up | My Wish List |
![]() | C++ and Object-oriented Numeric Computing for Scientists and Engineers by Daoqi Yang ISBN-10: 0387989900 ISBN-10: 0-387-98990-0 ISBN-13: 9780387989907 ISBN-13: 978-0-387-98990-7 Hardcover 2000-10-23 Springer Find Lowest Price | |
Editorials | ||
Product Description This new text/reference presents an accessible, concise, but rather complete, introduction to the C++ programming language with special emphasis on object-oriented numeric computation for scientific and engineering program development. The description of the language is in compliance with ISO/ANSI standards and is platform independent for maximum versatility. Requiring only basic calculus and linear algebra as prerequisites, the book introduces concepts, techniques, and standard libraries of C++ in a manner that is easy to understand and uses such familiar examples as vectors, matrices, integrals, and complex numbers. It also contains an introduction to C++ programs for applications with many numberic methods that are fundamental to science and engineering computing: polynomial evaluation and interpolation; numeric integration; methods for solving nonlinear equations; systems of linear equations in full, band, and sparse matrix storage formats; and ordinary and partial differential equations. Numerous techniques and examples are provided on how to reduce (C and Fortran) run-time overhead and improve program efficiency. Topics and features: *concise coverage of C++ programming concepts with object-oriented emphasis*numerous examples, coding tools, sample programs and exercises for reinforcement and self-study purposes*develops and uses basic and advanced features, as well as standard libraries of C++*covers many fundamental numeric methods for scientific and engineering computing applications*downloadable user-defined numeric linear algebra library available from author web site With an accessible style, intuitive topic development, and numerous examples, the book is an excellent resource and guide to the power, versatility and efficiency of C++ programming for numeric computing applications. Advanced students, practitioners and professionals in computer science, engineering and scientific computing in general will find the book a practical guide and resource for their work and applications program development. | ||
Reviews | ||
A useful, if incomplete guide to the subject Yang's book on Numeric Computing is an interesting and useful book that caters to a very specific sort of person. It focuses on explaining how to use C++ syntax and structures as applied to numerical analysis. There are lots of well dissected examples for solving ODEs or working with matrices, and plenty of questions that cement in the concepts. On the C++ front, the book is far from comprehensive. There are many syntactical omissions that will force you to consult one of the big C++ bibles if you wish to write anything but the simplest of code. In the end the book is very good at what it does, which is to introduce the technical person to the basics of C++ in application to numeric computing. Be warned though, this is not a standalone instructional text. | ||
Great book for Scientists and Engineers I was required to read this book for a class, and am quite glad I did read it. It proviedes a very good introduction to C++ for those who aren't familiar with it. Even more importantly, however, are the great examples of how to use C++ for Numerical Methods, which makes it a good book for more experienced programmers as well. | ||
A good start for the non-specialist I used to write C and Fortran code for a living, using (although not necessarily as an expert) numerical methods to solve real-world problems. Like many, I have tried to catch up to C++ and OOPS to see what the fuss is about; like many "practical" people, I've been discouraged by the overhead burden of complexity that C++ introduces relative to C and procedural approaches. I am now using this book to teach myself the basics of C++, and can vouch that it helps the non-specialist who wants to learn a bit about both C++ and numerical methods. I agree with the reviewers that this book will teach you a lot more about C++ than about numeric computing (although the non-specialist like me will learn something there too.) This book has, to my mind, a number of virtues: 1) It helps a scientist/engineer understand WHY ON EARTH s/he would want to pay the price of additional complexity over C or Fortran for scientific/numeric applications. It does this through showing how such standard applied math tools as vectors, matrices, complex numbers etc can be more cleanly handled in C++, and showcases a number of the language's other key features (e.g. templates). 2) The problems are great...If you don't work the problems, I don't think you can learn much, but I have found nearly every problem instructive... even those that seem "plug and chug". Downloading the code from the website minimizes the tedium. 3) It is reasonably clear, (although could be better.) 4) By the end, you will have some code you can probably use as a base for your own developments... I have tried to learn C++ from other books, many of which are clearer and more accessible, but this is the only one that has helped me understand why, as an engineer, I should think about working in C++ rather than C. I agree that the book does not necessarily represent a fully "object oriented approach" to software design, but I'm not quite sure what that means anyway. If you are serious about C++, this will certainly not be the last book you read, but it will help you get up and running to the point where you WANT to know and do more, and you'll have fun writing code that works in the process. | ||
A brief introduction on this book from the author's own words This book intends to be an easy, concise, but rather complete introduction to the ISO/ANSI C++ language, with applications to object oriented numeric computation for students and professionals in science and engineering. It introduces concepts, techniques, and standard libraries of C++ in a manner that is easy to understand using examples such as vectors, matrices, complex numbers, and integrals, which are familiar and useful to a typical student or professonal in science and engineering. Besides introducing basic and advanced features of C++, the book contains an introduction and C++ programs for many numeric methods such as polynomial interpolation, numerical integration, direct and iterative algorithms for solving systems of linear equations in real and complex domains, methods for solving nonlinear equations, ordinary and partial differential equations with real and complex coefficients. These methods are fundamental in scientific and engineering computing. This book gives numerous examples and techniques on how to reduce (C and Fortran style) run-time overhead and improve program efficiency and elegancy. Such techniques include function objects, deferred evaluation for operator overloading, expression templates, template metaprograms, and replacing certain virtual functions by templates. It also introduces tools on how to manage source files, create libraries, and debug and profile programs. The book can be used as a textbook for students in science and engineering and a reference book for experienced scientific C++ programmers. -------------------------------------------------------------------------------- C++, What a Programming Language Should Be! C++'s object oriented and general programming features enable the programmer to write few codes and support an evolving process of code development. For example, One version of C++ program of preconditioned conjugate gradient and GMRES methods can be used for full (storing every entry of a matrix), banded (zero entries outside of a band along the main diagonal are not stored to save memory), and sparse (only non-zero entries of a matrix are stroed to save memory) matrices, and for real and complex single, double, long double precisions. It would require 18 versions in Fortran 77 or Fortan 90. Six versions of C code may do it, but will be much less efficient. If one later decides to add a symmetric (only store lower triangular part of a matrix to save memory) matrix storage format, then 6 more versions of Fortan code (for real, complex, and single, double, long double precisions) need be added. The same C++ program for conjugat gradient and GMRES methods still can handle this situation without any change. C++ code of preconditioned conjugat gradient and GMRES methods are given in Chapter 11 (last chapter) of the book, which work for full, banded, sparse, and other matrices in real and complex domains. C++ has features (compound assignment operators, templates, function objects, high performance computing library such as valarray) that can be faster than Fortran 77 and C. For example, passing a pointer to a function as an argument to another function can be avoided in many C++ programs by using templates, which can improve the speed of execution by a factor of 2 on many compilers and machines. Running time comparisons with C and Fortran style function passing are done in various places of the book. C++ provides standard libraries on data structures such as vector, set, list, map, stack, queue, valarray, and on algorithms such as sort() and find(). They come with any standard C++ compiler and can be much more efficient, convenient, and portable than codes written a typical or expert programmer. For example, using these libraries, it is much easier to write finite element programs on unstructured grids and grid generation programs in C++ than in Fortran and C. A disussion of these standard libraries and algorithms are given in various chapters of the book. C++ programs resemble numerical algorithms more than in Fortran or C. For exmaple, we can write v = v1 + v2 for vector addition and v1 = m*v2 for (sparse, banded, or full) matrix-vector multiplication. The C++ code for the conjugate gradient method (for solving linear systems of algebraic equations) looks very much like the algorithm, which enhances readibility and maintainability. Besides, such operator overloading from built-in types to user-defined types can be done without sacrifice of run-time speed (see Chapter 6 of the book). | ||
Great book This book is like no one I've ever get on before. I've got a bunch of C++ books, but this one is like a C++ Bible to me. Written in a clear easy-to understand English, it gives great deal of tips to C++ lover like me, and at all level of programming experience. Great job to Dr. Yang | ||