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