COS 323 Fall 2008 Computing for the Physical and Social Sciences Ken Steiglitz.
-
date post
21-Dec-2015 -
Category
Documents
-
view
212 -
download
0
Transcript of COS 323 Fall 2008 Computing for the Physical and Social Sciences Ken Steiglitz.
COS 323 Fall 2008
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 courtesy of Prof. Szymon Rusinkiewicz),
some detailed notes, etc.
• Master list of references in pdf, some on reserve in library
Goal of course: learn “scientific” computing through applications
• 4 assignments: population genetics, finance, chaos, image processing
• Term paper
Major Topic Outline
• Simulation, using random numbers, experimenting
• Integration, root-finding• Optimization, linear programming• Ordinary diff. eqs., Partial diff. eqs.• DSP• Linear systems, image processing
(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, image processing
(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
Stanisław Ulam with MANIC I --- about 104 ops/sec
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
• Referencing all sources: Do it!
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
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 16 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
Numbers (con’t)Such 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
More subtle problem
Roots of quadratic:
Relative error in x1 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 quadraticActual root = 0.00010...Actual root = 9998.9...x1= 9999.0000000000000000000000000x2= 0.0000250025004788767546415
X2 – 9999 x + 1 = 0
Higher-level languagessuch 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; Digits := 7 x1 := 0 Digits := 8 x1 := .0001 Digits := 20 x1 := .0001000100020004 Digits := 40 x1 := .000100010002000400090021005101270323
Mutiple-precision arithmetic(software)
Experimental technique