Presentation is loading. Please wait.

Presentation is loading. Please wait.

An Introduction To Technical Problem Solving with MATLAB v.7

Similar presentations


Presentation on theme: "An Introduction To Technical Problem Solving with MATLAB v.7"— Presentation transcript:

1 An Introduction To Technical Problem Solving with MATLAB v.7
Jon Sticklen, PhD M. Taner Eskil, PhD

2 Introduction Chapter 1

3 Intro to Technical Problem Solving with MATLAB v.7
Introduction What is Technical Problem Solving? The Path to Becoming a Good Technical Problem Solver What You Must Do to Master the Material Intro to Technical Problem Solving with MATLAB v.7

4 1-1 What is Technical Problem Solving?
Good common sense applied to technical problems Quantitative in nature Basis for making many decisions Rooted in numerical calculations Decompose the problem Mainstay of what an engineer does Intro to Technical Problem Solving with MATLAB v.7

5 1-2 The Path to Becoming a Good Technical Problem Solver
Master the conceptual subject matter of a given technical area Demonstrate what you have learned Master the tools of the trade MATLAB Mathematica MathCad Intro to Technical Problem Solving with MATLAB v.7

6 1-3 What You Must Do to Master the Material
Be prepared to spend substantial time learning this material Read assigned sections of the text with MATLAB at your side Work the problems hands-on Intro to Technical Problem Solving with MATLAB v.7

7 A Framework for Technical Problem Solving
Chapter 2

8 A Framework for Technical Problem Solving
Steps in a Framework for Technical Problem Solving An Example Using the Framework Intro to Technical Problem Solving with MATLAB v.7

9 2-1 Steps in a Framework for Technical Problem Solving
Step 1: Refine and Structure Arrive at a precise problem statement Give the problem initial structure: Problem inputs Computational output Step 2: Make a sketch or diagram Visualize the physical situation Intro to Technical Problem Solving with MATLAB v.7

10 2-1 Steps in a Framework for Technical Problem Solving
Step 3: Assemble and Organize What do you need to know to solve the problem? Get the needed information: Internet search engines such as Yahoo or Google Library Step 4: Simplify Find if there are suitable approximations Intro to Technical Problem Solving with MATLAB v.7

11 2-1 Steps in a Framework for Technical Problem Solving
Step 5: Decompose Simpler problems Reduce the complexity of the solution Step 6: Dimensional Analysis Are the mathematical relationships you intend to apply in your solution flawed? Substitute the units for each variable and algebraically simplify Intro to Technical Problem Solving with MATLAB v.7

12 2-1 Steps in a Framework for Technical Problem Solving
Step 7: Compute and Discuss Perform the computations needed to obtain a solution Use a computational tool such as MATLAB Examine and understand the results Be ready to explain them! Intro to Technical Problem Solving with MATLAB v.7

13 2-2 An Example Using the Framework
Problem: What is the optimum firing angle we should set for a catapult whose purpose is to hurl hay bales to a herd of starving caribou, given the initial velocity of hay bales as they exit the catapult? Intro to Technical Problem Solving with MATLAB v.7

14 Intro to Technical Problem Solving with MATLAB v.7
2-2.1 Refine and Structure Clarify: Think about the problem The ultimate source of information is the person setting the problem Refine: What is the firing angle of a catapult in order to hurl projectiles a maximum horizontal distance given the initial velocity of the object? What are the Input(s) and Output(s)? Initial speed, angle, maximized distance Intro to Technical Problem Solving with MATLAB v.7

15 Intro to Technical Problem Solving with MATLAB v.7
2-2.2 Sketch or Diagram What is the firing angle measured from the horizontal we should set for a catapult to hurl projectiles a maximum horizontal distance given the initial velocity of the object? Intro to Technical Problem Solving with MATLAB v.7

16 2-2.3 Background Knowledge
For our example: General knowledge of physics General knowledge of one way in which optimizing problems may be solved Seek the value of the firing angle f that maximizes the total horizontal distance D traveled given an initial speed of the hay bale as it comes out of the catapult Intro to Technical Problem Solving with MATLAB v.7

17 2-2.4 Assumptions and Approximations
Many times in technical problem solving, the path to a solution leads to making assumptions about the problem and then solving the simplified version of the problem. Negligible air resistance No difference between a hay bale and a snowball Be aware of the assumptions you are making and communicate them to the person who originally set the problem for you. Importance of good documentation Intro to Technical Problem Solving with MATLAB v.7

18 2-2.5 Decomposing /Recursive Structuring
Break the problem into pieces, each with its own well defined input and output Develop technical solutions for each piece Work backwards to find what you need Intro to Technical Problem Solving with MATLAB v.7

19 2-2.6 Dimensional Analysis
Intro to Technical Problem Solving with MATLAB v.7

20 2-2.7 Putting It All Together
f (degrees) 10 20 30 40 Unit Distance (feet) 0.0000 0.0107 0.0201 0.0271 0.0308 90 80 70 60 50 Intro to Technical Problem Solving with MATLAB v.7

21 Intro to Technical Problem Solving with MATLAB v.7
2-2 Synopsis Identify input and output variables correctly Create a sketch of the physical situation Generalize the problem Apply general background knowledge General approach to optimization problems Intro to Technical Problem Solving with MATLAB v.7

22 MATLAB Basics: Scalars
Chapter 3

23 Intro to Technical Problem Solving with MATLAB v.7
Scalars The First Time You Bring Up MATLAB MATLAB as a Calculator for Scalars Fetching and Setting Scalar Variables MATLAB Built-in Functions, Operators, and Expressions Problem Sets for Scalars Intro to Technical Problem Solving with MATLAB v.7

24 3-1 The First Time You Bring Up MATLAB
Basic windows in MATLAB are: Command - executes single-line commands Workspace - keeps track of all defined variables Command History - keeps a running record of all single line programs you have executed Current Folder - lists all files that are directly available for MATLAB use Array Editor - allows direct editing of MATLAB arrays Preferences - for setting preferences for the display of results, fonts used, and many other aspects of how MATLAB looks to you Intro to Technical Problem Solving with MATLAB v.7

25 3-2 MATLAB as a Calculator for Scalars
A scalar is simply a number… In science the term scalar is used as opposed to a vector, i.e. a magnitude having no direction. In MATLAB, scalar is used as opposed to arrays, i.e. a single number. Since we have not covered arrays (tables of numbers) yet, we will be dealing with scalars in MATLAB. Intro to Technical Problem Solving with MATLAB v.7

26 Using the Command History Window
Intro to Technical Problem Solving with MATLAB v.7

27 3-3 Fetching and Setting Scalar Variables
Think of computer variables as named containers. We can perform 2 types of operations on variables: we can set the value held in the container: x = 22 we can look at the value held in the container: x Intro to Technical Problem Solving with MATLAB v.7

28 The Assignment Operator (=)
The equal sign is the assignment operator in MATLAB. >> x = 22 places number 22 in container x How about: >> x = x + 1 Note the difference between the equal sign in mathematics and the assignment operator in MATLAB! Intro to Technical Problem Solving with MATLAB v.7

29 3-3.2 An Example - Setting Variables for the Hay Bale Problem
>> clear >> accelGravity = 32; % units: ft/sec/sec >> speedInitial = 50; % units: ft/sec >> phi = 10; % units: degrees clear deletes variables from workspace, you should use it before starting new work The percent symbol is used for putting reminders (comments) for ourselves, ignored by MATLAB Command lines ending with semicolon do not display the results. Intro to Technical Problem Solving with MATLAB v.7

30 3-4 MATLAB Built-in Functions, Operators, and Expressions
MATLAB comes with a large number of built-in functions (e.g.. sin, cos, tan, log10, log, exp) A special subclass of often-used MATLAB functions is called operators Assignment operator (=) Arithmetic operators (+, -, *, /, ^) Relational operators (<, <=, = =, ~=, >=, >) Logical operators (&, |, ~) Intro to Technical Problem Solving with MATLAB v.7

31 Example – Arithmetic Operators
Intro to Technical Problem Solving with MATLAB v.7

32 Example – Relational and Logical Operators
Intro to Technical Problem Solving with MATLAB v.7

33 3-4.2 Rules for Forming Expressions
MATLAB expressions consist of: Numerical values or variables Logical values or variables Legal applications of MATLAB functions or operators A combination of MATLAB expressions What is the error in the following MATLAB expression? >> sin(pi/2, pi/8) Intro to Technical Problem Solving with MATLAB v.7

34 Intro to Technical Problem Solving with MATLAB v.7
Order of Precedence If two operators are at the same level of precedence, the evaluation is carried out from left to right An Example – Compute for x = 4, y = 2 Intro to Technical Problem Solving with MATLAB v.7

35 Applying Scalar Computations to a Problem
Intro to Technical Problem Solving with MATLAB v.7

36 Intro to Technical Problem Solving with MATLAB v.7
Synopsis for Chapter 3 A MATLAB variable can be thought of as a named container. The value of a MATLAB variable then is the contents of the box. Setting the variable value is done using the assignment operator; fetching the value of a variable is done by typing the name of the variable. In MATLAB the type of a variable is defined by the way the variable is used. Scalars are simple numbers. Logical values can be TRUE (any non-zero number) or FALSE (0). MATLAB operators are a special subclass of MATLAB built-in functions. Arithmetic operators take numerical variables as input and output a numerical result. Relational operators take numerical variables as input and output a logical result. Logical operators take logical variables as input and output a logical result. MATLAB expressions are blueprints for performing computations. Intro to Technical Problem Solving with MATLAB v.7

37 Saving MATLAB Work Chapter 4

38 Intro to Technical Problem Solving with MATLAB v.7
Saving MATLAB Work The MATLAB “Current Directory” Saving MATLAB Commands in Script Files Saving MATLAB Commands in User-Defined Function Files Testing and Debugging MATLAB Script and Function Files Problem Sets for “Saving Your Work” Intro to Technical Problem Solving with MATLAB v.7

39 4-1 The MATLAB Current Directory
MATLAB starts up with the default folder connected It is the default folder MATLAB will save files It is the first folder MATLAB will attempt to load files It may be changed interactively using the Current Directory Window or built-in commands Intro to Technical Problem Solving with MATLAB v.7

40 4-2 Saving MATLAB Commands in Script Files
Script files are lines of code just like you would type in to the Command Window It is good programming practice to include comments for: The location of the file Variables used in the script but defined outside Results produced by the script Units of values calculated in the script Intro to Technical Problem Solving with MATLAB v.7

41 An Example – The Water Tower Problem
compute water tower cost and volume cylinder caped by hemisphere diameter and height of cylinder known known cost/m2 for hemisphere and for cylinder Intro to Technical Problem Solving with MATLAB v.7

42 Synopsis for MATLAB Scripts
A script file consists of groups of MATLAB commands bundled together into a module Scripts files have a DOT-M extension When executing inside a script file, all variables in the workspace are available Variables created in a script are available at the Command Window and in other scripts Making a sketch of a problem is important in making the problem context concrete Intro to Technical Problem Solving with MATLAB v.7

43 4-3 Saving MATLAB Commands in User-Defined Function Files
Scripts - these are lines of code exactly like you could type in to the command window Functions - are “computational boxes.” You give them a set of input values, and they calculate a set of output values. Purpose of functions is the same as the purpose of scripts + modularize your code Intro to Technical Problem Solving with MATLAB v.7

44 Intro to Technical Problem Solving with MATLAB v.7
Central Points… The only way of getting a variable’s value into a function is for that variable to be input to the function. The only way of getting a value out of a function is for that variable to be output from the function. A variable used inside a function that is not an input or an output variable is not visible outside the function. An example: >> x = pi; >> y = sin(x) Intro to Technical Problem Solving with MATLAB v.7

45 Syntax of a User Defined Function
Functions are saved in DOT M files - just like the script files Same rules for the connected directory applies First line of the file defines Name of the function Input variable(s) Output variable(s) Intro to Technical Problem Solving with MATLAB v.7

46 Defining a function – the first line
function <outputVars> = <function name>(<inputVars>) Keyword - has to be exactly as appears You choose the name - see text or ML help for valid name - mostly just start with a regular character and have no spaces. 0, 1, or more vars. If 0, then the enclosing parens are not needed. 0, 1, or more vars. If more than 1, put in square brackets. required Intro to Technical Problem Solving with MATLAB v.7

47 Linkage Between Actual and Formal Parameters
... z = myFun3(a,b) calling program: the function called: function out33 = myFun3(x,y) When the function myFun3 is “called”… The formal input variables (x,y) take the values given in the calling line (a,b) The function “runs” The output variables in the function are given back to the calling program’s variable. Intro to Technical Problem Solving with MATLAB v.7

48 Intro to Technical Problem Solving with MATLAB v.7
Comments in Functions There are no uniformly agreed upon rules for inserting comments into functions It is always good programming practice to include comment lines indicating: the purpose of the function the inputs to the function the outputs from the function any assumptions Intro to Technical Problem Solving with MATLAB v.7

49 Intro to Technical Problem Solving with MATLAB v.7
Examples function <outputVars> = <function name>(<inputVars>) For each of the following function definitions, how many input and output variables are there? function x = myFun1 function z = myFun2(y) function out33 = myFun3(x,y) function [a,b] = myFun4(q,r) Intro to Technical Problem Solving with MATLAB v.7

50 Intro to Technical Problem Solving with MATLAB v.7
Examples Intro to Technical Problem Solving with MATLAB v.7

51 Intro to Technical Problem Solving with MATLAB v.7
Examples Intro to Technical Problem Solving with MATLAB v.7

52 Synopsis for User-Defined Functions
The workspace of a function is insulated from the outside. When a MATLAB function is called, a linkage is made between the actual parameters in the call and the formal parameters in the function definition. The number of actual input parameters must be the same as the number of formal input parameters. This is also valid for the output parameters. The first line of a MATLAB function begins with the keyword function, and the rest of the first line looks like an assignment statement. Intro to Technical Problem Solving with MATLAB v.7

53 4-4 Testing and Debugging MATLAB Script and Function Files
Types of errors in programs: Syntax errors Results from incorrect application of MATLAB rules MATLAB aborts the computation and points of the error Runtime errors Results from incorrect logic and MATLAB not doing what you intend For this type error MATLAB debugging facilities are useful Intro to Technical Problem Solving with MATLAB v.7

54 Intro to Technical Problem Solving with MATLAB v.7
Examples Intro to Technical Problem Solving with MATLAB v.7

55 Intro to Technical Problem Solving with MATLAB v.7
Examples Intro to Technical Problem Solving with MATLAB v.7

56 Synopsis for Debugging
Identify the set of inputs you will use for the test Determine what you expect for each of the test input sets to produce Compare what you expect to what MATLAB produces to identify runtime errors in the function Identify and correct the line(s) of code that are causing the runtime error Intro to Technical Problem Solving with MATLAB v.7

57 Vector Operations Chapter 5

58 Intro to Technical Problem Solving with MATLAB v.7
Vector Operations Vector Creation Accessing Vector Elements Row Vectors and Column Vectors, and the Transpose Operator Vector Built-in Functions, Operators, and Expressions Intro to Technical Problem Solving with MATLAB v.7

59 Intro to Technical Problem Solving with MATLAB v.7
5-1 Vector Creation Vectors are defined in square brackets; temperaturesMonThu = [ ]; temperaturesFriSat = [35 33]; You can concatenate a vector with a scalar; temperaturesFriSun = [ ]; or concatenate 2 vectors; weeklyTemperatures = [temperaturesMonThu, temperaturesFriSun]; To find the size of a vector, we use length; numTemperatures = length(weeklyTemperatures); We could find the average temperature by typing; avgTemperature = mean(dailyTemperatures) or by using sum and length; totalTemperature = sum(dailyTemperatures)/length(dailyTemperatures); Intro to Technical Problem Solving with MATLAB v.7

60 Some Useful Vector Functions
brackets (e.g. [ ]): Creates vectors. colon operator (e.g. [0:5:30]): Creates linearly spaced vectors. linspace (e.g. linspace(0,100,21)): Creates linearly spaced vectors. length (e.g. length([0:5:30])): Finds the length of a vector. zeros (e.g. zeros(1,5)): Creates vectors filled with zeroes. ones (e.g. ones(1,5): Creates vectors filled with ones. sum (e.g. sum([ ])): Sums up the contents of a vector. sort (e.g. sort([ ])): Sorts the contents of a vector. mean (e.g. mean([ ])): Finds the average of contents. Intro to Technical Problem Solving with MATLAB v.7

61 5.2 – Accessing Vector Elements – Examples
Create a row vector x consisting of the numbers in the ordered set: { } using the colon operator. x = [1:3:10] Set a variable y to be the length of x. y = length(x) Set variable y to be the 1st element of x. y = x(1) Set variable y to be the 1st, 2nd, and 3rd elements of x. y = x([1,2,3]) OR y = x(1:3) Intro to Technical Problem Solving with MATLAB v.7

62 Accessing Vector Elements – Example cont’d.
Set variable y to be the 3rd through the last element of x - and do so such that your solution works no matter how long x is. y = x(3:end) Set variable y to be the next-to-last and last element of x - and do so such that your solution works no matter how long x is. y = x([end-1,end]) Change the 2nd element of x to be 3. x(2) = 3 Change the 2nd element of x to be 102 and the 4th element of x be 205. x([2,4]) = [102, 205] Intro to Technical Problem Solving with MATLAB v.7

63 Synopsis for Fetching and Setting Elements in Vectors
Access to whole vector is similar to scalar access. Accessing element(s) in a vector is done by indexing into the vector. To delete element(s) in a vector, empty square brackets are used. To find the length of a vector V, use the length built-in function length(V). When setting elements of a vector, the number of elements being set must be equal to the number of elements in the vector on the right hand side of the assignment operation. The exception is that a scalar on the right-hand side can be used to set multiple vector elements. Intro to Technical Problem Solving with MATLAB v.7

64 5-3 Row Vectors and Column Vectors, and the Transpose Operator
Row and column vectors are represented as single rows and columns of values, respectively. When creating a column vector with square brackets, you may use the semicolon operator: temp = [35; 33; 27]; or you may use the transpose operator; temp = [ ]’; When creating an equally spaced column vector, you need to use the transpose operator; springConstants = [10:10:100]’; springConstants = linspace(10,100,10)’; Intro to Technical Problem Solving with MATLAB v.7

65 5-4 Vector Built-in Functions, Operators, and Expressions
Intro to Technical Problem Solving with MATLAB v.7

66 Sample Problem – Vector Built-in Functions
Intro to Technical Problem Solving with MATLAB v.7

67 Sample Problem – Vector Arithmetic Operators
Intro to Technical Problem Solving with MATLAB v.7

68 Sample Problem – Vector Arithmetic Operators
Intro to Technical Problem Solving with MATLAB v.7

69 Sample Problem – Vector Arithmetic Operators
Intro to Technical Problem Solving with MATLAB v.7

70 Vector Relational Operators
Think of them as comparing numbers… <, >, = =, >=, <= A relational operator can be used to compare the values of two variables a>b But… remember MATLAB is for matrices what are you testing? Intro to Technical Problem Solving with MATLAB v.7

71 Intro to Technical Problem Solving with MATLAB v.7
What are you testing? Number (scalar) vs. Number Number vs. Vector (or Matrix) A scalar is compared to each element of the vector… 5<[1:10] Vector vs. Vector Each corresponding element of the two vectors is compared… [1:10]<=[10:-1:1] Intro to Technical Problem Solving with MATLAB v.7

72 Sample Problem – Vector Relational Operators
Intro to Technical Problem Solving with MATLAB v.7

73 Vector Logical Operators
They operate on the results of relational operators How many elements in vector x are in range (6,10)? How many elements in x are … greater than 6 AND … less than 10? We use logical operators… AND (&), OR (|), NOT (~) any, all Intro to Technical Problem Solving with MATLAB v.7

74 Sample Problem – Vector Logical Operators
Intro to Technical Problem Solving with MATLAB v.7

75 Synopsis for Vector Operators
There are functions that work in a cell-by-cell fashion (like sin) and functions that aggregate (like sum). Cell-by-cell vector operators apply the indicated operation to the corresponding elements of the two vectors. For cell-by-cell operations, the two arguments must be the same type of vector (row or column) and be of the same length, or one of the arguments must be a scalar. Cell-by-cell vector operators include the classes (assignment, colon and transpose operators), the vector arithmetic cell-by-cell operators (Table 5-2), the vector relational operators (Table 5-4), and vector cell-by-cell logical operators (Table 5-5). Logical computations are extended via built-in logical functions (Table 5-6). The built-in logical function find is useful because it enables a type of content addressing. The operator precedence table was updated to include new possibilities (Table 5-7). Intro to Technical Problem Solving with MATLAB v.7

76 2-D Plotting and Help in MATLAB
Chapter 6

77 2-D Plotting and Help in MATLAB
Using EZPLOT to Plot Functions Using Vectors to Plot Numerical Data Overlay plots and subplots Other 2-D plot types in MATLAB Problem Sets for 2-D Plotting Intro to Technical Problem Solving with MATLAB v.7

78 6-1 Using EZPLOT to Plot Functions
Intro to Technical Problem Solving with MATLAB v.7

79 Intro to Technical Problem Solving with MATLAB v.7
Getting Help You can’t possibly learn everything there is to know about MATLAB, … and you don’t need to. It is crucial to develop the ability to augment your knowledge in MATLAB toward accomplishing a given task. Intro to Technical Problem Solving with MATLAB v.7

80 Intro to Technical Problem Solving with MATLAB v.7
Getting Help cont’d Intro to Technical Problem Solving with MATLAB v.7

81 Intro to Technical Problem Solving with MATLAB v.7
Getting Help cont’d Click the tab in the navigation pane labeled Search. Then type into the Search field the name ezplot. Intro to Technical Problem Solving with MATLAB v.7

82 Using EZPLOT to Plot Functions
There are three forms of ezplot: f(x) e.g., f(t) = 3e-2tcos(5t) ezplot('3*exp(-2*t)*cos(5*t)') f(t), g(t) e.g., f(t) = 3t2 + 2; g(t) = sin(5t) ezplot('3*t^2 + 2', 'sin(5*t)') f(x,y) = 0 e.g., f(x,y) = 3xy + y = 0 ezplot('3*x*y + y^2 + 55',[-30,30,-20,20]) Intro to Technical Problem Solving with MATLAB v.7

83 Sample Problem - EZPLOT
Intro to Technical Problem Solving with MATLAB v.7

84 Intro to Technical Problem Solving with MATLAB v.7
Graphing with MATLAB Use ezplot to make a quick and dirty chart of functions. Optional arguments allow changing the default functional domain [-2π, 2π]. Use xlabel, ylabel, and title built-in functions to refine labeling the plots made by ezplot. When needed, use grid to activate a grid on a plot created. If you would like to keep the existing graph and generate a new one, use figure. Intro to Technical Problem Solving with MATLAB v.7

85 6-2 Using Vectors to Plot Numerical Data
Mostly from observed data - your goal is to understand the relationship between the variables of a system. Determine the independent and dependent variables and plot: speed = 20:10:70; stopDis = [46,75,128,201,292,385]; plot(speed, stopDis, '-ro') % note the ‘-ro’ switch Don’t forget to properly label your graphs: title('Stopping Distance versus Vehicle Speed', 'FontSize', 14) xlabel('vehicle speed (mi/hr)', 'FontSize', 12) ylabel('stopping distance (ft)', 'FontSize', 12) grid on Speed (mi/hr) 20 30 40 50 60 70 Stopping Distance (ft) 46 75 128 201 292 385 Intro to Technical Problem Solving with MATLAB v.7

86 Sample Problem – Plotting Numerical Data
Intro to Technical Problem Solving with MATLAB v.7

87 Plotting Functions Numerically
ezplot is a great tool for plotting functions, but it has several disadvantages: it doesn’t provide as much control as plot, e.g. dotted lines. you must fill in values for any constants, e.g. When you need more control, plot numerically with plot: d = 4; h = linspace(1,10); % Step 1 - create vector for independent variable V = pi*d^2/4*h; % Step 2 – compute vector for dependent variable plot(h,V,'-r') % Step 3 - plot and label xlabel('height (m)', 'FontSize', 12) ylabel('Volume (m^3)', 'FontSize', 12) title('Volume of a cylinder versus its height','FontSize', 14) grid on Intro to Technical Problem Solving with MATLAB v.7

88 Sample Problem – Plotting Functions Numerically
A function G(x,y,z) of three independent variables is defined as: Write a function that takes no inputs or outputs but creates a plot of G(x,y,z), subject to: 0.1 < x < 4 y = 5, z = 3 Intro to Technical Problem Solving with MATLAB v.7

89 Synopsis for ezplot and plot
The first argument to plot should be the vector of values for the independent variable (going on the x-axis); the second argument should be the vector of values for the dependent variable (going on the y-axis). An optional third argument plot is the line spec which specifies the type of line used (solid, dotted, etc.), the color of the line used, and the type of data marker (if any). For plotting numerical data from experimentation or observation, use data markers. For plotting numerical data that are computed from a mathematical relationship, data markers must not be used. Intro to Technical Problem Solving with MATLAB v.7

90 6-3 Overlay Plots and Subplots
Allows putting more than one relationship directly into the same plotting window. Two key functions: hold and legend For multiple dependent variables whose data are not of the same type, e.g. acceleration, speed and distance Key function to learn: subplot Intro to Technical Problem Solving with MATLAB v.7

91 Sample Problems – Overlay Plots and Subplots
Intro to Technical Problem Solving with MATLAB v.7

92 Sample Problems – Overlay Plots and Subplots
Intro to Technical Problem Solving with MATLAB v.7

93 Synopsis for Overlay Plots and Subplots
Overlay plots are used to show a family of parameterized results hold on is the key MATLAB command needed to turn on overlays Subplots are used to display plots of different independent variables usually from one experimental data set or from one set of equations for a single physical system. subplot is the key MATLAB command needed to identify the target for a created plot. Intro to Technical Problem Solving with MATLAB v.7

94 Arrays Chapter 7

95 Intro to Technical Problem Solving with MATLAB v.7
So far we have learned… Using MATLAB for scalar computations (Ch. 3) Saving your work in MATLAB user-defined functions (Ch. 4) Debugging MATLAB functions (Ch. 4) Using MATLAB for vector operations (Ch. 5) Using MATLAB to make 2-D plots (Ch. 6) Using the MATLAB Help facility to let you extend what you know (Ch. 6) Intro to Technical Problem Solving with MATLAB v.7

96 Intro to Technical Problem Solving with MATLAB v.7
The Pattern… Scalars – numbers MatLab Vectors – Ordered, linear groupings of scalars Simple extension – MatLab Arrays Instead of having a one-dimensional grouping of scalars as in vectors, MATLAB arrays are two-dimensional groups of scalars. Intro to Technical Problem Solving with MATLAB v.7

97 Intro to Technical Problem Solving with MATLAB v.7
7-1 Array Creation Intro to Technical Problem Solving with MATLAB v.7

98 Intro to Technical Problem Solving with MATLAB v.7
Creating Arrays A semicolon as punctuation in the square bracket operator tells MATLAB to start a new row >> A = [1, 2, 3; 10, 20, 30] linspace and the colon operator can be used to create vectors that are subsequently composed into an array: >> A = [1:3:15; linspace(0,1,5)] or… >> A = [(1:3:15)', linspace(0,1,5)'] Intro to Technical Problem Solving with MATLAB v.7

99 Intro to Technical Problem Solving with MATLAB v.7
Things to know… A typical mistake – trying to concatenate incompatible vectors: >> B1 = [1, 2, 3]; >> B2 = [10, 11]; >> stackedUpDown = [B1; B2] ??? Error using ==> vertcat All rows in the bracketed expression must have the same number of columns. Creating an array whose elements are all value 0 (or 1) : >> twoByFourZeros = zeros(2,4) Intro to Technical Problem Solving with MATLAB v.7

100 Synopsis for Creating Arrays
Semicolon punctuation inside the square bracket operator indicates to MATLAB that a new row is to be created. When concatenating arrays, their dimensions must be consistent. ones and zeros are built-in functions that create arrays whose elements are all value 1 or all value 0, respectively. ones and zeros take two arguments: the number of rows and the number of columns in the array that will be created. Intro to Technical Problem Solving with MATLAB v.7

101 7-2 Accessing Array Elements
Intro to Technical Problem Solving with MATLAB v.7

102 Intro to Technical Problem Solving with MATLAB v.7
Fetching Elements Create an array A by the following: >> A = [1,2,3,4; 10,11,12,13; 20, 21,22,23] Pull out the value of the element at the second row, third column: >> x = A(2,3) Fetch the second and third elements in the second row of A: >> V = A(2, [2,3]) Extract the entire second column: >> X2 = A(:, 2) Fetch the entire third and fourth columns: >> partOfB = A(:, [3,4]) Fetch the first and second elements in the second and third columns: >> anotherPartOfB = A([1,2], [2,3]) Intro to Technical Problem Solving with MATLAB v.7

103 Fetching Elements cont’d
How would you address to number 0? Row first, column next; >> A(2,4) How about 2? >> A(3,2) Intro to Technical Problem Solving with MATLAB v.7

104 Fetching Elements cont’d
How can we extract the collection of numbers in the dotted box? That is, the numbers in the 1st through 3rd rows, 2nd through 4th columns… Specify the row and column numbers by counting them… A(1:3, 2:4) Intro to Technical Problem Solving with MATLAB v.7

105 Intro to Technical Problem Solving with MATLAB v.7
Setting Elements Create an array A by the following: >> A = [1,2,3,4; 10,11,12,13; 20, 21,22,23] Set the element at row two and column 4 to 100: >> A(2,4) = 100; Create a new array B that is identical to modified A, except that the second and third columns are interchanged. >> B = A; >> B(:,[2,3]) = A(:, [3,2]) The shape of the array to be set must be the same as the shape of the array that holds the new values. Intro to Technical Problem Solving with MATLAB v.7

106 Built-in Functions end and size
Create an array A by the following: >> A = [1,2,3,4; 10,11,12,13; 20, 21,22,23] Replace the last and next to last row/column elements with [100, 101; 200, 201] >> A(end-1:end,end-1:end) = [100, 101; 200, 201] For vectors, we had length to return the number of elements. For arrays, size built-in function is used: >> [numRows, numCols] = size(A) Intro to Technical Problem Solving with MATLAB v.7

107 Synopsis for Setting Elements
Array access operations (fetch and set) are directly analogous to vector access operations. For array setting, the part of an array to be set and the elements which will be inserted must be the same shape. The colon may be used as an index element to indicate all. end is used in array access as it is used in vector access. To determine the number of rows and columns in an array, use size. Intro to Technical Problem Solving with MATLAB v.7

108 7-3 Transpose Applied to Arrays
Intro to Technical Problem Solving with MATLAB v.7

109 The Transpose Operator
The transpose operator is used to flip an array. More formally, if A is an NxM vector, then A' will be an MxN array whose elements are defined by A'(i,j) = A(j,i). >> D = [1,2,3,4; 10,11,12,13; 20, 21,22,23] >> transposeD = D’ The effect of applying the transpose operator to an array is to flip rows and columns. What was a row is now a column, and what was a column is now a row. Intro to Technical Problem Solving with MATLAB v.7

110 7-4 Array Built-in Functions, Operators, and Expressions
Intro to Technical Problem Solving with MATLAB v.7

111 Built-in Functions and Operators
The same types in Vectors exist – with new possibilities >> D = [1,10; 100,110] >> sumOverColumns = sum(D,1) >> sumOverRows = sum(D,2) Intro to Technical Problem Solving with MATLAB v.7

112 Cell-by-Cell Operators
Arrays A and B are defined as: >> A = [2:4; 20:10:40] >> B = [1:3; 1:3] Find cell-by-cell product of A and B: >> A .* B Find A raised to the power B, cell-by-cell: >> A .^ B Find A/B, cell-by-cell: >> A ./ B A./B stands for , whereas B./A stands for , cell-by-cell Intro to Technical Problem Solving with MATLAB v.7

113 Example Problem 1 Cell-by-Cell Operators
The ABC electronics factory makes four different items: a 48-inch HDTV, a 32-inch regular TV, a computer called the M2 model, and a DVD player called the R2 model. Compute: (a) the total cost for materials used on all four product lines for each quarter and (b) the total yearly cost for materials used in each of four product lines. Intro to Technical Problem Solving with MATLAB v.7

114 Example Problem cont’d
Find by hand quarter 1 to material costs from the HDTV product line. 532 * $892 = $474,544. Think through the problem statement. This problem is not conceptually difficult but is tedious. MATLAB provides a better way… Intro to Technical Problem Solving with MATLAB v.7

115 Intro to Technical Problem Solving with MATLAB v.7
Matrix Operators Matrix multiplication operation is defined as: The number of columns in A must be equal to the number of rows in B. Otherwise, this is not a legal operation. Assuming Rule 1 is met the number of rows in C will be equal to the number of rows in A. Likewise, the number of columns in C will be equal to the number of columns in B. Intro to Technical Problem Solving with MATLAB v.7

116 Matrix Multiplication
1 2 3 4 9 7 8 6 1*9 + 2*8 (1,1) 1*7 + 2*6 (1,2) = X 3*9 + 4*8 (2,1) 3*7 + 4*6 (2,2) 2 X 2 2 X 2 2 X 2 25 19 59 45 = Intro to Technical Problem Solving with MATLAB v.7

117 Example Problem 2 Matrix Operators
Intro to Technical Problem Solving with MATLAB v.7

118 Revisiting Example Problem 1
The ABC electronics factory makes four different items: a 48-inch HDTV, a 32-inch regular TV, a computer called the M2 model, and a DVD player called the R2 model. Compute: (a) the total cost for materials used on all four product lines for each quarter and (b) the total yearly cost for materials used in each of four product lines. Intro to Technical Problem Solving with MATLAB v.7

119 Example Problem cont’d
= ? Intro to Technical Problem Solving with MATLAB v.7

120 Example Problem 3 Matrix Operators
Intro to Technical Problem Solving with MATLAB v.7

121 Intro to Technical Problem Solving with MATLAB v.7
Matrix Left Division A linear system of equations can be modeled as: In other words… Intro to Technical Problem Solving with MATLAB v.7

122 Matrix Left Division cont’d
Can be solved for x as follows: Or in MatLab by left division: Intro to Technical Problem Solving with MATLAB v.7

123 Example Problem 4 Matrix Left Division
Jeanie, Juan, and Alexander each have some fruit. Each has a number of apples, oranges, and pears. All apples have the same weight, all oranges have the same weight, and all pears have the same weight. Jeanie has 3 apples, 2 oranges, and 1 pear. The total weight of fruit that Jeanie has is 52 ounces. Juan has 2 apples, 3 oranges, and 1 pear. The total weight of fruit that Juan has is 50 ounces. Alexander has 1 apple, 2 oranges, and 3 pears. The total weight of fruit that Alexander has is 56 ounces. What is the weight of each apple, orange, and pear? Intro to Technical Problem Solving with MATLAB v.7

124 Example Problem 5 Relational and Logical Operators
Using the find function, find and display: the row and column numbers of elements in A that are less than zero elements that are less than zero elements that are greater than -4 but less than 4 Using the all or any functions, determine: if all elements in A are greater than -8 if any elements in A are less than -5 Intro to Technical Problem Solving with MATLAB v.7

125 Intro to Technical Problem Solving with MATLAB v.7
Synopsis Arrays are indexed by giving the row and column locations. All cell-by-cell operations are generalizations of the corresponding vector operation. Matrix multiplication can be very advantageous when the problem you are solving involves a sum of scalar multiplication operations. Matrix left division is often used to solve systems of linear simultaneous equations. Values in an array that meet some relational test may be extracted using find as an indexing term. Two output values are returned when the find function is applied to an array: a vector of row index values and a corresponding vector of column index values. Intro to Technical Problem Solving with MATLAB v.7

126 Conditional and Iterative Programming
Chapter 7

127 Intro to Technical Problem Solving with MATLAB v.7
8-1 Program Flow Straight Line Code One line of code after another… just in sequence. Also called “sequential code”. Intro to Technical Problem Solving with MATLAB v.7

128 Intro to Technical Problem Solving with MATLAB v.7
Program Flow cont’d Conditional Code Based on a test, perform one alternative set of code and not another… NO YES test Intro to Technical Problem Solving with MATLAB v.7

129 Intro to Technical Problem Solving with MATLAB v.7
Program Flow cont’d Iterative code Execute the same block of code again and again … repeat… Intro to Technical Problem Solving with MATLAB v.7

130 Synopsis for Program Flow Types
There are three major types of program control: straight line control, conditional control, and iterative control. Programming constructs for conditional control and iterative control should be considered “modules,” meaning there is one point of entrance into the construct and one point of exit. Straight line code executes in the order it is written in a program. Conditional code executes one alternative of a number of possibilities, selecting the alternative to run based on a relational/logical test of program variables. Iterative code executes the same block of code a number of times. Intro to Technical Problem Solving with MATLAB v.7

131 8-2 Iterative Program Flow: FOR
General form: A FOR loop must end with a line containing end. Intro to Technical Problem Solving with MATLAB v.7

132 Questions for the Iterative Case
How many times does it repeat? What controls how many times it repeats? How are you going to set parameter values in a handy way for each “pass” Intro to Technical Problem Solving with MATLAB v.7

133 Iteration over Elements of a Row Vector
Name of var that changes mySum = 0; for itemThisTime = [ ] mySum = mySum + itemThisTime; display(itemThisTime); display(mySum ); disp('====') end disp('***********************') mySum Values taken on by changing var Code to be repeated Intro to Technical Problem Solving with MATLAB v.7

134 Iteration over Columns of an Array
Name of var that changes sumColumnProducts = 0; for oneCol = [ ; ] sumColumnProducts = sumColumnProducts + oneCol(1)*oneCol(2); display(oneCol); display(sumColumnProducts); disp('====') end disp('***********************') sumColumnProducts Values taken on by changing var Code to be repeated Intro to Technical Problem Solving with MATLAB v.7

135 Intro to Technical Problem Solving with MATLAB v.7
Nested FOR Loops function cellSum = prob8_A_11(A,B) % Calculates cell-by-cell sum of two arrays % Input: 2 arrays of dimensions nxm % Output: Cell-by-cell product array nxm [nRows,nCols] = size(A); cellSum = zeros(nRows, nCols); for i=1:nRows for j=1:nCols cellSum(i,j)=A(i,j)+B(i,j); end Intro to Technical Problem Solving with MATLAB v.7

136 Intro to Technical Problem Solving with MATLAB v.7
Synopsis for FOR FOR loops are used in cases where you need more control over computations than allowed in cell-by-cell operations. FOR loops start with a code line that begins with keyword for and end with keyword end. FOR loops iterate over a code block body using successive values of supplied vector or array. If a FOR loop is supplied with an array, then successive values of the columns of the array are set to the value of the loop variable. To understand a FOR loop, a good strategy is to “step through” the loop. Intro to Technical Problem Solving with MATLAB v.7

137 8-4 Conditional Program Flow
if <conditions> <statements> end; Form 1: IF J&T Computers is planning to give a $3,000 holiday bonus to every employee provided ALL employees have a performance evaluation higher than 3/5. For the dataset, find if bonus will be given. Employee Numbers, Performance Ratings, Salaries Intro to Technical Problem Solving with MATLAB v.7

138 Conditional Program Flow cont’d
if <conditions> <statements> else end; Form 2: IF/ELSE Instead of giving bonus to all employees, consider the following scenario: every employee with a performance rating of 4 or 5 gets a 5 percent holiday bonus while all other employees will get a 2 percent bonus. Employee Numbers, Performance Ratings, Salaries Intro to Technical Problem Solving with MATLAB v.7

139 Conditional Program Flow cont’d
if <conditions> <statements> elseif end; Form 3: IF/ELSEIF New scenario: Employees with performance ratings of 5 get a 4% bonus, those with performance ratings of 4 get a 2% bonus, and those with performance ratings of 3 get a 1% bonus. Employee Numbers, Performance Ratings, Salaries Intro to Technical Problem Solving with MATLAB v.7

140 Conditional Program Flow cont’d
if <conditions> <statements> elseif else end; Form 4: IF/ELSEIF/ELSE One last scenario: employees with performance ratings of 5 get a 4% bonus, those with performance ratings of 4 get a 3% bonus, those with performance ratings of 3 get a 2% bonus, and everyone else gets a 1% bonus Employee Numbers, Performance Ratings, Salaries Intro to Technical Problem Solving with MATLAB v.7

141 Intro to Technical Problem Solving with MATLAB v.7
Sample Problem I will be depositing $5,000 in the beginning of every year in my bank account. The bank offers an interest rate of 4%. When will I be a millionaire? How much savings will I have after 10 years? Intro to Technical Problem Solving with MATLAB v.7

142 Intro to Technical Problem Solving with MATLAB v.7
Synopsis IF-THEN-ELSE can be used to express conditional program control. It is best understood in four distinct forms. IF: In this form, one relational/logical test exists. During execution, if the test results in true, then the commands in the following block are run. If the test results in false, then the commands are not run. IF-ELSE: This form performs a relational/logical test and, if true, then runs a set of commands. If false, an alternative set of commands is run. IF-ELSEIF: There can be multiple ELSEIF clauses. Only one (at most) code block following a test will be run, which will be the one following the first test that results in true. IF-ELSEIF-ELSE: This form is a combination of the second and third forms. The key to effective use is to correctly match the problem situation you have with one of the appropriate four forms. Intro to Technical Problem Solving with MATLAB v.7


Download ppt "An Introduction To Technical Problem Solving with MATLAB v.7"

Similar presentations


Ads by Google