# remove all variblesrm (list =ls())#################################################################################################################### A couple of introductory comments about basic math###################################################################################################################--------------------------------------------# how many zeros are there in a power of 10?#--------------------------------------------# 10^2 is 100100# 100 is the same as 10^2
[1] 100
10^2# 10^2 is the same as 100
[1] 100
# 10^3 is 10001000# 1000 is the same as 10^3
[1] 1000
10^3# 10^3 is the same as 1000
[1] 1000
# etc ...# In summary, you can figure out a power of 10, by adding the number# of zeros after the 1 that match the exponent, e.g. 10^2 is 100 (2 zeros)# This works similarly (but not exactly the same) for negative exponents of 10# 10^-1 is 0.10.1# 0.1 is the same as 10^-1
[1] 0.1
10^-1# 10^-1 is the same as 0.1
[1] 0.1
# 10^-1 is 0.10.01# 0.01 is the same as 10^-2
[1] 0.01
10^-2# 10^-2 is the same as 0.01
[1] 0.01
# etc...# The number of zeros after the decimal point is one less than the absolute value# of the exponent of 10.#-------------------------------------------------------# Intro to Scientific Notation in R## Multiplying numbers by powers of 10#-------------------------------------------------------# If you multiply a number by a POSITIVE POWER of 10 the decimal point# will move to the RIGHT by the number of positions as expressed by the exponent.# Example:1.2345*10^0# 10^0 is 1 so this doesn't change the first number
[1] 1.2345
1.2345*10^1# 10^1 is 10 so this moves the decimal to the right by 1 position
[1] 12.345
1.2345*10^2# 10^2 is 100 so this moves the decimal to the right by 1 position
[1] 123.45
1.2345*10^6# This moves the decimal point to the RIGHT by 10 positions
[1] 1234500
# The above calculations are examples of "Scientific notation".# Scientific notation is used as a shorthand for writing very big numbers# (and very small numbers - see below)#---------------------------------------------------------------------# R has a shorthand notation for writing these types of calculations.# Instead of writing 1.2345*10^6, you could instead write 1.2345e6## The "e" in the number stands for "exponent". The "e" is understood# to be read as "times ten to the power of". The number after the "e"# is the exponent for the power of 10.# EXMAPLE - all of the following are the same exact number:#---------------------------------------------------------------------1234500# this is the same
[1] 1234500
1.2345*10^6# this is the same
[1] 1234500
1.2345e6# this is the same
[1] 1234500
# By default R will display values in scientific notation if the number is# very very big. For example:12345000000# by default, R will show this value in scientific notation
[1] 1.2345e+10
#-------------------------------------------------------# Negative exponents of 10 move the decimal to the LEFT#-------------------------------------------------------# 0.00123 is the same as 0.123 * 10^-40.0123# this is the same value as below
[1] 0.0123
1.23*10^-2# this is the same value as above
[1] 0.0123
# R will display very small numbers using scientific notation also.# The following is a very small number (there are ten zeros).# R will display this in scientific notation0.0000000000123# same as 1.23e-11
[1] 1.23e-11
1.23e-11# we can write that directly also
[1] 1.23e-11
#-----------------------------------------------------# MORAL OF THE STORY - don't become alarmed## Occasionally, you will see R displaying numbers in # scientific notation. Don't become confused. Understand# that these are just "regular numbers" being displayed in # a more concise format. Any math that is done with these# numbers is the same as if you did the same math with the # equivalent non-scientific-notation format.#-----------------------------------------------------#----------------------------------------------------------# PRACTICE#----------------------------------------------------------# what are the values of the following expressions?## 1e-2 + 2e-1## 9.876e5## 5.23e4 + 1000### What will R display for the following numbers?## 12340000000000 (ten zeros)## 0.0000000000123 (ten zeros)############################################################################################################################## Floating point nubmers############################################################################################################################# Some fractions that we write do not have an exact representation# as decimal numbers. For example, many people will write# 1/3 as 0.333 ## However there really are an infinite number of 3's in the decimal # version. 0.333 is just a rough approximation. 0.3333 is closer to 1/3# and 0.33333 (five 3's) is even closer. However, you will NEVER get# an exact representation of 1/3 unless you write an infinite number# of 3's after the decimal point :(## Therefore 1/3 + 1/3 + 1/3 = 1# When converted into decimals becomes, approximately ## 0.333 + 0.333 + 0.333 = 0.999 (which looks wrong!)## Some fractions can be converted exactly, eg.# 1/2 is 0.5 exactly# 1/4 is 0.25 exactly# 1/5 is 0.2 exactly# 1/8 is 0.125 exactly# 1/10 is 0.1 exactly# 1/16 is 0.0625 exactly # 1/25 is 0.04 exactly## In general if a fraction can be reduced to an equivalent fraction whose# denominator is a power of 2 , a power of 5 or a power of 10, then the # fraction can be represented by an exact terminating decimal.#------------------------------------------------------------------# # Decimal vs Binary numbers# #------------------------------------------------------------------# Humans use numbers that have 10 different digits i.e 0,1,2 .. 9# Numbers that use all these digits are known as "base-10" numbers## Computers internally use numbers that only have 1 and 0 as digits# These numbers are known as "binary" numbers.## For more info. see the powerpoint on Canvas.# You don't have to be familar with the details of binary numbers# for this course. HOWEVER, you should understand the following ...## The nubmers that can be converted to exact decimal numbers are # different for binary numbers and for decimal numbers. # For binary nubmers (i.e. numbers that computers use internally)# fractions that can be reduced to have a power of 2 in the denominator# can be represented by a terminating decimal point value. # Other fractions cannot. ##------------------------------------------------------------------## Roundoff error##------------------------------------------------------------------# This issue leads to "roundoff" error very frequently when doing math# in computer programming- similar to 1/3 + 1/3 + 1/3 ...## R masks this issue by displaying what you might think a number is.# However, the actual value for the number might be something else. # # You can use the print.default (or just print) function with the # digits argument to display the ACTUAL value that R stores for a numberprint(0.1, digits=22)
[1] 0.1000000000000000055511
print(0.3, digits=22)
[1] 0.2999999999999999888978
# This issue can lead to "roundoff" errors. There are ways to deal with # this but it can get a little involved for this early in the course.# for right now, just accept it. We'll revisit this issue later.