Course mechanics, introduction to modeling

advertisement
COS 323
Fall 2009
Computing for the Physical
and Social Sciences
Ken Steiglitz
Mechanics and course structure
• See course web page: COS 323 home
• Syllabus: lecture outlines, slides, some
detailed notes, etc.
• Master list of references in pdf, some on
reserve in library
Reading, background
• Optional text: http://www.nr.com Numerical
Recipes in C [PTVF92]. Really a reference
available on web
• Master reference list
• COS 126 is entirely adequate, don't get too
fancy --- We're after the algorithmic and
numerical issues
• MAT 104 is entirely adequate
Goal of course: learn “scientific”
computing through applications
• 4 assignments:
population genetics,
finance, chaos, Pratt
Truss bridge
• Term paper
• Reference all
sources!
Major Topic Outline
• Simulation, using random numbers,
experimenting
• Integration, root-finding
• Optimization, linear programming
• Ordinary diff. eqs., partial diff. eqs.
• DSP
• Linear systems (Matlab)
 Assign. 1
 Assign. 2
 Assign. 3
 Assign. 4
Major Topic Outline
• Simulation, using random numbers,
experimenting
• Integration, root-finding
• Optimization, linear programming
• Ordinary diff. eqs., partial diff. eqs.
• DSP
• Linear systems (Matlab)
* Numerical analysis
 Assign. 1
 Assign. 2
 Assign. 3
 Assign. 4
“Personal” vs. “Scientific” computing
• Early computers, up to the 70s or 80s, were
built to solve problems. They were
“scientific computers”, or SCs, so to speak
• Today the vast majority of computers are
PCs
What this course is about
• PC: Cycles used mainly for fixed, widely
used programs, for communication,
rendering, DSP, etc.
• SC: Involves developing programs:
programming, modeling, experimentation
 Machines are driven by the mass market
ca. 1956
Stanisław Ulam with MANIAC I --- about 104 ops/sec
Modeling in general
• Purposes: quantitative prediction,
qualitative prediction, development of
intuition, theory formation, theory testing
• Independent and dependent variables,
space, time
• Discrete vs. continuous choices for space,
time, dependent variables
• Philosophy: painting vs. photography
Examples
• Discrete-time/discrete-space/discrete-value
spatial epidemic models
Sugarscape
seashells
lattice gasses
cellular automata in general
Examples, con’t
• Difference equations
population growth
population genetics
digital signal processing,
digital filters, FFT, etc.
Examples, con’t
• Event-driven simulation
market dynamics
population genetics
network traffic
Examples, con’t
• Ordinary differential equations
market dynamics
epidemics
seashells
insulin-glucose regulation
immune system
predator-prey system
n-body problem, solar system,
formation of galaxy
Examples, con’t
• Partial differential equations
heat diffusion
population dispersion
wave motion in water, ether, earth, …
spread of genes in population
classical mechanics
quantum mechanics
Examples, con’t
• Combinatorial optimization
scheduling
routing, traffic
oil refining
layout
partition … and many more
main()
{ /* main */
float x, sum;
int i;
x = 1./10.;
sum = 0.;
for (i=0;i<10000000;i++)
sum += x;
printf("sum = %28.25f\n", sum);
}
main()
{ /* main */
float x, sum;
int i;
x = 1./10.;
sum = 0.;
for (i=0;i<10000000;i++)
sum += x;
printf("sum = %28.25f\n", sum);
}
sum = 1087937.0000000000000000000000000
Roundoff errors can accumulate in iterative
computations:
main()
{ /* main */
float x, sum;
int i;
x = 1./10.;
sum = 0.;
for (i=0;i<10000000;i++)
sum += x;
printf("sum = %28.25f\n", sum);
}
sum = 1087937.0000000000000000000000000
Numbers
• Fixed-point (absolute precision)
• Floating-point (relative precision)
scientific notation, like 3x10-8
• Single-precision: 32 bits, 8 bit exponent,
about 7 decimal-place accuracy
• Double-precision: 64 bits, 11 bit exponent,
about 15 decimal-place accuracy
[see IEEE 754 standard]
Numbers (con’t)
Example: 1/10 has no exact representation
in binary floating-point:
main()
{ /* main */
float x;
x = 1./10.;
printf("x = %28.25f\n", x);
}
x = 0.1000000014901161193847656
More subtle problem
Roots of
quadratic:
X2 – 9999 x + 1 = 0
Relative error
in x2 is
huge!
What’s the
problem?
main()
{ /* main */
printf("Solving quadratic\n");
printf("Actual root = 0.00010...\n");
printf("Actual root = 9998.9...\n");
float a, b, c, d, x1, x2;
a = 1.;
b = -9999.;
c = 1.;
d = b*b - 4.*a*c;
x1 = (-b + sqrt(d))/2.;
x2 = (-b - sqrt(d))/2.;
printf("x1= %28.25f\nx2= %28.25f\n", x1, x2);
}
Solving quadratic
Actual root = 0.00010...
Actual root = 9998.9...
x1= 9999.0000000000000000000000000
x2= 0.0000250025004788767546415
Higher-level languages
such as Matlab, Maple, Mathematica
|\^/| Maple V Release 5 (WMI Campus Wide License)
._|\| |/|_. Copyright (c) 1981-1997 by Waterloo Maple Inc. All rights
\ MAPLE / reserved. Maple and Maple V are registered trademarks of
<____ ____> Waterloo Maple Inc.
|
Type ? for help.
# solving ill-conditioned quadratic
# x^2 -9999*x+1 = 0
#
b := -9999.
x1 := ( -b - sqrt(b*b - 4) )/2;
Mutiple-precision arithmetic
Digits := 7
x1 := 0
(software)
Digits := 8
x1 := .0001
 Experimental technique
Digits := 20
x1 := .0001000100020004
Digits := 40
x1 := .000100010002000400090021005101270323
Download