600 likes | 821 Views
MA/CS 375. Fall 2002 Lecture Summary Week 1 We ek 7. Theoretical Exercise. Say we wish to design a self-playing computer game like asteroids . The player controls a rocket. There are enemy rockets who can shoot torpedoes and who can ram the player.
E N D
MA/CS 375 Fall 2002 Lecture Summary Week 1 Week 7
Theoretical Exercise • Say we wish to design a self-playing computer game like asteroids. • The player controls a rocket. • There are enemy rockets who can shoot torpedoes and who can ram the player. • There are moving asteroids of fairly arbitrary shape. • Let’s work through the details involved……
Review • We are going to do a fast review from basics to conclusion.
Week 1 • Basics
Ok – Cast your minds back We are first faced with a text prompt:
Basic Math We can create our own variables and apply basicalgebraic operations on these variables. Basic operations include addition (+), multiplication (*), subtraction (-), division (/ or \).
a = 1 b = a/2 c = b*3 Do the math and: b = a/2 = ½ c = b*3 = 1.5
Basic Arrays (Matrices) • We can create one- or two-dimensional variables of arbitrary size. • We can then apply basic linear algebra operations on these.
Example 2 A is a matrix with 3 rows and 2 columns.
Matrix Multiplication • There is a specific definition of matrix multiplication. • In index notation: • i.e. for the (i,j) of the result matrix C we take the i’th row of A and multiply it, entry wise, with the j’th column of B
Functions in Matlab • Matlab has a number of built-in functions: • cos, sin, tan, acos, asin, atan • cosh, sinh, tanh, acosh, asinh, atanh • exp, log, sqrt • They all take matrices as arguments and return matrices of the same dimensions. • e.g. cos([1 2 3]) • For other functions type: > help matlab\elfun
Custom-Made Matlab Functions Say we wish to create a function that turns Cartesian coordinates into polar coordinates. We can create a text file with the following text. It can be called like any built in function. function [ radius, theta] = myfunc( x, y) % this is a comment, just like // in C++ % now create and evaluate theta (in radians) theta = atan2(y,x); % now create and evaluate radius radius = sqrt( x.^2 + y.^2); function end
Make sure you use cdin Matlab to change to the directory containing myfunc.m the arguments to myfunccould also have been matrices – leading to two matrices being output. Custom Built Function For Matlab
Matlab as Programming Language • We can actually treat Matlab as a coding language. • It allows script and/or functions. • Loops are allowed, but since Matlab is an interpreted language, their use can lead to slow code.
Loops in Matlab One variant of Matlab loop syntax is: for var=start:end commands; end
Say I want to add the numbers from 1 to 10, without using the Matlab intrinsic sum. Example of a Matlab Loop
Week 2 • Plotting • Finite precision effects
Plotting • Recall we can create a function of a vector. • Then plot the vector as one ordinate and the function of the vector as the other ordinate.
subplot • If you wish to create a figure with two sub-figures you can use the subplot function: • subplot(1,2,1) requests1 row of figures2 columns of figures1st figure
subplot(1,2,1) subplot(1,2,2)
Starting Numerics • We next considered some limitations inherent in fixed, finite-precision representation of floating point numbers.
A Convergent Binary Representation of Any Number Between 0 and 1 a similar representation in base 10: Volunteer ?
Finite Binary Approximations of a Real Number We can easily show that TN is bounded as: (think of Zeno’s paradox)
Monster #1 • Consider: • What should its behavior be as: • Use subplots for the following 2 plots • Plot this function at 1000 points in: • Plot this function at 1000 points in: • Label everything nicely, include your name in the title. • In a text box explain what is going on, print it out and hand it in
Monster #1 Each stripe is a region where 1+ x is a constant (think about the gaps between numbers in finite precision) Then we divide by x and the stripes look like hyperbola. The formula looks like (c-1)/x with a new c for each stripe. when we zoom in we see that the large+small operation is introducing order eps errors which we then divide with eps to get O(1) errors !.
Monster #2 • Consider: • What should its behavior be as:
Monster #2 cont(finite precision effects from large*(1+small) ) As x increases past ~=36 we see that f drops to 0 !!
Monster #4 • Consider: • What should its behavior be as:
Monster 4 cont Behavior as delta 0 : or if you are feeling lazy use the definition of derivative, and remember: d(sin(x))/dx = cos(x)
Monster 4 cont(parameter differentiation, delta=1e-12) Worse
Monster 4 cont(parameter differentiation, delta=1e-15) Bad When we make the delta around about machine precision we see O(1) errors !.
Approximate Explanation of Monster #4 1) Taylor’s thm: 2) Round off errors 3) Round off in computation of f and x+delta 4) Put this together:
i.e. for or equivalently approximation error decreases as delta decreases in size. BUT for round off dominates!.
Week 3 & 4 • We covered taking approximate derivatives in Matlab and manipulating images as matrices.
Week 5 • Approximation of the solution to ordinary differential equations. • Adams-Bashforth schemes. • Runge-Kutta time integrators.
Ordinary Differential Equation • Example: • t is a variable for time • u is a function dependent on t • given u at t = 0 • given that for all t the slope of us is –u • what is the value of u at t=T
Forward Euler Numerical Scheme • Numerical scheme: • Discrete scheme: where:
Summary of dt Stability • 0 < dt <1 stable and convergent since as dt 0 the solution approached the actual solution. • 1 <= dt < 2 bounded but not cool. • 2 <= dt exponentially growing, unstable and definitely not cool.
N-Body Newtonian Gravitation Simulation • Goal: to find out where all the objects are after a time T • We need to specify the initial velocity and positions of the objects. • Next we need a numerical scheme to advance the equations in time. • Can use forward Euler…. as a first approach.