Upload
sandra-gardner
View
219
Download
0
Tags:
Embed Size (px)
Citation preview
1
Library Functions...
1. Old functions2. Vocabulary3. Rounding numbers4. Generating random numbers5. mod()6. Properties of mod()7. Ex1: even or odd?8. Ex2: error when not a whole number
2
1. Remember these functions?
clcclear
sin(), sind() …sqrt(), abs() …
input(), fprintf(), disp()
MATLAB’s Core System has ~2300 functionsThis doesn’t include any of the toolboxes
3
But what is a function?
• A function is like a box with holes in it.
Input Output
The _________ function
Magic
sinsqrtfloorrandbazingawhy
4
2. Official vocabulary
variable = functions_name( argument list );
• Example:
hypotenuse = sqrt(a^2+b^2);
1. This is a “function call”. MATLAB “calls upon the execution” of the code behind the keyword.
3. MATLAB “collects” the “return-value” inside this variable.
2. MATLAB is “passing” inputs to the function.
1. MATLAB “calls upon the execution” of sqrt()
2. MATLAB “passes” the result of a^2+b^2”
3. MATLAB “collects” the “return-value”
5
Various uses
• While the function’s name is ALWAYS needed, the call may/may not require either one of the other 2 parts.
variable = functions_name( arguments);
• For example…clc and clear require neitherfprintf() requires at least 1 argument (the format string), but typically we do not collect the result.
6
Arguments? Collecting return values?
• 1 or many arguments:– Some functions are versatile in how many arguments they need– When there is a list of arguments, separate each with a comma: ,
1 argument: a stringage = input(‘Enter your age: ’);
2 arguments: both stringsusername = input(‘Username: ’, ‘s’);
3 arguments: 1 string and 2 variablesfprintf(‘Hello %s! You are %d years old!\n’,…
username, age);
7
Rounding functions
• Rounding floats to integer
*w.r.t = with respect to
Function Definitions Examples
2.453 12.56 -6.67
round() Rounds *w.r.t 0.5 __?__ 13 -7
ceil() Rounds towards +infinity 3 __?__ -6
floor() Rounds towards -infinity 2 12 __?__
+
-
NEW
8
Examples
How many bags of concrete mix are needed to build stairs?
Step1:-Givens needed:
- Dimensions of one step- How many stairs- How much concrete does one
bag of concrete mix make?-Find:
- Number of bags needed
Civil Eng.
9
Examples
depthwidth
height
Step3
Step4- Assume there is a support system underneath. Only the steps need to be built.- Assume units are inches for the thickness and depth, and feet for the width- Each 80lbs bag allows for a coverage of 2 sq.ft over a 4 inch height (so 2*4/12 ft^3)
Civil Eng.
Step2
10
Examples
How many bags of concrete are needed to build stairs?
Step5:Assuming 6 stairs: 3ft wide, 6in tall, 11in deep
totVolume(ft3) = Nb_stairs * width * depth * thick = 6 * 3* 6/12 * 11/12 = 8.25 ft^3
Number of bags = totVolume(ft3)/ volume1bag = 8.25/0.66 = 12.38
There is a need for ______ bags.
Civil Eng.
11
Try This
Convert 5632 seconds to a format hrs:min:sec!
5632 secd = 1.56444444 hours3600 (secd/hr)
•Round down: 1 full hour
5623 sec – 1* 3600 sec = 2023 seconds
2023 secd = 33.71666 minutes60(secd/min)
•Round down: 33 full minutes
Tonight!
12
Example2 Hrs/Min/Sec
2023 – 33*60 = 43 seconds
Conclusion:
5632seconds is also: 01:33:43
The function used to round down is: ________
Best practice: code this mini-example tonight. Allow the user to enter the initial number of seconds.
13
4. Generating Random Numbers
• Generating random numbers
• rand() is another one of those versatile functionsx=rand;x=rand(); %some keep the () to remind themselves it is a function-call vs. a variable name.
x=rand(1); %avoid, it’s overdoing it…x=rand(2); %a 2-rows by 2-columns matrixx=rand(2,5); %a 2-rows by 5-columns matrix
rand Generates one float between 0 and 1 both excluded.
rand(n) Generates a matrix with n^2 floats between 0 and 1 both excluded. (used in 2 weeks from now)
rand(n,m) Generates an n-row by m-column matrix with floats between 0 and 1 both excluded. (used in 2 weeks from now)
14
rand() and a little bit of algebra: +-
• What happens to a number k between 0 and 1 if it is added to another number? For example:
What can we say about: 2+k ?
What can we say about: k-4 ?
>> The interval shifts left/right.
0 1
k
2 3
k
0 1
15
rand() and a little bit of algebra
• What happens to a number k between 0 and 1 if it is multiplied by another number? For example:
What can we say about: 5*k ?
What can we say about: k/2 ?
>> The interval grows/shrinks.
0 1
k
0 5
k
16
rand() and a little bit of algebra
• What is the range of values K lies within?
K = rand*6;
K = rand*45-6;
K = 2+rand*3.3;
K = -6.5+rand/2;
K = (rand*3)/2-2;
? ?
K
1) Plug 0 into the formula2) Plug 1 into the formula3) Remember that all numbers between those 2 values
could be generated, but NOT those 2 values
17
End of algebra
• So.. Using a combination of arithmetic operators, how would you generate these values (both excluded):
k1 = rand_______________________;
k2 = rand_______________________;
15 20
k1
-5.5 5.5
k2
18
Conclusion
• To generate 1 float in the interval : (a,b)
k = rand*(b-a)+a; This is not a formula worth remembering.. Just remember
algebra!
(a, b) means the numbers a through b EXCLUDING a and b[a, b] means the numbers a through b INCLUDING a and bSometimes, square brackets are used and the direction it points also
indicates inclusion or exclusion. Ex: ]a, b[ is the same as (a,b)
19
What about generating whole numbers?
• If rand generates one float, how do we generate random numbers?– like dice values: 1-6? (included of course)
%roll the diedie = ____________;
20
Why not round?
• What happens with we do this:
DiceValue = round(6*rand)
(0, 1) becomes (0, 6). Think of this as 0.0001 to 5.9999.Then the number is rounded...
0 6
( )
0.5 1.5 2.5 3.5 4.5 5.5
0 1 2 3 4 5 6
21
Rounding functions
• Rounding floats to integer
*w.r.t = with respect to
floor( rand*6 + 1 )% (0-1) (0-6) (1-7) = [1.0001-6.9999] [1 – 6]
ceil( rand * 6 )% (0-1) (0-6) = [0.0001 – 5.9999] [1 – 6]
Function Definitions Examples
2.453 12.56 -6.67
round() Rounds *w.r.t 0.5 __?__ 13 -7
ceil() Rounds towards +infinity 3 __?__ -6
floor() Rounds towards -infinity 2 12 __?__
+
-
NEW
1. Modulus
• The modulus-function calculates the remainder of a long division
>> doc mod
22
1. Modulus
• The modulus-function calculates the remainder of a long division
>> doc mod
• For example:
23
>>result = 77/3result = 25.6667>>result = mod(77,3)result = 2>>
7 7
2 5
3 -6
1 7
-1 5
2
1. Modulus
• The modulus-function calculates the remainder of a long division
>> doc mod
• For example:
24
>>result = 77/3result = 25.6667>>result = mod(77,3)result = 2>>
mod(..) is a function that REQUIRES TWO ARGUMENTS.(mod(77) is an invalid statement…)
1. Modulus
• The modulus-function calculates the remainder of a long division
>> doc mod
• For example:
25
>>result = 77/3result = 25.6667>>result = mod(77,3)result = 2>>
7 7
2 5
3 -6
1 7
-1 5
2
How is this ever useful…?
2. Properties of mod()
• If x is evenly divisible by y (i.e no left-overs), mod(x,y) will return 0
• “mod” any number with another one “N”, the return-value will be a whole number from 0 to N-1. For example:
26
Mod by 2mod(2,2) 0
mod(3,2) 1
mod(4,2) 0
mod(5,2) 1
mod(6,2) 0
mod(15,2) ?
Mod by 3mod(3,3) 0
mod(4,3) 1
mod(5,3) 2
mod(6,3) 0
mod(7,3) 1
mod(26,3) ?
Mod by 5mod(2,5) 0
mod(5,5) 0
mod(6,5) 1
mod(7,5) 2
mod(8,5) 3
mod(9,5) 4mod(10,5) ?
2. Properties of mod()
• If x is evenly divisible by y (i.e no left-overs), mod(x,y) will return 0
• “mod” any number with another one “N”, the return-value will be a whole number from 0 to N-1. For example:
27
Mod by 2mod(2,2) 0
mod(3,2) 1
mod(4,2) 0
mod(5,2) 1
mod(6,2) 0
mod(15,2) ?
Mod by 3mod(3,3) 0
mod(4,3) 1
mod(5,3) 2
mod(6,3) 0
mod(7,3) 1
mod(26,3) ?
Mod by 5mod(2,5) 0
mod(5,5) 0
mod(6,5) 1
mod(7,5) 2
mod(8,5) 3
mod(9,5) 4mod(10,5) ?
2. Properties of mod()
• If x is evenly divisible by y (i.e no left-overs), mod(x,y) will return 0
• “mod” any number with another one “N”, the return-value will be a whole number from 0 to N-1. For example:
28
Mod by 2mod(2,2) 0
mod(3,2) 1
mod(4,2) 0
mod(5,2) 1
mod(6,2) 0
mod(15,2) ?
Mod by 3mod(3,3) 0
mod(4,3) 1
mod(5,3) 2
mod(6,3) 0
mod(7,3) 1
mod(26,3) ?
Mod by 5mod(2,5) 2
mod(5,5) 0
mod(6,5) 1
mod(7,5) 2
mod(8,5) 3
mod(9,5) 4mod(10,5) ?
Ex1. Even or Odd?
• Prompt the user for a whole number, then display whether that number is even or odd.
• Algorithm is rather straightforward!% prompt the user for whole number% mod the number by 2% if the result is 1
% Display ‘odd’
% if the result is 0% Display ‘even’
% if the result is something else% Display ‘ERROR’
29
Ex2: Check for integers
• Remember “Who Should Start?”% prompt how many players totaltotalPlayers = input('How many players (WHOLE number only): ');
% generate the one who starts (0-max)startPlayer = ceil(rand*totalPlayers);
% continue with game…fprintf('Player #%d will start.\n', startPlayer);
• Since there are no error-check, the following can happen!
30Let’s add an error message when an float is entered!...
Check for integers, algorithm
%prompt user for total players%if invalid (negative, zero, or not integer)
%error message%else
%generate 1st player%continue with game
31
Check for integers, code
%prompt user for total playerstotalPlayers = input('How many players (WHOLE number only): ');
% if mod( totalPlayers, 1 ) isn’t 0, totalPlayers isn’t a whole number
32
Using mod() in your answer, what does it mean for a number to not-be-an-integer?
33
Key Ideas
• Vocabulary– Function call– Arguments– Collecting– Return-values– Versatile
• New notions– Rounding up/down/ or w.r.t 0.5– Generating random numbers– Generating 1 random float value
• Manipulating it to desire random range wanted– Generating a zero/one to simulate false/true
• Examples– Cement for stairs: ceil()– Time formatting: floor()– Temperature: rand()– Rocket: all of the above!!
Key Ideas
• mod() is a built-in function that calculates the remainder of a division
• >> doc mod <enter> to see help window
• Commonly used to check if a number is divisible by another.– In other word, mod can be used to check if a number is a
multiple of another.
• mod(.., 2) is used to check even/odd• mod(.., 1) is used to check whole/decimal number• mod(.., N) is used to check if a number is divisible by N
34
35
Exam 1
• Review on Thursday• Exam on Friday in lab
• ~10 multiple choice, true false, short answer questions• Programming problem
– Open book, open note, open resource. Closed “other people”.