
8 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
8 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
8 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
9 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
9 


. 
9 


11 


13 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
13 

Variables .
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
13 

. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
15 

Operators
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
18 

. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
24 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
26 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
33 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
35 

.. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
45 
2.10 Pointers. 2.11 Global Variables... 
. 
. 
. 
.. 
.. 
.. 
.. 
.. 
.. 
.. 
.. 
.. 
.. 
.. 
.. 
.. 
.. 
.. 
.. 
.. 
.. 
.. 
.. 
.. 
.. 
.. 
.. 
.. 
.. 
5563 

2 

. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
66 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
73 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
75 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
77 

Timing 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
79 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
81 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
83 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
87 


89 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
93 

3 
Integration of ODEs 
101 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
101 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
102 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
103 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
106 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
106 


109 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
111 


113 


117 

3.10 
Advanced Integration Methods 
121 
3

121 

Air Drag

. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
122 

. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
126 


127 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
134 


140 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
140 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
142 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
148 


148 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
151 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
152 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
157 


163 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
166 


173 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
179 


. . 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
180 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
184 


189 

4 

. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
189 


190 


193 


194 


195 


197 


197 


201 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
202 


207 


211 


213 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
216 

6 
The Diffusion Equation 
218 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
218 


219 


220 


221 


224 


225 


226 
5

228 


229 


231 


232 


236 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
236 

238 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
238 


. 
. 
. 
. 
. 
. 
. 
. 
238 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
240 


243 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
245 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
248 


. 
. 
. 
. 
. 
. 
. 
. 
252 


265 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
265 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
266 


267 


267 


268 
6

. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
269 

. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
281 
Discussion

. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
282 

9MonteCarlo Methods 
284 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
284 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
284 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
291 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
294 


. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
302 

7 
1 INTRODUCTION
C/C++ PROGRAMMING:
NUMERICAL METHODS AND COMPUTATIONAL PHYSICS:
8
1.3
Purpose of Course
1 INTRODUCTION
PHYSICS OF BASEBALL:
CHAOS:
9
1.5 Programming Methodologies
1 INTRODUCTION
^{1} See http://www.wolfram.com ^{2} See http://www.maplesoft.com ^{3} See http://www.mathworks.com ^{4} See http://www.nag.com ^{5} See http://www.netlib.org ibid.
^{6}
10
1.6
Scientiﬁc Programming Languages
1 INTRODUCTION
11
1.6
Scientiﬁc Programming Languages
1 INTRODUCTION
12
2
SCIENTIFIC PROGRAMMING IN C
13
2.2
Variables
2 SCIENTIFIC PROGRAMMING IN C
x
c14
area
electron_mass
TEMPERATURE
0
57
4567
128933
0.01 70.456
3e+5 .5067e16
"red" "Austin TX, 78723" "5129261477"
"Line 1\nLine 2\nLine 3"
Line 1
Line 2
Line 3
14
2.3
Expressions and Statements
2 SCIENTIFIC PROGRAMMING IN C
int 
a, b, c; 
double 
acc, epsilon, t; 
int 
a = 3, b = 5; 
double 
factor = 1.2E5; 
a + b x = y
15
2.3
Expressions and Statements
2 SCIENTIFIC PROGRAMMING IN C
t = 
u + v 

x 
<= y 

++j 

The ﬁrst expression, which employs the addition operator (+), represents the sum of the values assigned to variables a and b. The second expression involves the assignment operator (=), and causes the value represented by y to be assigned to x. In the third expression, the value of the expression (u + v) is assigned to t. The fourth expression takes the value 1 (true) if the value of x is less than or equal to the value of y. Otherwise, the expression takes the value 0 (false). Here, <= is a relational operator that compares the values of x and y. The ﬁnal example causes the value of j to be increased by 1. Thus, the expression is equivalent to 

j = j 
+ 1 

The increment (by unity) operator ++ is called a unary operator, because it only possesses one operand. 

A statement causes the computer to carry out some deﬁnite action. There are three different classes of statements in C: expression statements, compound statements, and control statements. 

An expression statement consists of an expression followed by a semicolon. The execution of such a statement causes the associated expression to be evalu ated. For example: 

a = 6; 

c 
= a + b; 

++j; 
16
2.3
Expressions and Statements
2 SCIENTIFIC PROGRAMMING IN C
{ 

pi = 3.141593; circumference = 2. * pi * radius; area = pi * radius * radius; 

} 
#define
NAME
text
#define
PI 3.141593
area = PI * radius * radius;
area = 3.141593 * radius * radius;
17
2.4
Operators
2 SCIENTIFIC PROGRAMMING IN C
addition 
+ 
subtraction 
 
multiplication 
* 
division 
/ 
(double) j
18
2.4
Operators
2 SCIENTIFIC PROGRAMMING IN C
x / (double) i
a 
b / c
+ d
a 
(b / c) + d
b = a++;
19
2.4
Operators
2 SCIENTIFIC PROGRAMMING IN C
b = a; a = a + 1;
b = ++a;
a = a + 1; b = a;
less than 
< 
less than or equal to 
<= 
greater than 
> 
greater than or equal to 
>= 
equal to 
== 
not equal to 
!= 
20
2.4
Operators
2 SCIENTIFIC PROGRAMMING IN C
&& 
and 
 
or 
i + j == 3 &&
i *
l >= 5
((i + j) == 3) && (i * l >= 5)
f = 3.4
21
2.4
Operators
2 SCIENTIFIC PROGRAMMING IN C
i =
j
= k
= 4
i += 6
i = 6
i *= 6
i /= 6
expression 1
?
expression 2
:
expression 3
22
2.4
Operators
2 SCIENTIFIC PROGRAMMING IN C
(j < 5) ?
12 : 6
k =
(i <
0) ?
n
:
m