AMTH142 Lecture 10. Scilab Graphs Floating Point Arithmetic

Similar documents
1.2 Round-off Errors and Computer Arithmetic

MATH 353 Engineering mathematics III

2 Computation with Floating-Point Numbers

Math 340 Fall 2014, Victor Matveev. Binary system, round-off errors, loss of significance, and double precision accuracy.

CS321 Introduction To Numerical Methods

MAT128A: Numerical Analysis Lecture Two: Finite Precision Arithmetic

Floating-point representation

Bindel, Fall 2016 Matrix Computations (CS 6210) Notes for

Floating Point Representation. CS Summer 2008 Jonathan Kaldor

2 Computation with Floating-Point Numbers

Floating-point numbers. Phys 420/580 Lecture 6

Roundoff Errors and Computer Arithmetic

Section 1.4 Mathematics on the Computer: Floating Point Arithmetic

Floating-Point Arithmetic

Floating-Point Numbers in Digital Computers

Floating-Point Numbers in Digital Computers

Lecture Notes: Floating-Point Numbers

Classes of Real Numbers 1/2. The Real Line

Binary floating point encodings

Mathematical preliminaries and error analysis

AM205: lecture 2. 1 These have been shifted to MD 323 for the rest of the semester.

Computer Arithmetic. 1. Floating-point representation of numbers (scientific notation) has four components, for example, 3.

COMP2611: Computer Organization. Data Representation

Computational Methods. Sources of Errors

Most nonzero floating-point numbers are normalized. This means they can be expressed as. x = ±(1 + f) 2 e. 0 f < 1

Table : IEEE Single Format ± a a 2 a 3 :::a 8 b b 2 b 3 :::b 23 If exponent bitstring a :::a 8 is Then numerical value represented is ( ) 2 = (

Review of Calculus, cont d

Computational Methods CMSC/AMSC/MAPL 460. Representing numbers in floating point Error Analysis. Ramani Duraiswami, Dept. of Computer Science

Lecture Objectives. Structured Programming & an Introduction to Error. Review the basic good habits of programming

CS 6210 Fall 2016 Bei Wang. Lecture 4 Floating Point Systems Continued

2.1.1 Fixed-Point (or Integer) Arithmetic

Computing Basics. 1 Sources of Error LECTURE NOTES ECO 613/614 FALL 2007 KAREN A. KOPECKY

Floating Point Numbers

Floating Point Representation in Computers

CSCI 402: Computer Architectures. Arithmetic for Computers (3) Fengguang Song Department of Computer & Information Science IUPUI.

CS321. Introduction to Numerical Methods

fractional quantities are typically represented in computers using floating point format this approach is very much similar to scientific notation

Introduction to Scientific Computing Lecture 1

Review Questions 26 CHAPTER 1. SCIENTIFIC COMPUTING

Floating-Point Arithmetic

Floating Point Considerations

The Perils of Floating Point

Foundations of Computer Systems

Scientific Computing. Error Analysis

Chapter 3. Errors and numerical stability

Lecture 10. Floating point arithmetic GPUs in perspective

Scientific Computing: An Introductory Survey

Class 5. Data Representation and Introduction to Visualization

Floating Point (with contributions from Dr. Bin Ren, William & Mary Computer Science)

Floating Point Puzzles. Lecture 3B Floating Point. IEEE Floating Point. Fractional Binary Numbers. Topics. IEEE Standard 754

Dr Richard Greenaway

Floating point. Today! IEEE Floating Point Standard! Rounding! Floating Point Operations! Mathematical properties. Next time. !

Computer Systems C S Cynthia Lee

What Every Programmer Should Know About Floating-Point Arithmetic

Floating point. Today. IEEE Floating Point Standard Rounding Floating Point Operations Mathematical properties Next time.

Finite arithmetic and error analysis

Data Representation and Introduction to Visualization

Floating Point January 24, 2008

OUTLINE. Number system. Creating MATLAB variables Overwriting variable Error messages Making corrections Entering multiple statements per line

Chapter 2 Float Point Arithmetic. Real Numbers in Decimal Notation. Real Numbers in Decimal Notation

FLOATING POINT NUMBERS

Numerical Precision. Or, why my numbers aren t numbering right. 1 of 15

Numerical computing. How computers store real numbers and the problems that result

Computational Economics and Finance

Data Representation Floating Point

CO212 Lecture 10: Arithmetic & Logical Unit

Data Representation Floating Point

Hani Mehrpouyan, California State University, Bakersfield. Signals and Systems

Real Numbers finite subset real numbers floating point numbers Scientific Notation fixed point numbers

Plotting x-y (2D) and x, y, z (3D) graphs

What we need to know about error: Class Outline. Computational Methods CMSC/AMSC/MAPL 460. Errors in data and computation

Floating Point Numbers

Floating Point Numbers

AMS 27L LAB #2 Winter 2009

Floating Point Arithmetic

AN INTRODUCTION TO MATLAB

Computational Mathematics: Models, Methods and Analysis. Zhilin Li

Computational Methods CMSC/AMSC/MAPL 460. Representing numbers in floating point and associated issues. Ramani Duraiswami, Dept. of Computer Science

Floating Point Puzzles The course that gives CMU its Zip! Floating Point Jan 22, IEEE Floating Point. Fractional Binary Numbers.

3.1 DATA REPRESENTATION (PART C)

Interactive MATLAB use. Often, many steps are needed. Automated data processing is common in Earth science! only good if problem is simple

Introduction to Computer Programming with MATLAB Calculation and Programming Errors. Selis Önel, PhD

Introduction to numerical algorithms

CS 261 Fall Floating-Point Numbers. Mike Lam, Professor.

Signed Multiplication Multiply the positives Negate result if signs of operand are different

Floating Point Puzzles. Lecture 3B Floating Point. IEEE Floating Point. Fractional Binary Numbers. Topics. IEEE Standard 754

Chapter 3: Arithmetic for Computers

Computational Methods CMSC/AMSC/MAPL 460. Representing numbers in floating point and associated issues. Ramani Duraiswami, Dept. of Computer Science

1. NUMBER SYSTEMS USED IN COMPUTING: THE BINARY NUMBER SYSTEM

Number Systems. Both numbers are positive

Chapter 2. Data Representation in Computer Systems

ELEC4042 Signal Processing 2 MATLAB Review (prepared by A/Prof Ambikairajah)

Finding, Starting and Using Matlab

MATLAB Project: Getting Started with MATLAB

AMTH142 Lecture 12. Programming in Scilab Files in Scilab and Maxima

Bryant and O Hallaron, Computer Systems: A Programmer s Perspective, Third Edition. Carnegie Mellon

1.3 Floating Point Form

System Programming CISC 360. Floating Point September 16, 2008

1 Introduction to MATLAB

MATLAB Tutorial. Mohammad Motamed 1. August 28, generates a 3 3 matrix.

Transcription:

AMTH142 Lecture 1 Scilab Graphs Floating Point Arithmetic April 2, 27 Contents 1.1 Graphs in Scilab......................... 2 1.1.1 Simple Graphs...................... 2 1.1.2 Line Styles........................ 4 1.1.3 Multiple Curves..................... 4 1.1.4 Multiple Plots...................... 5 1.1.5 Titles and Captions................... 6 1.1.6 Other Features...................... 7 1.1.7 3D Curves......................... 7 1.1.8 Histograms........................ 8 1.2 Floating Point Arithmetic.................... 9 1.2.1 Representation of Floating Point Numbers....... 9 1.2.2 Precision......................... 9 1.2.3 Exceptional Values.................... 1 1.2.4 Rounding......................... 11 1.2.5 Cancellation....................... 12 1

1.1 Graphs in Scilab 1.1.1 Simple Graphs The simplest graph takes two vectors and plots one against the other: -->x = (-2:.1:2); -->y = sin(x)./x; -->plot2d(x,y) 1..8.6.4.2..2.4 2 15 1 5 5 1 15 2 You should have noticed the use of the dot operator. To see why it is necessary first note that x is a vector. So is sin(x) whose components are obtained by applying the sin function element-by-element to the vector x. To construct the vector y whose components are obtained by applying the function sin x/x element-by-element to the vector x we preform element-byelement division of the vector sin(x) by the vector x. Scilab graphs joins points by straight lines which sometimes gives the graph a slight polygonal look. If you want a smooth looking graph you need to take a fairly dense of points, 1 will usually do, for the x-coordinates. We can also plot a single vector, whose components are plotted against 1, 2,..., n where n is the length of the vector. First we use clf to clear the graphics window and then plot the components of the vector y used earlier: -->clf -->plot2d(y) 2

1..8.6.4.2..2.4 5 1 15 2 25 3 35 4 45 Notice the different scaling on the x-axis. Here is another example: -->x = linspace(-1, 1, 1); -->y = 2*sin(x) + 3*sin(2*x) + 7*sin(3*x) + 5*sin(4*x); -->clf, plot2d(x,y) 2 15 1 5 5 1 15 2 1 8 6 4 2 2 4 6 8 1 In this example linspace(-1,1,1) produces a vector which consists of 1 evenly spaced points between -1 and 1. Also note that we can use commas or semicolons to separate two or more commands on the one line. 3

1.1.2 Line Styles The graphs we have looked at so far were of continuous curves. Data can also be plotted as points by using the style option to the plot2d command. Negative values for style correspond to different types of points, positive values for style correspond to different colours. You can use the xset() command to bring up a menu to set different styles and colours as well as things like line thickness. -->x = rand(1,1); -->y = rand(1,1); -->clf, plot2d(x,y,style = -1) 1..9.8.7.6.5.4.3.2.1...1.2.3.4.5.6.7.8.9 1. 1.1.3 Multiple Curves We can plot multiple curves, one on top of the other, by plotting them successively without clearing the screen. Alternatively, if y is a matrix, the command plot2d(x, y) plots each of the columns of the matrix y as a separate curve. In this case x has to be a column vector the same length as the columns of y. We could also plot the curves in different styles, by setting style to a vector of style numbers. -->x = linspace(-1, 1, 1) ; -->y1 = 2*sin(x); y2 = 3*sin(2*x); -->y3 = 7*sin(3*x); y4 = 5*sin(4*x); 4

-->y = y1 + y2 + y3 + y4; -->clf, plot2d(x,[y1 y2 y3 y4 y]) 2 15 1 5 5 1 15 2 1 8 6 4 2 2 4 6 8 1 Note that the use of the transpose to define x as a column vector. Then each of y1, y2, y3, y4, and y is also a column vector and [y1 y2 y3 y4 y] is a 5 column matrix. 1.1.4 Multiple Plots Multiple graphs can included in one figure using the subplot command. -->clf -->subplot(2,2,1) -->plot2d(x,y1) -->subplot(2,2,2) -->plot2d(x,y1+y2) -->subplot(2,2,3) -->plot2d(x,y1+y2+y3) -->subplot(2,2,4) -->plot2d(x,y1+y2+y3+y4) 5

2. 1.5 1..5..5 1. 1.5 2. 1 8 6 4 2 2 4 6 8 1 5 4 3 2 1 1 2 3 4 5 1 8 6 4 2 2 4 6 8 1 15 1 5 5 1 15 1 8 6 4 2 2 4 6 8 1 2 15 1 5 5 1 15 2 1 8 6 4 2 2 4 6 8 1 1.1.5 Titles and Captions Titles and captions can be added, after a graph has been drawn, using the xtitle command. It takes three arguments the title for graph, the caption for the x-axis and the caption for the y-axis. If you don t need a title just use a blank string, i.e.. -->x = -2:.1:2; -->clf, plot2d(x, sin(x)./x) -->xtitle( A TITLE, x, sin(x)/x ) sin(x)/x A TITLE 1..8.6.4.2..2.4 2 15 1 5 5 1 15 2 x 6

Note the unusual placement of the axis labels. There is nothing that I am aware of that you can do about this. 1.1.6 Other Features There a lot more Scilab can do with graphs, for example -->clf, plot2d(x, sin(x)./x, rect=[-2 -.5 2 1.5],... -->axesflag=5) 1.5 1..5. 2 15 1 5 5 1 15 2.5 In this example, the rect option sets the bounds on the x and y axes and the axesflag=5 places the axes so that they cross at the origin (, ). The latest version (3.1.1) of Scilab seems to have much enhanced graphics facilities. Try Scilab s help if you want more information. 1.1.7 3D Curves Curves in 3 dimensional space can be plotted using param3d. It takes three vectors containing the values the x, y and z coordinates of the points on the curve. By clicking on the 3D Rot button on the graphics window and playing around with the mouse you can alter the orientation of the graph. Here is a 3-D spiral: -->z = :.1:1; -->clf, param3d(z.*sin(5*z), z.*cos(5*z), z) 7

1 9 8 7 6 Z 5 4 3 2 1 1 8 6 4 2 Y 2 4 6 8 1 8 1 6 4 2 X 1 8 6 4 2 1.1.8 Histograms Histograms can be plotted with the histplot(n, data) command. Here n is the number of bins in the histogram and data is the vector of data for which we want to draw the histogram. The following example draws a histogram from a vector of normally distributed random numbers. -->rr = rand(1,1, normal ); -->clf, histplot(1, rr).45.4.35.3.25.2.15.1.5. 5 4 3 2 1 1 2 3 4 5 8

1.2 Floating Point Arithmetic 1.2.1 Representation of Floating Point Numbers The arithmetic used by Scilab is called floating point arithmetic. Scientific notation is used to express floating point numbers; the number 1.2345 1 6 is written in Scilab as 1.2345e-6. Internally floating point numbers are stored in a binary format known as IEEE double precision arithmetic. Each floating point number occupies 64 bits, which contain the sign, digits and exponent of the number. The details of the binary representation are not usually important in practical applications, but the finite precision of floating point numbers has some important implications: 1. Each floating point number is capable of representing about 16 decimal digits (actually 53 bits). 2. There is a limit on the range of exponents; from about 1 38 to 1 +38 (actually 2 122 to 2 +123 ). The most important consequence of this is that it is impossible to calculate with more than 16 digits precision. This, in itself, is not a problem since it is rare in practical applications to require more accuracy than this. However it can happen that much less accuracy is attained in actual calculations due to rounding errors. 1.2.2 Precision The usual measure of precision in floating point arithmetic is the number machine epsilon, written ε mach, and defined to be difference between the number 1 and the next largest floating point number. In IEEE arithmetic the number 1 has the representation 1 } {{ } 52bits and the next largest floating point number is 1 } {{ 1 } 52bits Thus ε mach = 2 52 2.22 1 16 9

In Scilab ε mach is denoted by %eps. -->%eps %eps = 2.22E-16 To check the defining property of ε mach, note that -->(1 + %eps) - 1 ans = 2.22E-16 -->(1 + %eps/2) - 1 ans =. In floating point arithmetic if we add ε mach to 1 we get a number different to 1, while if add half this much the result is still 1. 1.2.3 Exceptional Values Besides the usual floating point numbers, IEEE arithmetic has two special numbers Inf, for infinity, and Nan, for not-a-number. Inf typically occurs when we try try to produce a number whose exponent is greater than the maximum exponent: -->z = 1e3 z = 1.+3 -->w = z*z w = Inf This is called overflow. It is easy to recognize when overflow has occurred since an Inf always results. If the result of a calculation has exponent less than the smallest exponent, the result is set to zero. This is called underflow and, while it is usually harmless it can sometimes cause unexpected errors. 1

-->z = 1e-3 z = 1.-3 -->w = z*z w =. The following shows some ways Nan s can arise: -->z = (1e3)^2 z = Inf -->w = *z w = Nan -->w = z - z w = Nan 1.2.4 Rounding When arithmetic operations are preformed on floating point numbers the exact result will not, in general, be representable as a floating point number. The exact result will be rounded to the nearest 1 floating point number, a process called, obviously enough, rounding. In IEEE arithmetic all results of floating point operations are correctly rounded, something that was rarely done on early computers. We will look at an example to give an idea of the rounding process using base 1 arithmetic (although as pointed out above computers use binary arithmetic). Suppose we are doing arithmetic with, say, 5 decimal digits precision. Let x = 1.2345 1 6 y = 6.789 1 3 1 In the case of a tie, the round to even rule is used. 11

then, in exact arithmetic, x + y = 1.241289 1 6 x y = 1.227711 1 6 x y = 8.38125 1 9 and these are rounded to x + y = 1.2413 1 6 x y = 1.2277 1 6 x y = 8.381 1 9 respectively. Rounding errors are unavoidable in numerical computation due to the finite precision of floating point arithmetic. The relative error due to rounding is less than 1/2ε mach 1.1 1 16, but this can be expected to occur in every floating point operation, including binary/decimal conversion on reading/writing floating point numbers. 1.2.5 Cancellation Cancellation error occurs when two nearly equal numbers are subtracted. Consider the calculation -->x = 3.141592653589793 x = 3.1415927 -->y = 3.141592653585682 y = -->x-y ans = 3.1415927 4.111E-12 Here x is a 16 digit approximation to π while y agrees with π to 12 digits. What is the error in the calculation? We know the relative error due to rounding is less than 1/2ε mach 1.1 1 16. The problem is that in converting x and y from decimal to 12

binary, that is approximating x and y by floating point numbers, we have relative errors of the same magnitude. Thus the absolute error in x is E abs 1/2ε mach x 3.5 1 16 with the same size error in y. We would expect the same size error in their difference, giving a relative error of about E rel 3.5 1 16 /4.1 1 12 = 8.5 1 5. Any number that is not an exact floating point number, and this includes the results of almost all calculations, will have a relative error of the order of 1/2ε mach. Whenever two such numbers which are nearly equal are subtracted, cancellation error will occur giving a result with less precision than the original numbers. Example An instructive example of cancellation error occurs when we approximate the derivative of function by a formula such as f (x) f(x + h) f(x) h As h gets smaller and smaller the approximation gets better until in the limit as h we get the definition of the derivative. Computing with this formula has the numerical problem that as h gets smaller, f(x + h) and f(x) get closer together and cancellation error will occur. In fact if h is small enough, f(x + h) and f(x) will be represented by the same floating point numbers giving the approximation f (x). We will take f(x) = sin x and approximate the derivative at x = 1 using values of h from 1 2 down to 1 16 : -->n = -2:-2:-16 n =! - 2. - 4. - 6. - 8. - 1. - 12. - 14. - 16.! -->h = 1.^n h = 1.E-8 * 13

column 1 to 6! 1. 1. 1. 1..1.1! column 7 to 8!.1 1.E-8! Note (1) the use of the dot operator and (2) how Scilab puts a scale factor outside of the array. -->approx = (sin(1+h) - sin(1))./h approx = column 1 to 4!.53686.54262.54319.54323! column 5 to 8!.54322.543455.54493.! The error in the approximation is: -->err = approx - cos(1) err = column 1 to 4! -.42163 -.421 -.4-2.97E-9! column 5 to 8! - 5.848E-8.432.377 -.54323! At first the main cause of error is the approximation itself and the error decreases as h decreases. At h = 1 1 the error begins to increase. The main cause of error now is cancellation and the error increases rapidly until at h = 1 16 the approximate derivative is zero and totally useless. 14