Available:*
Library | Item Barcode | Call Number | Material Type | Item Category 1 | Status |
---|---|---|---|---|---|
Searching... | 32080000000177 | Q183.9 B56 2014 | Open Access Book | Book | Searching... |
Searching... | 30000010344115 | Q183.9 B56 2014 | Open Access Book | Book | Searching... |
On Order
Summary
Summary
Instead of presenting the standard theoretical treatments that underlie the various numerical methods used by scientists and engineers, Using R for Numerical Analysis in Science and Engineering shows how to use R and its add-on packages to obtain numerical solutions to the complex mathematical problems commonly faced by scientists and engineers. This practical guide to the capabilities of R demonstrates Monte Carlo, stochastic, deterministic, and other numerical methods through an abundance of worked examples and code, covering the solution of systems of linear algebraic equations and nonlinear equations as well as ordinary differential equations and partial differential equations. It not only shows how to use R's powerful graphic tools to construct the types of plots most useful in scientific and engineering work, but also:
Explains how to statistically analyze and fit data to linear and nonlinear models Explores numerical differentiation, integration, and optimization Describes how to find eigenvalues and eigenfunctions Discusses interpolation and curve fitting Considers the analysis of time seriesUsing R for Numerical Analysis in Science and Engineering provides a solid introduction to the most useful numerical methods for scientific and engineering data analysis using R.
Author Notes
Victor A. Bloomfield is currently emeritus professor at University of Minnesota, Minneapolis, USA. His research has encompassed more than four decades and a variety of topics, including enzyme kinetics, dynamic laser light scattering, bacteriophage assembly, DNA condensation, scanning tunneling microscopy, and single molecule stretching experiments on DNA. His theoretical work on biopolymer hydrodynamics and polyelectrolyte behavior has resulted in over 200 peer-reviewed journal publications. Using R for Numerical Analysis in Science and Engineering is an extension and broadening of his 2009 book, Computer Simulation and Data Analysis in Molecular Biology and Biophysics: An Introduction Using R , for general usage in science and engineering.
Table of Contents
List of Figures | p. xiii |
Preface | p. ix |
1 Introduction | p. 1 |
1.1 Obtaining and installing R | p. 1 |
1.2 Learning R | p. 1 |
1.3 Learning numerical methods | p. 1 |
1.4 Finding help | p. 2 |
1.5 Augmenting R with packages | p. 3 |
1.6 Learning more about R | p. 5 |
1.6.1 Books | p. 5 |
1.6.2 Online resources | p. 5 |
2 Calculating | p. 7 |
2.1 Basic operators and functions | p. 7 |
2.2 Complex numbers | p. 8 |
2.3 Numerical display, round-off error, and rounding | p. 9 |
2.4 Assigning variables | p. 11 |
2.4.1 Listing and removing variables | p. 12 |
2.5 Relational operators | p. 12 |
2.6 Vectors | p. 13 |
2.6.1 Vector elements and indexes | p. 13 |
2.6.2 Operations with vectors | p. 14 |
2.6.3 Generating sequences | p. 15 |
2.6.3.1 Regular sequences | p. 15 |
2.6.3.2 Repeating values | p. 16 |
2.6.3.3 Sequences of random numbers | p. 16 |
2.6.4 Logical vectors | p. 17 |
2.6.5 Speed of forming large vectors | p. 18 |
2.6.6 Vector dot product and crossproduct | p. 19 |
2.7 Matrices | p. 21 |
2.7.1 Forming matrices | p. 21 |
2.7.2 Operations on matrices | p. 24 |
2.7.2.1 Arithmetic operations on matrices | p. 24 |
2.7.2.2 Matrix multiplication | p. 25 |
2.7.2.3 Transpose and determinant | p. 26 |
2.7.2.4 Matrix crossproduct | p. 26 |
2.7.2.5 Matrix exponential | p. 27 |
2.7.2.6 Matrix inverse and solve | p. 27 |
2.7.2.7 Eigenvalues and eigenvectors | p. 29 |
2.7.2.8 Singular value decomposition | p. 31 |
2.7.3 The Matrix package | p. 33 |
2.7.4 Additional matrix functions and packages | p. 34 |
2.8 Time and date calculations | p. 34 |
3 Graphing | p. 37 |
3.1 Scatter plots | p. 37 |
3.2 Function plots | p. 39 |
3.3 Other common plots | p. 40 |
3.3.1 Bar charts | p. 40 |
3.3.2 Histograms | p. 42 |
3.3.3 Box-and-whisker plots | p. 43 |
3.4 Customizing plots | p. 44 |
3.4.1 Points and lines | p. 44 |
3.4.2 Axes, ticks, and par () | p. 44 |
3.4.3 Overlaying plots with graphic elements | p. 46 |
3.5 Error bars | p. 48 |
3.6 Superimposing vectors in a plot | p. 49 |
3.7 Modifying axes | p. 50 |
3.7.1 Logarithmic axes | p. 51 |
3.7.2 Supplementary axes | p. 51 |
3.7.3 Incomplete axis boxes | p. 52 |
3.7.4 Broken axes | p. 52 |
3.8 Adding text and math expressions | p. 54 |
3.8.1 Making math annotations with expression() | p. 55 |
3.9 Placing several plots in a figure | p. 56 |
3.10 Two- and three-dimensional plots | p. 58 |
3.11 The plotrix package | p. 60 |
3.11.1 radial.plot and polar.plot | p. 60 |
3.11.2 Triangle plot | p. 61 |
3.11.3 Error bars in plotrix | p. 62 |
3.12 Animation | p. 63 |
3.13 Additional plotting packages | p. 64 |
4 Programming and functions | p. 65 |
4.1 Conditional execution: if and ifelse | p. 65 |
4.2 Loops | p. 66 |
4.2.1 for loop | p. 66 |
4.2.2 Looping with while and repeat | p. 68 |
4.3 User-defined functions | p. 69 |
4.4 Debugging | p. 72 |
4.5 Built-in mathematical functions | p. 73 |
4.5.1 Bessel functions | p. 73 |
4.5.2 Beta and gamma functions | p. 74 |
4.5.3 Binomial coefficients | p. 75 |
4.6 Special functions of mathematical physics | p. 75 |
4.6.1 The gsl package | p. 75 |
4.6.2 Special functions in other packages | p. 75 |
4.7 Polynomial functions in packages | p. 78 |
4.7.1 PolynomF package | p. 79 |
4.7.2 orthopolynom package | p. 83 |
4.8 Case studies | p. 86 |
4.8.1 Two-dimensional random walk | p. 86 |
4.8.2 higenvalues of a polymer chain | p. 87 |
5 Solving systems of algebraic equations | p. 91 |
5.1 Finding the zeros of a polynomial | p. 91 |
5.2 Finding the zeros of a function | p. 92 |
5.2.1 Bisection method | p. 92 |
5.2.2 Newton's method | p. 93 |
5.2.3 uniroot and uniroot.all | p. 94 |
5.3 Systems of linear equations: matrix solve | p. 96 |
5.4 Matrix inverse | p. 97 |
5.5 Singular matrix | p. 97 |
5.6 Overdetermined systems and generalized inverse | p. 98 |
5.7 Sparse matrices | p. 99 |
5.7.1 Tridiagonal matrix | p. 99 |
5.7.2 Banded matrix | p. 101 |
5.7.3 Block matrix | p. 102 |
5.8 Matrix decomposition | p. 104 |
5.8.1 QR decomposition | p. 105 |
5.8.2 Singular value decomposition | p. 106 |
5.8.3 Eigendecomposition | p. 107 |
5.8.4 LU decomposition | p. 107 |
5.8.5 Cholesky decomposition | p. 108 |
5.8.6 Schur decomposition | p. 109 |
5.8.7 backsolve and forwardsolve | p. 109 |
5.9 Systems of nonlinear equations | p. 109 |
5.9.1 multiroot in the rootSolve package | p. 109 |
5.9.2 nleqslv | p. 111 |
5.9.3 BBsolve() in the BB package | p. 112 |
5.10 Case studies | p. 117 |
5.10.1 Spectroscopic analysis of a mixture | p. 117 |
5.10.2 van der Waals equation | p. 120 |
5.10.3 Chemical equilibrium | p. 122 |
6 Numerical differentiation and integration | p. 125 |
6.1 Numerical differentiation | p. 125 |
6.1.1 Numerical differentiation using base R | p. 125 |
6.1.1.1 Using the fundamental definition | p. 125 |
6.1.1.2 diff() | p. 126 |
6.1.2 Numerical differentiation using the numDeriv package | p. 127 |
6.1.2.1 grad() | p. 128 |
6.1.2.2 jacobian() | p. 128 |
6.1.2.3 hessian | p. 129 |
6.1.3 Numerical differentiation using the pracma package | p. 129 |
6.1.3.1 fderiv() | p. 129 |
6.1.3.2 numderiv() and numdiff () | p. 130 |
6.1.3.3 grad() and gradient () | p. 131 |
6.1.3.4 jacobian() | p. 131 |
6.1.3.5 hessian | p. 132 |
6.1.3.6 laplacian() | p. 133 |
6.2 Numerical integration | p. 133 |
6.2.1 integrate: Basic integration in R | p. 134 |
6.2.2 Integrating discretized functions | p. 136 |
6.2.3 Gaussian quadrature | p. 137 |
6.2.4 More integration routines in pracma | p. 140 |
6.2.5 Functions with singularities | p. 142 |
6.2.6 Infinite integration domains | p. 144 |
6.2.7 Integrals in higher dimensions | p. 146 |
6.2.8 Monte Carlo and sparse grid integration | p. 148 |
6.2.9 Complex line integrals | p. 150 |
6.3 Symbolic manipulations in R | p. 152 |
6.3.1 D() | p. 152 |
6.3.2 deriv() | p. 152 |
6.3.3 Polynomial functions | p. 154 |
6.3.4 Interfaces to symbolic packages | p. 155 |
6.4 Case studies | p. 155 |
6.4.1 Circumference of an ellipse | p. 155 |
6.4.2 Integration of a Lorentzian derivative spectrum | p. 156 |
6.4.3 Volume of an ellipsoid | p. 157 |
7 Optimization | p. 159 |
7.1 One-dimensional optimization | p. 159 |
7.2 Multi-dimensional optimization with optim() | p. 162 |
7.2.1 optim() with "Nelder-Mead" default | p. 163 |
7.2.2 optim() with "BFGS" method | p. 165 |
7.2.3 optim() with "CG" method | p. 167 |
7.2.4 optim() with "L-BFGS-B" method to find a local minimum | p. 167 |
7.3 Other optimization packages | p. 169 |
7.3.1 nlm() | p. 169 |
7.3.2 ucminf package | p. 171 |
7.3.3 BB package | p. 171 |
7.3.4 optimx() wrapper | p. 172 |
7.3.5 Derivative-free optimization algorithms | p. 172 |
7.4 Optimization with constraints | p. 173 |
7.4.1 constrOptim to optimize functions with linear constraints | p. 173 |
7.4.2 External packages alabama and Rsolnp | p. 175 |
7.5 Global optimization with many local minima | p. 177 |
7.5.1 Simulated annealing | p. 178 |
7.5.2 Genetic algorithms | p. 181 |
7.5.2.1 DEoptim | p. 181 |
7.5.2.2 rgenoud | p. 183 |
7.5.2.3 GA | p. 183 |
7.6 Linear and quadratic programming | p. 183 |
7.6.1 Linear programming | p. 183 |
7.6.2 Quadratic programming | p. 186 |
7.7 Mixed-integer linear programming | p. 189 |
7.7.1 Mixed-integer problems | p. 189 |
7.7.2 Integer programming problems | p. 190 |
7.7.2.1 Knapsack problems | p. 191 |
7.7.2.2 Transportation problems | p. 191 |
7.7.2.3 Assignment problems | p. 192 |
7.7.2.4 Subsetsum problems | p. 193 |
7.8 Case study | p. 194 |
7.8.1 Monte Carlo simulation of the 2D Ising model | p. 194 |
8 Ordinary differential equations | p. 199 |
8.1 Euler method | p. 200 |
8.1.1 Projectile motion | p. 201 |
8.1.2 Orbital motion | p. 203 |
8.2 Improved Euler method | p. 205 |
8.3 deSolve package | p. 208 |
8.3.1 Isoda() andlsode() | p. 210 |
8.3.2 "adams" and related methods | p. 211 |
8.3.3 Stiff systems | p. 213 |
8.4 Matrix exponential solution for sets of linear ODEs | p. 214 |
8.5 Events and roots | p. 215 |
8.6 Difference equations | p. 220 |
8.7 Delay differential equations | p. 221 |
8.8 Differential algebraic equations | p. 224 |
8.9 rootSolve for steady state solutions of systems of ODEs | p. 227 |
8.10 bvpSolve package for boundary value ODE problems | p. 230 |
8.10.1 bvpshoot() | p. 230 |
8.10.2 bvptwp() | p. 231 |
8.10.3 bvpcol() | p. 232 |
8.11 Stochastic differential equations: GillespieSSA package | p. 233 |
8.12 Case studies | p. 240 |
8.12.1 Launch of the space shuttle | p. 240 |
8.12.2 Electrostatic potential of DNA solutions | p. 241 |
8.12.3 Bifurcation analysis of Lotka-Volterra model | p. 244 |
9 Partial differential equations | p. 249 |
9.1 Diffusion equation | p. 249 |
9.2 Wave equation | p. 251 |
9.2.1 FTCS method | p. 252 |
9.2.2 Lax method | p. 253 |
9.3 Laplace's equation | p. 254 |
9.4 Solving PDEs with the ReacTran package | p. 256 |
9.4.1 setup.grid.1D | p. 257 |
9.4.2 setup.prop.1D | p. 258 |
9.4.3 tran.1D | p. 258 |
9.4.4 Calling ode.1D or steady.1D | p. 259 |
9.5 Examples with the ReacTran package | p. 259 |
9.5.1 1-D diffusion-advection equation | p. 259 |
9.5.2 1-D wave equation | p. 260 |
9.5.3 Laplace equation | p. 262 |
9.5.4 Poisson equation for a dipole | p. 263 |
9.6 Case studies | p. 264 |
9.6.1 Diffusion in a viscosity gradient | p. 264 |
9.6.2 Evolution of a Gaussian wave packet | p. 267 |
9.6.3 Burgers equation | p. 269 |
10 Analyzing data | p. 273 |
10.1 Getting data into R | p. 273 |
10.2 Data frames | p. 274 |
10.3 Summary statistics for a single dataset | p. 275 |
10.4 Statistical comparison of two samples | p. 277 |
10.5 Chi-squared test for goodness of fit | p. 279 |
10.6 Correlation | p. 280 |
10.7 Principal component analysis | p. 281 |
10.8 Cluster analysis | p. 283 |
10.8.1 Using hclust for agglomerative hierarchical clustering | p. 283 |
10.8.2 Using diana for divisive hierarchical clustering | p. 284 |
10.8.3 Using kmeans for partitioning clustering | p. 285 |
10.8.4 Using pam for partitioning around medoids | p. 286 |
10.9 Case studies | p. 286 |
10.9.1 Chi square analysis of radioactive decay | p. 286 |
10.9.2 Principal component analysis of quasars | p. 289 |
11 Fitting models to data | p. 293 |
11.1 Fitting data with linear models | p. 293 |
11.1.1 Polynomial fitting with lm | p. 294 |
11.2 Fitting data with nonlinear models | p. 296 |
11.3 Inverse modeling of ODEs with the FME package | p. 304 |
11.4 Improving the convergence of series: Padé and Shanks | p. 309 |
11.5 Interpolation | p. 311 |
11.5.1 Linear interpolation | p. 312 |
11.5.2 Polynomial interpolation | p. 313 |
11.5.3 Spline interpolation | p. 313 |
11.5.3.1 Integration and differentiation with splines | p. 314 |
11.5.4 Rational interpolation | p. 315 |
11.6 Time series, spectrum analysis, and signal processing | p. 316 |
11.6.1 Fast Fourier transform: fft() function | p. 316 |
11.6.2 Inverse Fourier transform | p. 317 |
11.6.3 Power spectrum: spectrumO function | p. 318 |
11.6.4 findpeaks() function | p. 321 |
11.6.5 Signal package | p. 322 |
11.6.5.1 Butterworth filter | p. 322 |
11.6.5.2 Savitzky-Golay filter | p. 324 |
11.6.5.3 fit filter | p. 324 |
11.7 Case studies | p. 325 |
11.7.1 Fitting a rational function to data | p. 325 |
11.7.2 Rise of atmospheric carbon dioxide | p. 327 |
Bibliography | p. 329 |
Index | p. 331 |