This presentation is the property of its rightful owner.
1 / 21

# Vectors and Matrices PowerPoint PPT Presentation

Vectors and Matrices. Lecture Basic vector & matrix concepts Creating arrays and matrices Accessing matrix components Manipulating matrices Matrix functions Solving simultaneous equations. Learning Objectives Understand the nature of matrices

Vectors and Matrices

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

### Vectors and Matrices

Lecture

• Basic vector & matrix concepts

• Creating arrays and matrices

• Accessing matrix components

• Manipulating matrices

• Matrix functions

• Solving simultaneous equations

Learning Objectives

Understand the nature of matrices

Understand how to manipulate matrices in Matlab

AE6382 Design Computing

### Using Matlab with Arrays and Matrices

• Matlab’s origins are in the early efforts to develop fast and efficient programs for handling linear equations…

• Operations with arrays, vectors and matrices are needed

• Only the most computationally efficient routines are used

• Matlab is very “C-like” but adds a number of operators and extends its syntax to handle a range of array, vector and matrix operations

• Matlab’s fundamental data structure is the array and vectors and matrices follow easily

• BUT… to see some of the power of Matlab for engineering applications, we’ll have to dig a bit more deeply into some of the underlying math (no, this is not going to turn into a math class, but it’s often hard to avoid math in engineering)

AE6382 Design Computing

### Basic Concepts

Scalars: magnitude only

x, mass, color, 13.451

Vectors: magnitude AND direction

Arrays: can be 2D or higher dimension

AE6382 Design Computing

### Matlab Can Handle This…

Scalars:

>> whos

Name Size Bytes Class

a 1x1 8 double array

density 1x1 8 double array

mass 1x1 8 double array

resistance 1x1 8 double array

s 1x1 8 double array

stress 1x1 8 double array

Vectors:

>> force=[12.3, 5.67]

force =

12.3000 5.6700

>> hvec=[1, 5, -3, 4, 0]

hvec =

1 5 -3 4 0

Arrays:

>> coef=[1, 2; -4, 3]

coef =

1 2

-4 3

AE6382 Design Computing

### Basic Array Operations

• Addition/subtraction: C=A+B where cij = aij+bij

• Multiplication/division: C=A .* B where cij = aij*bij

• Exponentiation: C=A .^ 4 where cij = aij4

>> C=A+B

C =

-3 3

-7 9

B =

-4 1

-3 6

A =

1 2

-4 3

>> C=A.*B

C =

-4 2

12 18

>> C=A./B

C =

-0.2500 2.0000

1.3333 0.5000

>> C=A.^2

C =

1 4

16 9

AE6382 Design Computing

### Notes on Array Operations

• Arithmetic operations on arrays are just like the same operations for scalars but they are carried out on an element-by-element basis.

• the dot (.) before the operator indicates an array operator; it is needed only if the meaning cannot be automatically inferred.

• when combining arrays, make sure they all have the same dimensions

• applies to vectors, 2D arrays, multi-dimensional arrays

>> A=[1 2 3 4 5];

>> 2.*A

ans =

2 4 6 8 10

>> 2*A

ans =

2 4 6 8 10

>> B=[2 4 6 8 10];

>> A.*B

ans =

2 8 18 32 50

>> A*B

??? Error using ==> *

Inner matrix dimensions must agree.

AE6382 Design Computing

### More Notes on Array Operations

• Most Matlab functions will work equally well with both scalars and arrays (of any dimension)

• Use brackets […] to construct arrays

• Use colon notation (e.g., A(:,2) or f(3:11) to index)

>> A=[1 2 3 4 5];

>> sin(A)

ans =

0.8415 0.9093 0.1411 -0.7568 -0.9589

>> sqrt(A)

ans =

1.0000 1.4142 1.7321 2.0000 2.2361

AE6382 Design Computing

### Array Constructors

• Arrays are often read into Matlab from files or entered by the user…

• But building arrays from scratch can be tedious

• Explicit:

• Using Matlab array constructors:

>> g(1)=1; g(2)=3; g(3)=-4

g =

1 3 -4

>> A=ones(2,3)

A =

1 1 1

1 1 1

>> B=-3*ones(1,5)

B =

-3 -3 -3 -3 -3

>> C=zeros(2,3)

C =

0 0 0

0 0 0

AE6382 Design Computing

### Let’s Build Some Arrays…

What will these produce?

>> A=3*eye(2,2)

A =

3 0

0 3

>> B=diag([1 2 3 4])

B =

1 0 0 0

0 2 0 0

0 0 3 0

0 0 0 4

>> C=diag([1 2 1],1)

C =

0 1 0 0

0 0 2 0

0 0 0 1

0 0 0 0

>> diag(A)

ans =

3

3

D = magic(5)

diag(D)

diag(diag(D))

Z = [magic(3),zeros(3,2), -ones(3,1); 4*ones(2,4), eye(2,2)]

Z(:,3)=[]

mess = 10*rand(4,5)

messy = 10*randn(4,5)

test = 1./(3*ones(2,3)

AE6382 Design Computing

### Vectors and Matrices

• We’ve referred to vectors and matrices frequently… but exactly what are we talking about?

• what is a matrix?

• is it different from an array?

• vectors and matrices are arrays with an “attitude”

• that is, they look just like an array (and they are arrays), but they live by a very different set of rules!

• Vectors:

Can you explain what, if anything, results from these operations with vectors?

AE6382 Design Computing

### Why Matrices?

• A matrix is an array that obeys a different set of rules

• addition & subtraction are same as for arrays,

• but multiplication, division, etc. are DIFFERENT!

• a matrix can be of any dimension but 2D square matrices are the most common by far

• A large and very useful area of mathematics deals with what is called “linear algebra” and matrices are an integral part of this.

• Many advanced computational methods in engineering make extensive use of linear algebra, and hence of matrices

AE6382 Design Computing

### A Simple Example

• A set of simultaneous linear algebraic equations will often arise in engineering applications

• How do you solve these?

• Solve first for x in terms of y; substitute in second and solve for y; use this in first to find x

• Use “Cramer’s Rule”

• Other?

• Let’s try a more abstract notation:

OR

AE6382 Design Computing

### A Simple Example-cont’d

• What do we mean by the * for this form?

• Note that the column matrix, z, is multiplied times the first row of C on an element-by-element basis and the results are summed to get the first row of the answer

• Ditto for the second row…

• This is NOT array multiplication; it is matrix multiplication

• For two 2D matrices in general:

NOTE: the number of columns in A must be equal to the number of rows in B (N in this example)

AE6382 Design Computing

### A Few Notes on Matrices

• Matlab handles matrix multiplication with the * symbol (NOTE: this is NOT array multiplication!)

• From our formula we see that in general: A*B  B*A

• In other words, matrix multiplication is NOT commutative

• Matrices behave just like arrays for addition and subtraction

• Matrix division is not strictly defined but a matrix inverse is available to address this situation, among others.

• suppose: 3y=6 and you need to find y…

• The usual approach: y=6/3=2 (division by 3)

• Also useful: y=3-1*6=2 (multiplication by the inverse of 3)

• If we don’t know how to divide, we can accomplish the same by using the notion of the inverse. Recall definition of inverse:

• Turns out we know how to compute matrix inverses (but it requires a lot of computational effort)

AE6382 Design Computing

### Let’s Solve Our Problem Using Matlab

>> coef=[3 -2; 1 4]

coef =

3 -2

1 4

>> inv(coef) % Matlab has the inv() function

ans =

0.2857 0.1429

-0.0714 0.2143

>> b=[14 -14]'

b =

14

-14

>> z=inv(coef)*b

z =

2

-4

>> coef*z % Let's check our answer!

ans =

14

-14

AE6382 Design Computing

### Some More Notes:

• Using the Matlab inv() function is not always best

• It can take a VERY long time for large matrices

• The inverse may have poor precision for some kinds of matrices

• If you just want to solve the set of equations, there are much quicker and more accurate methods

• Uses powerful algorithms from linear algebra

• Notation is tricky because it introduces the concept of a “left” and a “right” matrix division in Matlab

NOTE:C\C=1, and1*anything=anything

AE6382 Design Computing

### Let’s Try This Out…

coef =

3 -2

1 4

>> b

b =

14

-14

>> zz=coef\b

zz =

2.0000

-4.0000

OK, now what do you think these expressions yield?

coef\eye(2,2)

coef\eye(2,2)*coef

AE6382 Design Computing

### Things Can Get Weird…

• We usually think of the unknown (z) as a column matrix and the RHS (b) as a column matrix also

• In some fields, it is more useful if these are ROW matrices

• One formulation can easily be converted into the other!

• We can treat either formulation in Matlab

• First, ON YOUR OWN, prove from our multiplication formula that:

• Now, using this, we take the transpose of our equation:

where

AE6382 Design Computing

### Let’s Try It Out in Matlab:

>> coefT=coef'

coefT =

3 1

-2 4

>> bT=b'

bT =

14 -14

>> zT=bT*inv(coefT)

zT =

2 -4

>> % ALSO WE CAN USE RIGHT DIVIDE:

>> zT2=bT/coefT

zT2 =

2.0000 -4.0000

AE6382 Design Computing

### Other Matlab Matrix Functions

• So far we’ve only scratched the surface of Matlab’s abilities to work with matrices…

• Matrices can contain COMPLEX numbers

• Some of the other matrix functions are:

• det(A): determinant of the matrix

• rank(A): rank of the matrix

• trace(A): sum of diagonal terms

• sqrtm(A): matrix square root (i.e., sqrtm(A)*sqrtm(A)=A)

• norm(A): matrix norm (useful for vector magnitudes)

• eig(A): eigenvalues and eigenvectors of matrix

• Keep in mind that Matlab is using some of the latest and most powerful algorithms to compute these functions.

AE6382 Design Computing

• The matrix and array operations and functions can be used to manipulate vectors, but you’ll have to be careful

• Vector dot product:

• Vector magnitude?

• Vector cross product?

>> f=[1 2]'

f =

1

2

>> g=[4 -3]'

g =

4

-3

>> fdotg=f'*g

fdotg =

-2

>> f=[1 2]

f =

1 2

>> g=[4 -3]

g =

4 -3

>> fdotg=f*g'

fdotg =

-2

>> gdotf=g*f'

gdotf =

-2

Column vectors

Row vectors

AE6382 Design Computing