420 likes | 517 Views
CSE123. Lecture 5. Arrays and Array Operations. Definitions. Scalars: Variables that represent single numbers . Note that c omplex numbers are also scalars, even though they have two components.
E N D
CSE123 Lecture 5 Arrays and Array Operations
Definitions • Scalars: Variables that represent single numbers.Note that complexnumbers are also scalars, even though they have two components. • Arrays: Variables that represent more than one number. Each number is called an element of thearray.Array operationsallow operating on multiple numbers at once. • Row and Column Arrays (Vector): A row of numbers (called a row vector) or a column of numbers(called a column vector). • Two-Dimensional Arrays (Matrix): A two-dimensional table of numbers, called a matrix.
Vector Creation by Explicit List • A vector in Matlab can be created by an explicit list, starting with a left bracket, entering thevalues separated by spaces (or commas) and closing the vector with a right bracket. >>x=[0 .1*pi .2*pi .3*pi .4*pi .5*pi .6*pi .7*pi .8*pi .9*pi pi] >>y=sin(x) >>y = Columns 1 through 7 0 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 Columns 8 through 11 0.8090 0.5878 0.3090 0.0000
Vector Addressing / indexation • A vector element is addressed in Matlab with an integer index (also called a subscript) enclosedin parentheses. >> x(3) ans = 0.6283 >> y(5) ans = 0.9511 Colon notation: Addresses a block of elements. The format is: (start:increment:end) Note start, increment and end must be positive integer numbers. If the increment is to be 1, ashortened form of the notation may be used: (start:end) >> x(1:5) ans = 0 0.3142 0.6283 0.9425 1.2566 >> x(7:end) ans = 1.8850 2.1991 2.5133 2.8274 3.1416 >> y(3:-1:1) ans = 0.5878 0.3090 >> y([8 2 9 1]) ans = 0.8090 0.3090 0.5878 0
Vector Creation Alternatives • Combining: A vector can also be defined using another vector that has already been defined. >> B = [1.5, 3.1]; >> S = [3.0 B] S = 3.0000 1.5000 3.1000 • Changing: Values can be changed by referencing a specific address >> S(2) = -1.0; >> S S = 3.0000 -1.0000 3.1000 • Extending: Additional values can be added using a reference to a specific address. >> S(7) = 8.5; >> S S = 3.0000 -1.0000 3.1000 5.5000 0 0 8.5000 >> S(4) = 5.5; >> S S = 3.0000 -1.0000 3.1000 5.5000
Vector Creation Alternatives • Colon notation: • (start:increment:end) • where start, increment, and end can now be floating point numbers. x=(0:0.1:1)*pi x = Columns 1 through 7 0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850 Columns 8 through 11 2.1991 2.5133 2.8274 3.1416 • linspace: generates a vector of uniformly incremented values, but instead ofspecifying the increment, the number of values desired is specified. Theform: • linspace(start,end,number) The increment is computed internally, having the value:
Vector Creation Alternatives >> x=linspace(0,pi,11) x = Columns 1 through 7 0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850 Columns 8 through 11 2.1991 2.5133 2.8274 3.1416 logspace(start_exponent,end_exponent,number) To create a vector starting at 100 = 1,ending at 102 = 100 and having 11 values: >> logspace(0,2,11) ans = Columns 1 through 7 1.0000 1.5849 2.5119 3.9811 6.3096 10.0000 15.8489 Columns 8 through 11 25.1189 39.8107 63.0957 100.0000
Vector Length length(x): To determine the length of a vector array. >> x = [0 1 2 3 4 5] x = 0 1 2 3 4 5 >> length(x) ans = 6
Vector Orientation A column vector, having one column and multiple rows, can be created by specifying it element byelement, separating element values with semicolons: The transpose operator (’) is used to transpose a row vector into a column vector >> a = 1:5 a = 1 2 3 4 5 >> c = a’ c = 1 2 3 4 5 >> c = [1;2;3;4;5] c = 1 2 3 4 5
Matrix arrays in Matlab A= [ 1 2 3 ]; A= [ 1, 2, 3 ]; B= [ 1 2 ; 3 4 ]; C= [ 5 ; 6 ; 7 ];
Matrix Arrays A matrix array is 2D, having both multiple rows and multiple columns. Creation of 2D arrays follows that of row and column vectors: • Begin with [ end with ] • Spaces or commas are used to separate elements in a row. • A semicolonor Enter is used to separate rows. >>f = [1 2 3; 4 5 6] f = 1 2 3 4 5 6 >> g = f’ g = 1 4 2 5 3 6 >> h = [1 2 3 4 5 6 7 8 9] h = 1 2 3 4 5 6 7 8 9 >> k = [1 2;3 4 5] ??? Number of elements in each row must be the same.
Special matrix creation Manipulations and Combinations: A = 10 10 10 10 Matrix full of 10: >> A=10*ones(2,2) Matrix of random numbers between 0 and 10 >> B=10*rand(2,2) B = 4.5647 8.2141 0.1850 4.4470 Matrix of random numbers between -1 and 0 >> C= -rand(2,2) C = -0.4103 -0.0579 -0.8936 -0.3529 Matrix of random numbers between -1 and 1 >> C=2*rand(2,2) –ones(2,2) >> C=2*rand(2,2) -1 C = -0.6475 0.8709 -0.1886 0.8338
Square brackets Special matrix creation Concatenation: Combine two (or more) matrices into one Notation: C=[ A, B ] >> A=ones(2,2); >> B=zeros(2,2); >>C=[A , B] >>D=[A ; B] D = 1 1 1 1 0 0 0 0 C = 1 1 0 0 1 1 0 0
Matrix indexation Row index Column index Obtain a single value from a matrix: Ex: want to know a21 Notation: A(2,1) >> A=[1 2 3; 3 2 1; 1 2 4]; >> A(2,1) ans = 3 >> A(3,2) ans = 2
Row 1 to 3 Colon Column 2 to 3 Row 2, ALL columns Matrix indexation Obtain more than one value from a matrix: Ex: X=1:10 Notation: A(1:3,2:3) Colon defines a “range”: 1 to 10 Colon can also be used as a “wildcard” >> A=[1 2 3; 3 2 1; 1 2 4]; >> B=A(1:3,2:3) B = 2 3 2 1 2 4 >> C=A(2,:) C = 3 2 1
Matrix size >> whos Name Size Bytes Class A 2x3 48 double array ans 1x1 8 double array c 1x1 8 double array r 1x1 8 double array s 1x2 16 double array >> A = [1 2 3; 4 5 6] A = 1 2 3 4 5 6 >> s = size(A) s = 2 3 >> [r,c] = size(A) r = 2 c = 3
Special matrix creation zeros(M,N) Matrix of zeros ones(M,N) Matrix of ones eye(M,N) Matrix of ones on the diagonal rand(M,N) Matrix of random numbers between 0 and 1 >> A=zeros(2,3) A = 0 0 0 0 0 0 >> B=ones(2,2) B = 1 1 1 1 >> C=eye(2,2) C = 1 0 0 1 >> D=rand(3,2) D = 0.9501 0.4860 0.2311 0.8913 0.6068 0.7621
Operations on vectors and matrices in Matlab “single quote”
Array Operations Scalar-Array Mathematics Addition, subtraction, multiplication, and division of an array by a scalar simply apply the operationto all elements of the array. >> f = [1 2 3; 4 5 6] f = 1 2 3 4 5 6 >> g = 2*f -1 g = 1 3 5 7 9 11
Array Operations Element-by-Element Array-Array Mathematics When two arrays have the same dimensions, addition, subtraction, multiplication, and division applyon an element-by-element basis. OperationAlgebraic Form Matlab Addition a + b a + b Subtraction a − ba - b Multiplication a x b a.*b Division a / b a./b Exponentiation aba.^b
Array Operations M M N N M N MATRIX Addition (substraction)
Array Operations Examples: Addition & Subtraction 2 4 6 0 0 0 10 12 8 0 0 0 14 18 16 0 0 0
Array Operations Element-by-Element Array-Array Mathematics >> A = [2 5 6]; >> B = [2 3 5]; >> C = A.*B C = 4 15 30 >> D = A./B D = 1.0000 1.6667 1.2000 >> E = A.^B E = 4 125 7776 >> F = 3.0.^A F = 9 243 729
Array Operations M M N N NOTATION “dot” M “multiply” N MATRIX Multiplication (element by element)
Array Operations Examples: Multiplication & Division (element by element) 1 4 9 1 1 1 16 25 36 1 1 1 49 64 81 1 1 1
Array Operations Matrix Multiplication The matrix multiplication of m x n matrix A and nxp matrix B yields m x p matrix C, denotedby C = AB Element cijis the inner product of row i of A and column j of B Note that AB ≠ BA
Array Operations Column 1 Row 1 M1 M2 N1 N2 N1=M2 NOTATION M1 N2 “multiply” Matrix Multiplication Cell 1-1
Array Operations 1x1 + 2x3 +3x3 1x2 + 2x2 +3x1 1x3 + 2x1 +3x2 Example: Matrix Multiplication 16 9 11 12 11 13 12 10 14
Array Operations Solving systems of linear equations Example: 3 equations and 3 unknown 1x + 6y + 7z =0 2x + 5y + 8z =1 3x + 4y + 5z =2 Can be easily solved by hand, but what can we do if it we have 10 or 100 equations?
Array Operations First, write a matrix with all the (xyz) coefficients Write a matrix with all the constants Finally, consider the matrix of unknowns Solving systems of linear equations 1x + 6y + 7z = 0 2x + 5y + 8z = 1 3x + 4y + 5z = 2
Array Operations Solving systems of linear equations A x S = B A x S = B A-1 x A-1 x (A-1 x A) x S = A-1 x B Ix S = A-1 x B S = A-1 x B
Array Operations Solving systems of linear equations The previous set of equations can be expressed in the following vector-matrix form: A x S = B X 1x + 6y + 7z =0 2x + 5y + 8z =1 3x + 4y + 5z =2
Array Operations Formula for a 2x2 matrix: Matrix Determinant • The determinant of a square matrix is a very useful value for finding if a system of equations has a solution or not. • If it is equal to zero, there is no solution. Notation: Determinant of A =|A| ordet(A) det(M)= m11 m22 – m21 m12 IMPORTANT: the determinant of a matrix is a scalar
Array Operations Matrix Inverse • The inverse of a matrix is really important concept, for matrix algebra • Calculating a matrix inverse is very tedious for matrices bigger than 2x2. We will do that numerically with Matlab. Notation: inverse of A =A-1 or inv(A) Formula for a 2x2 matrix: M-1= IMPORTANT: the inverse of a matrix is a matrix
Array Operations Example: Matrices properties Property of inverse : A x A-1 = I and A-1xA = I Property of identity matrix: I x A = A and Ax I = A
Solving systems of equations in Matlab x + 6y + 7z =0 2x + 5y + 8z =1 3x + 4y + 5z =2 In Matlab: >> A=[ 1 6 7; 2 5 8; 3 4 5] >> B=[0;1;2]; >> S=inv(A)*B Verification: >> det(A) ans = 28 >> S = 0.8571 -0.1429 0
Solving systems of equations in Matlab x + 6y + 7z =0 2x + 5y + 8z =1 3x + 4y + 9z =2 In Matlab: >> A=[ 1 6 7; 2 5 8; 3 4 5] >> B=[0;1;2]; >> S=inv(A)*B Verification: >> det(A) ans = 0 Warning: Matrix is singular to working precision. >> S = NaN NaN NaN NO Solution!!!!!
y F1 7N 20o 60o x 30o 80o 5N F2 Applications in mechanical engineering Find the value of the forces F1and F2
y F1 7N 20o 60o x 80o 30o 5N F2 Applications in mechanical engineering Projections on the X axis F1 cos(60) + F2 cos(80) – 7 cos(20) – 5 cos(30) = 0
y F1 7N 20o 60o x 80o 30o 5N F2 Applications in mechanical engineering Projections on the Y axis F1 sin(60) - F2 sin(80) + 7 sin(20) – 5 sin(30) = 0
Applications in mechanical engineering F1 cos(60) + F2 cos(80) – 7 cos(20) – 5 cos(30) = 0 F1 sin(60) - F2 sin(80) + 7 sin(20) – 5 sin(30) = 0 F1 cos(60) + F2 cos(80) = 7 cos(20) + 5 cos(30) F1 sin(60) - F2 sin(80) = - 7 sin(20) + 5 sin(30) In Matlab, sin and cos use radians, not degree In Matlab: >> CF=pi/180; >> A=[cos(60*CF), cos(80*CF) ; sin(60*CF), –sin(80*CF)]; >> B=[7*cos(20*CF)+5*cos(30*CF) ; -7*sin(20*CF)+5*sin(30*CF) ] >> F= inv(A)*Bor (A\B) Solution: F1= 16.7406 N F2= 14.6139 N F = 16.7406 14.6139