360 likes | 536 Views
Library Functions. Old functions Vocabulary Rounding numbers Generating random numbers mod() Properties of mod() Ex1: even or odd? Ex2: error when not a whole number. 1. Remember these functions ?. clc clear sin(), sind () … sqrt (), abs() … input(), fprintf(), disp ()
E N D
Library Functions... Old functions Vocabulary Rounding numbers Generating random numbers mod() Properties of mod() Ex1: even or odd? Ex2: error when not a whole number
1. Remember these functions? clc clear sin(), sind() … sqrt(), abs() … input(), fprintf(), disp() MATLAB’s Core System has ~2300functions This doesn’t include any of the toolboxes
But what is a function? • A function is like a box with holes in it. Output Input Magic bazinga floor rand why sqrt sin The _________ function
2. Official vocabulary 2. MATLAB is “passing” inputs to the function. 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 “passes” the result of a^2+b^2” 3. MATLAB “collects” the “return-value” 1. MATLAB “calls upon the execution” of sqrt()
Various uses • While the function’s name is ALWAYSneeded, the call may/may not require either one of the other 2 parts. variable = functions_name( arguments); • For example… clc and clear require neither fprintf() requires at least 1 argument (the format string), but typically we do not collect the result.
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 string age = input(‘Enter your age: ’); 2 arguments: both strings username = input(‘Username: ’, ‘s’); 3 arguments: 1 string and 2 variables fprintf(‘Hello %s! You are %d years old!\n’,… username, age);
Rounding functions NEW • Rounding floats to integer *w.r.t = with respect to + -
Examples Civil Eng. 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
Examples Civil Eng. Step2 • 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 2sq.ft over a 4 inch height (so 2*4/12ft^3) height depth width
Examples Civil Eng. 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.
Try This Tonight! • Convert 5632 seconds to a format hrs:min:sec! • 5632 secd = 1.56444444 hours • 3600 (secd/hr) • Round down: 1 full hour • 5623 sec – 1* 3600 sec = 2023 seconds • 2023 secd = 33.71666 minutes • 60(secd/min) • Round down: 33 full minutes
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.
4. Generating Random Numbers • Generating random numbers • rand() is another one of those versatile functions x=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 matrix x=rand(2,5); %a 2-rows by 5-columns matrix
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. k 1 0 k 0 2 1 3
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. k 0 1 k 0 5
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 formula 2) Plug 1 into the formula 3) Remember that all numbers between those 2 values could be generated, but NOT those 2 values
End of algebra • So.. Using a combination of arithmetic operators, how would you generate these values (both excluded): k1 = rand_______________________; k2 = rand_______________________; k1 k2 15 -5.5 20 5.5
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 b Sometimes, square brackets are used and the direction it points also indicates inclusion or exclusion. Ex: ]a, b[ is the same as (a,b)
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 die die = ____________;
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 1 2 3 4 5 6 ( ) 0 0.5 1.5 2.5 3.5 4.5 5.5 6
Rounding functions NEW • 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] + -
1. Modulus • The modulus-function calculates the remainder of a long division >> doc mod
1. Modulus • The modulus-function calculates the remainder of a long division >> doc mod • For example: 2 5 >>result = 77/3 result = 25.6667 >>result = mod(77,3) result = 2 >> 3 7 7 -6 1 7 -1 5 2
1. Modulus • The modulus-function calculates the remainder of a long division >> doc mod • For example: >>result = 77/3 result = 25.6667 >>result = mod(77,3) result = 2 >> mod(..) is a function that REQUIRESTWO ARGUMENTS. (mod(77) is an invalid statement…)
1. Modulus • The modulus-function calculates the remainder of a long division >> doc mod • For example: 2 5 >>result = 77/3 result = 25.6667 >>result = mod(77,3) result = 2 >> 3 7 7 -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:
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:
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:
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’
Ex2: Check for integers • Remember “Who Should Start?” % prompt how many players total totalPlayers = 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! Let’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
Check for integers, code %prompt user for total players totalPlayers = input('How many players (WHOLE number only): '); % if mod( totalPlayers, 1 ) isn’t 0, totalPlayers isn’t a whole number Using mod() in your answer, what does it mean for a number to not-be-an-integer?
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
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”.