Practical guide to computer simulations
Computer simulations
Hartmann, Alexander K.
creator
text
bibliography
nju
Hackensack, NJ
World Scientific
c2009
2009
monographic
eng
xiii, 368 p. : ill. ; 24 cm. + 1 CD-ROM (4 3/4 in.).
"This book presents all the computational techniques and tools needed to start doing scientific research using computer simulations. After working through this book, the reader will possess the necessary basic background knowledge, from program design, programming in C, fundamental algorithms and data structures, random numbers, and debugging, all the way to data analysis, presentation and publishing. In each of these fields, no preliminary knowledge is assumed. The reader will be equipped to successfully perform complete projects from the first idea until the final publication. All techniques are explained using many examples in C; these C codes, as well as the solutions to exercises, are readily available on the CD enclosed with this book. The techniques in this book are independent of the fields of research, and hence they are suitable for conducting research projects in physics, chemistry, computer science, biology and engineering. This also means that no problem-dependent algorithms are introduced; therefore, this book does not explain molecular dynamics, Monte Carlo, finite elements and other special-purpose techniques, which would be beyond the scope of a general-purpose book. There has been no similar comprehensive book written so far. Currently, one needs many different books to learn all the necessary elements. With this book, however, one basically needs only a second book on field-specific algorithms in order to be fully equipped to perform computer simulations research."--Publisher's description.
1 Programming in C -- 1.1 Basic C programs -- 1.1.1 Basic data types -- 1.1.2 Artithmetic expressions -- 1.1.3 Control statements -- 1.1.4 Complex data types -- 1.2 Functions -- 1.3 Input/output -- 1.4 Pointers and dynamic memory management -- 1.5 Important C compiler options -- 1.6 Preprocessor directives and macros -- 1.7 Make files -- 1.8 Scripts -- 2 Software Engineering -- 2.1 How to manage a (simulation) project -- 2.1.1 Definition of the problem and solution strategies -- 2.1.2 Designing data structures -- 2.1.3 Defining small tasks -- 2.1.4 Distributing work -- 2.1.5 Implementing the code -- 2.1.6 Testing -- 2.1.7 Writing documentation -- 2.1.8 Using the code -- 2.2 Programming style -- 2.3 Version management with subversion -- 3 Object-oriented Software Development -- 3.1 Object-orientation principles -- 3.2 A sample using C -- 3.3 Introduction to C++ and an example -- 4 Algorithms and Data Structures -- 4.1 Notation -- 4.2 Iteration and recursion -- 4.3 Divide-and-conquer approach -- 4.4 Dynamic programming -- 4.5 Backtracking -- 4.6 Lists -- 4.7 Trees -- 4.7.1 Heaps -- 4.8 Graphs --
5 Debugging and Testing -- 5.1 gdb 183 -- 5.2 ddd -- 5.3 Memory checker -- 5.4 Profiling with gprof -- 6 Libraries -- 6.1 Standard C library -- 6.2 Standard Template Library -- 6.3 GNU scientific library -- 6.4 Creating your own libraries -- 7 Randomness and Statistics -- 7.1 Introduction to probability -- 7.1.1 Discrete random variables -- 7.1.2 Continuous random variables -- 7.2 Generating (pseudo) random numbers -- 7.2.1 Uniform (pseudo) random numbers -- 7.2.2 Discrete random variables -- 7.2.3 Inversion method -- 7.2.4 Rejection method -- 7.2.5 The Gaussian distribution -- 7.3 Basic data analysis -- 7.3.1 Estimators -- 7.3.2 Confidence intervals -- 7.3.3 Histograms 258 -- 7.3.4 Resampling using bootstrap -- 7.4 Data plotting -- 7.4.1 gnuplot -- 7.4.2 xmgrace -- 7.5 Hypothesis testing and (in-)dependence of data -- 7.5.1 Chi-squared test -- 7.5.2 Kolmogorov-Smirnov test -- 7.5.3 Statistical (in-)dependence -- 7.6 General estimators -- 7.6.1 Maximum likelihood -- 7.6.2 Data fitting -- 8 Information Retrieval, Publishing and Presentations -- 8.1 Searching for literature -- 8.2 Visualization -- 8.2.1 Drawing figures using xfig -- 8.2.2 Drawing graphs -- 8.2.3 Three-dimensional figures with Povray -- 8.3 Preparing publications -- 8.3.1 Latex -- 8.3.2 Beamer class -- Appendix A: The Book CD.
Alexander K. Hartmann.
Includes bibliographical references (p. 353-357) and index.
Hardware requirements for CD-ROM not given, but included programs require a C compiler.
Computer simulation
C (Computer program language)
Algorithms
Debugging in computer science
QA76.9.C65 H365 2009
005.133 HAP
9789812834140 (hbk.)
9812834141 (hbk.)
9789812834157 (pbk)
981283415X (pbk)
2009497267
BTCTA
140804
20140805115531.0
15903589