Table of Contents

Introduction  ... 1
    Why Second Edition?  .... 1
    What’s New in Second Edition ....  1
        Example Structure  .... 1
        Use Open Source Libraries  .... 2
        C# Interactive Window .... 2
        Chapter Update ..... 2
    Overview ... 3
    What this Book Includes....... 4
    Is this Book for You?... 4
    What Do You Need to Use this Book? ... 5
    How this Book Is Organized  5
    Use Code Examples ..... 7
    Customer Support ........ 8

1 Overview of C# Programming ... 9
    1.1 Visual Studio ........ 9
    1.2 Windows Forms . 10
    1.3 Interactive Window ..... 16
        1.3.1 Open C# Interactive Window .. 16
        1.3.2 Execute Code in C# Interactive Window ... 18
        1.3.3 Interact with Current Project .... 20
    1.4 Data Types  21
        1.4.1 Value-Type Variables ..... 21
        1.4.2 Reference-Type Variables........ 22
    1.5 Math Operations and Functions .... 22
        1.5.1 Math Operators ...... 23
        1.5.2 Logical Operators ... 23
        1.5.3 Built-In Math Functions .. 24
        1.5.4 Math Operation Example  25
    1.6 Selection Statements ... 25
        1.6.1 If statement .... 26
        1.6.2 Switch Statement ... 29
    1.7 Loop Statements . 31
        1.7.1 For Loop ........ 31
        1.7.2 Foreach Loop  32
        1.7.3 While Loop ... 33
        1.7.4 Do Loop ........ 33
    1.8 Methods ..... 34
        1.8.1 Create a Method ..... 34
        1.8.2 Call a Method  36
    1.9 Properties .. 36
        1.9.1 Expose a Property .. 36
        1.9.2 Use Properties ........ 37
        1.9.3 Read-Only and Write-Only Properties ....... 37
        1.9.4 Auto-Implemented Properties .. 38
    1.10 NuGet Packages . 39
        1.10.1 Install NuGet Packages ... 39
        1.10.2 Use NuGet Package ........ 41

2 Vectors and Matrices ....... 43
    2.1 Vectors ...... 43
        2.1.1 Create Vectors ........ 43
        2.1.2 Arithmetics .... 45
        2.1.3 Vector Multiplication ...... 46
    2.2 Complex Vectors  46
        2.2.1 Create Complex Vectors . 46
        2.2.2 Arithmetics .... 47
    2.3 Matrices ..... 48
        2.3.1 Create Matrices ...... 49
        2.3.2 Arithmetics .... 51
        2.3.3 Determinant and Trace .... 52
        2.3.4 Transpose and Inverse ..... 52
        2.3.5 Rank and Range ..... 53
        2.3.6 Norms ... 54
        2.3.7 Matrix Manipulations ...... 55
        2.3.8 Upper and Lower Triangular Matrices....... 57
        2.3.9 Element-By-Element Operations ...... 58
    2.4 Complex Matrices ....... 59

3 Plotting ... 61
    3.1 Chart2D User Control . 61
        3.1.1 Multiple-Line Charts ....... 61
        3.1.2 Sub-Charts ..... 66
    3.2 WebView Control ....... 71
        3.2.1 Install WebView .... 71
        3.2.2 Use WebView for WinForms .. 71
    3.3 Introduction to Gincker Graphics.. 72
        3.3.1 Main Features  72
        3.3.2 Output from Gincker Graphics  73
        3.3.3 Templates for Charts and Graphics ... 73
        3.3.4 Embed Gincker Graphics within WinForms ....... 75
        3.3.5 Create User Account ....... 76
    3.4 Get Started . 76
        3.4.1 Select Template ...... 76
        3.4.2 Layout Window ..... 77
        3.4.3 Input Panel .... 78
        3.4.4 Chart Area ..... 79
        3.4.5 Customization Panel ....... 80
    3.5 2D Charts .. 82
        3.5.1 2D Multiple-Line Charts . 82
        3.5.2 2D Parametric Charts ...... 84
        3.5.3 Polar Charts ... 86
        3.5.4 Contour Charts ....... 88
    3.6 3D Charts .. 91
        3.6.1 3D Line Charts ....... 91
        3.6.2 3D Parametric Surfaces ... 92
        3.6.3 3D Parametric Shapes ..... 95
        3.6.4 3D Extruded Surfaces ..... 97
        3.6.5 3D Shapes of Revolution  98
        3.6.6 3D Tubes ..... 100
    3.7 Complex-Variable Charts... 101
        3.7.1 3D Complex Charts ....... 101
        3.7.2 Complex Heatmap Charts ...... 104
        3.7.3 Domain-Coloring Charts ........ 107
        3.7.4 Iterated-Function Charts ........ 110

4 Linear Algebra Equations ...... 115
    4.1 LU Decomposition .... 115
        4.1.1 Algorithm .... 115
        4.1.2 LU Factorization .. 116
        4.1.3 Solve Linear Equations . 117
    4.2 QR Decomposition .... 118
        4.2.1 Algorithm .... 118
        4.2.2 QR Factorization .. 118
        4.2.3 Solve Linear Equations . 119
    4.3 Singular Value Decomposition ... 120
        4.3.1 Algorithm .... 120
        4.3.2 SVD Factorization ........ 120
        4.3.3 Solve Linear Equations . 121
    4.4 Cholesky Decomposition ... 122
        4.4.1 Algorithm .... 122
        4.4.2 Cholesky Factorization . 122
        4.4.3 Solve Linear Equations . 123
    4.5 Bi-Conjugate Gradient Stabilized Method .... 123
        4.5.1 Algorithm .... 123
        4.5.2 Solve Linear Equations . 124
    4.6 Multiple-Lanczos Bi-Conjugate Gradient Stabilized Method . 125
        4.6.1 Algorithm .... 125
        4.6.2 Solve Linear Equations . 126
    4.7 Generalized Product Bi-Conjugate Gradient Method ..... 126
        4.7.1 Algorithm .... 127
        4.7.2 Solve Linear Equations . 128
    4.8 Transpose Free Quasi-Minimal Residual Method . 129
        4.8.1 Algorithm .... 129
        4.8.2 Solve Linear Equations . 129

5 Nonlinear Equations ...... 131
    5.1 Bisection Method ...... 131
        5.1.1 Algorithm .... 132
        5.1.2 Find Roots ... 133
    5.2 Newton-Raphson Method .. 133
        5.2.1 Algorithm .... 133
        5.2.2 Find Roots ... 134
    5.3 Secant Method .. 134
        5.3.1 Algorithm .... 135
        5.3.2 Find Roots ... 135
    5.4 Brent Method ... 136
        5.4.1 Algorithm .... 136
        5.4.2 Find Roots ... 137
    5.5 Broyden Method ....... 138
        5.5.1 Algorithm .... 138
        5.5.2 Find Roots ... 138
        5.5.3 Solve System of Nonlinear Equations ..... 139

6 Special Functions ... 141
    6.1 Gamma Functions ..... 141
        6.1.1 Definitions ... 141
        6.1.2 Incomplete Gamma Functions ........ 142
        6.1.3 Test Gamma Functions . 143
    6.2 Beta Functions .. 143
        6.2.1 Properties .... 143
        6.2.2 Incomplete Beta Functions .... 144
        6.2.3 Test Beta Functions ....... 144
    6.3 Error Functions  145
        6.3.1 Properties .... 145
        6.3.2 Inverse Error Functions . 146
        6.3.3 Test Error Functions ..... 146
    6.4 Sine and Cosine Integral Functions ..... 147
        6.4.1 Implementation .... 147
        6.4.2 Test Sine and Cosine Integrals ........ 148
    6.5 Laguerre Polynomials ........ 149
        6.5.1 Implementation .... 149
        6.5.2 Test Laguerre Polynomials .... 150
    6.6 Hermite Polynomials . 150
        6.6.1 Implementation .... 150
        6.6.2 Test Hermite Polynomials ...... 151
    6.7 Chebyshev Polynomials ..... 151
        6.7.1 Implementation .... 152
        6.7.2 Test Chebyshev Polynomials . 153
    6.8 Legendre Polynomials ........ 153
        6.8.1 Implementation .... 154
        6.8.2 Test Legendre Polynomials .... 154
    6.9 Bessel Functions ....... 155
        6.9.1 Modified Bessel Functions .... 155
        6.9.2 Test Bessel Functions ... 156
    6.10 Spherical Bessel Functions  157
        6.11 Airy Functions .. 158
        6.11.1 Definitions and Properties ...... 158
        6.11.2 Test Airy Functions ....... 159

7 Random Numbers and Distribution Functions ........ 161
    7.1 Random Number Generators....... 161
        7.1.1 Built-In Random Number Generator ....... 161
        7.1.2 Random Number Generators in Math.NET ...... 162
    7.2 Normal Distribution .. 165
        7.2.1 Probability Density Function . 165
        7.2.2 Test Normal Distribution ....... 165
        7.2.3 Plot Normal Distribution ........ 166
    7.3 Exponential Distribution .... 172
        7.3.1 Probability Density Function . 173
        7.3.2 Test Exponential Distribution  173
        7.3.3 Plot Exponential Distribution  174
    7.4 Chi Distribution  176
        7.4.1 Probability Density Function . 177
        7.4.2 Test Chi Distribution ..... 177
        7.4.3 Plot Chi Distribution ..... 178
    7.5 Chi-Square Distribution ..... 180
        7.5.1 Probability Density Function . 181
        7.5.2 Test Chi-Square Distribution . 181
        7.5.3 Plot Chi-Square Distribution .. 182
    7.6 Cauchy Distribution .. 184
        7.6.1 Probability Density Function . 184
        7.6.2 Test Cauchy Distribution ....... 185
        7.6.3 Plot Cauchy Distribution ........ 186
    7.7 Student-T Distribution ....... 189
        7.7.1 Probability Density Function . 189
        7.7.2 Test Student-T Distribution ... 189
        7.7.3 Plot Student-T Distribution .... 190
    7.8 Gamma Distribution .. 192
        7.8.1 Probability Density Function . 193
        7.8.2 Test Gamma Distribution ....... 193
        7.8.3 Plot Gamma Distribution ....... 194
    7.9 Beta Distribution ....... 197
        7.9.1 Probability Density Function . 197
        7.9.2 Test Beta Distribution ... 197
        7.9.3 Plot Beta Distribution ... 198
    7.10 Poisson Distribution .. 201
        7.10.1 Probability Density Function . 201
        7.10.2 Test Poisson Distribution ....... 201
        7.10.3 Plot Poisson Distribution ....... 202
    7.11 Binomial Distribution ........ 206
        7.11.1 Probability Density Function . 206
        7.11.2 Test Binomial Distribution .... 206
        7.11.3 Plot Binomial Distribution ..... 207

8 Interpolation . 211
    8.1 Linear Interpolation ... 211
        8.1.1 Algorithm .... 211
        8.1.2 Test Linear Interpolation ........ 212
        8.1.3 Plot Linear Interpolation ........ 213
    8.2 Lagrange Interpolation ....... 216
        8.2.1 Neville’s Algorithm ...... 216
        8.2.2 Test Lagrange Interpolation ... 217
        8.2.3 Plot Lagrange Interpolation ... 218
    8.3 Barycentric Interpolation ... 220
        8.3.1 Algorithm .... 220
        8.3.2 Test Barycentric Interpolation ........ 221
        8.3.3 Plot Barycentric Interpolation  222
    8.4 Newton divided Difference Interpolation ..... 224
        8.4.1 Algorithm .... 225
        8.4.2 Implementation .... 226
        8.4.3 Test Newton divided difference Interpolation .. 227
        8.4.4 Plot Newton Divided Difference Interpolation . 227
    8.5 Cubic Spline Interpolation . 230
        8.5.1 Algorithm .... 230
        8.5.2 Test Cubic Spline Interpolation ...... 231
        8.5.3 Plot Cubic Spline Interpolation ....... 232
    8.6 Bilinear Interpolation  234
        8.6.1 Algorithm .... 235
        8.6.2 Implementation .... 236
        8.6.3 Test Bilinear Interpolation ..... 237
9 Curve Fitting . 239
    9.1 Least Squares Fit ....... 239
    9.2 Straight-Line Fit ........ 240
        9.2.1 Algorithm .... 240
        9.2.2 Test Straight-Line Fit .... 241
        9.2.3 Plot Straight-Line Fit .... 242
    9.3 Linear Model .... 244
        9.3.1 Algorithm .... 245
        9.3.2 Test Linear Model  245
        9.3.3 Plot Line Model ... 247
    9.4 Polynomial Fit .. 249
        9.4.1 Algorithm .... 250
        9.4.2 Test Polynomial Fit ....... 250
    9.5 Exponential Function Fit .... 251
    9.6 Linearization of Nonlinear Data.. 253
        9.6.1 Exponential Function .... 253
        9.6.2 Power Function .... 254
        9.6.3 Saturation function ........ 254
        9.6.4 Linearization Example .. 254

10 Optimization .... 259
    10.1 Bisection Method ...... 259
        10.1.1 Algorithm .... 259
        10.1.2 Implementation .... 260
        10.1.3 Test Bisection Method .. 261
    10.2 Golden Section Method...... 262
        10.2.1 Algorithm .... 262
        10.2.2 Test Golden Section Method . 263
    10.3 Brent Method ... 264
        10.3.1 Algorithm .... 264
        10.3.2 Implementation .... 265
        10.3.3 Test Brent Method ........ 268
    10.4 Newton Method  268
        10.4.1 Algorithm .... 268
        10.4.2 Test Functions ...... 269
        10.4.3 Test Newton Method ..... 271
    10.5 Simplex Method ........ 272
        10.5.1 Algorithm .... 273
        10.5.2 Test Simplex Method .... 273
    10.6 Broyden-Fletcher-Goldfarb-Shanno Method  274
        10.6.1 Algorithm .... 274
        10.6.2 Test BFGS Method ....... 275
    10.7 Simulated Annealing Method ..... 276
        10.7.1 Algorithm .... 276
        10.7.2 Implementation .... 278
        10.7.3 Test Simulated Annealing Method . 279
    10.8 Differential Evolution ........ 280
        10.8.1 Algorithm .... 281
        10.8.2 Implementation .... 281
        10.8.3 Test Differential Evolution .... 288
11 Numerical Differentiation  291
    11.1 Finite Difference Formulas  291
    11.2 Forward Difference Method ........ 292
        11.2.1 Implementation .... 293
        11.2.2 Testing Forward Difference Method ....... 294
    11.3 Backward Difference Method ..... 296
        11.3.1 Implementation .... 296
        11.3.2 Test Backward Difference Method . 298
    11.4 Central Difference Method  298
        11.4.1 Implementation .... 299
        11.4.2 Test Central Difference Method ..... 300
    11.5 Extended Central Difference Method .. 301
        11.5.1 Implementation .... 302
        11.5.2 Test Extended Central Difference Method ....... 303
    11.6 Richardson Extrapolation ... 304
        11.6.1 Implementation .... 305
        11.6.2 Test Richardson Extrapolation ........ 308
    11.7 Derivatives by Interpolation ........ 309
        11.7.1 Implementation .... 310
        11.7.2 Test Derivatives by Interpolation .... 311
    11.8 Partial Differentiation 312
        11.8.1 Partial Derivatives  312
        11.8.2 Jacobian Matrix .... 313
        11.8.3 Hessian Matrix ..... 314

12 Numerical Integration ...... 316
    12.1 Newton-Cotes Formulas .... 317
        12.1.1 Trapezoidal Rule .. 317
        12.1.2 Test Trapezoidal Rule ... 319
        12.1.3 Simpson’s Rule .... 320
        12.1.4 Test Simpson’s Rule ..... 321
        12.1.5 Higher Order rules ........ 322
    12.2 Romberg Integration . 323
        12.2.1 Implementation .... 324
        12.2.2 Test Romberg Method .. 325
    12.3 Gaussian Integration.. 326
        12.3.1 Gauss-Legendre Integration ... 327
            12.3.1.1 Implementation .... 327
            12.3.1.2 Test Gauss-Legendre Integration ... 328
        12.3.2 Gauss-Laguerre Integration.... 329
            12.3.2.1 Implementation .... 329
            12.3.2.2 Test Gauss-Laguerre Integration .... 331
        12.3.3 Gauss-Hermite Integration ..... 331
            12.3.3.1 Implementation .... 332
            12.3.3.2 Test Gauss-Hermite Integration ..... 333
        12.3.4 Gauss-Chebyshev Integration  334
            12.3.4.1 Implementation .... 334
            12.3.4.2 Test Gauss-Chebyshev Integration . 335
    12.4 Double Integrations ... 336
        12.4.1 2D Simpson’s Rule ....... 336
        12.4.2 Implementation .... 337
        12.4.3 Test 2D Simpson’s Rule ........ 338
        12.4.4 Test 2D Gauss-Legendre Integration ....... 338

13 Ordinary Differential Equations ....... 339
    13.1 Euler Method .... 340
        13.1.1 Implementation .... 340
        13.1.2 Test Euler Method  342
    13.2 Second-Order Runge-Kutta Method .... 343
        13.2.1 Implementation .... 343
        13.2.2 Test Second-Order Runge-Kutta Method  344
    13.3 Fourth-Order Runge-Kutta Method ..... 345
        13.3.1 Implementation .... 345
        13.3.2 Test Fourth-Order Runge-Kutta Method . 346
    13.4 Adaptive Runge-Kutta Method ... 346
        13.4.1 Implementation .... 347
        13.4.2 Test Adaptive Runge-Kutta Method ........ 348
    13.5 Runge-Kutta Method for Systems ........ 349
        13.5.1 Implementation .... 350
        13.5.2 Test MultiRungeKutta4 Method ..... 351
    13.6 Adaptive Runge-Kutta Method for Systems . 354
        13.6.1 Implementation:implementation ..... 354
        13.6.2 Test MultiRungeKuttaFehlberg Method .. 356

14 Boundary Value Problems ........ 359
    14.1 Shooting Method ....... 359
        14.1.1 Implementation .... 360
        14.1.2 Test Shooting2 Method . 362
    14.2 Finite Difference for Linear Equation .. 363
        14.2.1 Algorithm .... 363
        14.2.2 Implementation .... 366
        14.2.3 Test FiniteDifferenceLinear2 Method ..... 368
    14.3 Finite Difference for Nonlinear Equations .... 371
        14.3.1 Algorithm .... 371
        14.3.2 Implementation .... 371
        14.3.3 Test FiniteDifferenceNonlinear2 Method  373
    14.4 Finite Difference for Higher-Order Equation ........ 374
        14.4.1 Algorithm .... 374
        14.4.2 Implementation .... 376
        14.4.3 Test FiniteDifferenceLinear4 Method ..... 379

15 Eigenvalue Problems  381
    15.1 Jacobi Method .. 381
        15.1.1 Algorithm .... 382
        15.1.2 Implementation .... 384
        15.1.3 Test Jacobi Method ....... 387
    15.2 Power Iteration . 388
        15.2.1 Algorithm .... 388
        15.2.2 Implementation .... 389
        15.2.3 Test Power Method ....... 390
    15.3 Inverse Iteration ........ 391
        15.3.1 Algorithm .... 391
        15.3.2 Implementation .... 392
        15.3.3 Test Inverse Method ..... 393
    15.4 Rayleigh Method ....... 393
        15.4.1 Algorithm .... 393
        15.4.2 Implementation .... 394
        15.4.3 Test Rayleigh Method ... 395
    15.5 Rayleigh-Quotient Method. 395
        15.5.1 Algorithm .... 395
        15.5.2 Implementation .... 396
        15.5.3 Test Rayleigh-Quotient Method ..... 397
    15.6 Matrix Tridiagonalization .. 398
        15.6.1 Algorithm .... 398
        15.6.2 Implementation .... 401
        15.6.3 Test Tridiagonalize Method ... 403
    15.7 EigenValues of Symmetric Tridiagonal Matrices .. 404
        15.7.1 LU Decomposition of Tridiagonal Matrices ..... 405
        15.7.2 Implementation .... 407
        15.7.3 Examples ..... 410
    15.8 Use Math.NET Numerics ... 414
16 Fourier Analysis ....... 415
    16.1 Fourier Series ... 415
        16.1.1 Fourier trigonometric Series .. 415
        16.1.2 Fourier Exponential Series ..... 419
    16.2 Fourier Transforms.... 419
        16.2.1 Discrete Fourier Transform .... 419
        16.2.2 Fast Fourier Transform . 420
    16.3 FFT Interpolation ...... 423
        16.3.1 Data from Math Functions ..... 423
        16.3.2 User Provided Data ....... 426
17 Math Expression Parser ... 429
    17.1 Get Started ........ 429
        17.1.1 Built-In Math Operators  430
        17.1.2 Built-In Math Functions  431
        17.1.3 Build-In Calculus Operators .. 432
    17.2 Basic Math Calculations .... 432
        17.2.1 Number Operations ....... 432
        17.2.2 Use Variables ....... 433
        17.2.3 Use Build-In Functions . 434
        17.2.4 User Defined Functions  435
    17.3 Random Numbers and Distributions .... 436
        17.3.1 Built-In Random Variables .... 436
        17.3.2 Random Distributions ... 437
        17.3.3 Distribution Functions .. 439
    17.4 Calculus ... 440
        17.4.1 Finite Difference .. 441
        17.4.2 Differentiation ...... 441
        17.4.3 Integration ... 442
    17.5 Parametric Charts with mXParser ........ 442
Index .. 447