• No se han encontrado resultados

Tema 5: Vectores y matrices.

N/A
N/A
Protected

Academic year: 2022

Share "Tema 5: Vectores y matrices."

Copied!
41
0
0

Texto completo

(1)

Operaciones aritméticas, relacionales y lógicas, operador subrango (: y end), funciones que actúan sobre matrices y vectores (length, sum, prod, max, min, sort, find, dot, cross, zeros, ones, eye, rand, diag, size, det, inv, norm, all, any, traspuesta ('), isvector, isscalar, isnumeric, ischar, islogical,

isempty, reshape ).

Tema 5: Vectores y matrices.

Este material está bajo "Creative Commons Attribution-ShareAlike 4.0 International License"

(2)

MATLAB basa todos sus cálculos en la manipulación de matrices. Una matriz consiste en una colección ordenada de números:

• en 1 dimensión: vector (1 índice)

• en 2 dimensiones: matriz (2 índices)

• en n dimensiones: arreglo o hipermatriz (n índices)

( 1 2 3 4 )

4 1×

= a



 



 

×

=

4 3 2 1

1

a

4

 

 

×

=

9 8 7

6 5 4

3 2 1

3

a

3

 

 

×

=

12 11

10 9

8 7

6 5

4 3

2 1

4

a

3

1 dimensión

2 dimensiones

3 dimensiones

18 17

16

15 14

13

12 11

10

9 8 7

6 5 4

3 2

= 1

×

×3 2

a

3

(3)

Las matrices pueden ser introducidas en MATLAB

• como lista explícita de los elementos

• cargadas de archivos externos

• generadas por comandos o funciones de MATLAB

A = [1 2 3; 4 5 6; 7 8 9]

A = [ 1 2 3 4 5 6 7 8 9 ]

A = [1,2,3; 4,5,6; 7,8,9]

A = [ 1,2,3 4,5,6 7,8,9 ] Los siguientes comandos son equivalentes:

• filas separadas por comas o blancos

• columnas separadas por punto y coma o

“return”

y generan la matriz la matriz siguiente A =

1 2 3 4 5 6 7 8 9

(4)

• Los vectores son un caso particular de una matriz

• Las matrices son estructuras en 2 dimensiones que tienen muchos usos en cálculo científico

• Las matrices son las estructuras más idóneas para almacenar los datos de un sistema lineal de ecuaciones.

Declarar un matriz

Ejemplo:

>> A = [1 2 3 4; 8 9 10 11; 15 16 17 18];





=

18 17

16 15

11 10

9 8

4 3

2 1

A

1) Enumeramos los componentes de la matriz separando las

distintas filas con punto y coma (;), y los valores en una misma fila con coma (,) o espacio(s) en blanco.

Es importante que cada fila de la matriz tenga el mismo número de entradas, de lo contrario MATLAB dará un error.

(5)

vectores fila

x = [1 2*pi sqrt(6) -4.67] 4 componentes y = [1, 2, 3, 4, 5, 6] 6 componentes

vectores columna

x = [1 (enter) 2*pi (enter) sqrt(6) (enter) -4.67] 4 componentes y = [1 ; 2 ; 3 ; 4 ; 5 ; 6] 6 componentes

Ejemplos:

(6)

2) Usando notación tipo subrango (operador ‘:’) Creando vectores fila usando el operador ‘:’

x = primero : último

y = primero : incremento : último

x = 1 : 6 → 1 2 3 4 5 6

y = 1 : 3 : 17 → 1 4 7 10 13 16 z = 10 : -2 : 1 → 10 8 6 4 2

w = 0.2 : 0.1 : 1 → 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0

A = [1:4;5:8] → 1 2 3 4 5 6 7 8 A = [1:2:10;10:-2:1]

→ 1 3 5 7 9 10 8 6 4 2 De igual manera se crean matrices

(7)

3) Usando la función linspace, sólo para vectores x = linspace(primero, último, n)

donde el primero y el último están incluidos en el vector y n es el número de elementos del vector.

La distancia entre los elementos es (último-primero)/(n-1) Ejemplo:

x = linspace(1, 10, 10) → 1 2 3 4 5 6 7 8 9 10

x = linspace(1, 2, 10) → 1. 1.1111 1.2222 1.3333 … 2.

distancia entre elementos = (2-1)/9 = 1/9 = 0.1111 4) Concatenación

a = 2 : 6 , b = 1 : 2 : 9 → a = 2 3 4 5 6 b = 1 3 5 7 9

c = [a b] → c = 2 3 4 5 6 1 3 5 7 9 d = [ 0 a 1 0 1] → d = 0 2 3 4 5 6 1 0 1

e = [a ; b] → 2 3 4 5 6

1 3 5 7 9 e =

(8)

Operador ‘:’ y ‘end’

Así, siendo A una matriz se tiene

A(:) = 1, llena todas las entradas de A con 1, preservando la forma de A (esto es diferente a ejecutar A = 1, verifíquelo)

A(:,j) corresponde a la columna j de A A(j,:) corresponde a la fila j de A

A(j:k) corresponde al vector [A(j), A(j+1), …, A(k)]

A(j:end) corresponde al vector desde la posición j hasta el final de A A(:,j:k) corresponde a la matriz [A(:,j), A(:,j+1), …, A(:,k)]

para A = [1 2 3; 4 5 6]

A(2:end) produce el vector 4 2 5 3 6





=

6 5 4

3 2 A 1

Los operadores ‘:’ y ‘end’ pueden ser usados para seleccionar filas, columnas y elementos de vectores, matrices y arreglos.

Obs. El almacenado de una matriz A en memoria se lleva a cabo por columnas,

(9)

Accediendo a vectores y matrices en distintas instancias

a = 2 : 6 → a = (2, 3, 4, 5, 6) Acceso a entradas individuales de a

• a(1) corresponde a la entrada 1 del vector a → 2

Acceso por bloques de valores usando notación tipo subrango:

• a(1:3) corresponde al vector (2, 3, 4)

• a(1:2:5) corresponde al vector (2, 4, 6) Acceso a conjunto de posiciones:

• a( [ 1 2 5 ] ) corresponde a las posiciones 1, 2 y 5 de a → (2, 3, 6)

• a( [ 1 4 2 ] ) corresponde a las posiciones 1, 4 y 2 de a → (2, 5, 3) Ejemplos:

(10)

• A = [1 2 3; 4 5 6; 7 8 9] →

• A(2,3) → corresponde a la 2da fila y 3era columna de A, es decir, 6

• A(3,3) = 8.1 → asignamos 8.1 a la posición (3,3) de la matriz A b = A(3, : ) → asignamos a la variable b la 3era fila de A,

es decir, b = [ 7 8 8.1 ];

El operador dos puntos ( : ), en este caso, indica todo el rango en la dimensión correspondiente a las columnas

• C = A(:,3:-1:1) →

La variable C se obtiene intercambiando las columnas de la matriz A comenzando por la tercera hasta la primera.





=

7 8 1 . 8

4 5 6

1 2 3 C





=

9 8 7

6 5 4

3 2 1 A

Ejemplos (cont.):

(11)

• C = A(3:-1:1; : ) →

• C = A(1:2, 2:end) →

• C = A([ 1 3 ], : ) →

• C = A( : ,[ 1 3 ]) →

• A(2:end,end:-1:1) = [10,20,30; -1,-2,-3] →





=

3 2 1

6 5 4

9 8 7 C





= 

9 8 7

3 2 C 1





=

9 7

6 4

3 1 C



 

= 

6 5

3 C 2





=

9 8 7

6 5 4

3 2 1 Ejemplos (cont.): A





=

1 2

3

10 20

30

3 2

1 A

(12)

Generación de vectores y matrices usando comandos o funciones de MATLAB

zeros(m,n) matriz m×n cuyas entradas son ceros (0)

ones(m,n) matriz m×n con entradas unos (1)

eye(n) matriz identidad de dimensión n×n

sign(A)

matriz del mismo tamaño de A, cuyas entradas son 1, -1 o 0 según las entradas de A sean positivas, negativas o cero.

Si x es no nulo, la siguiente expresión es verdadera sign(x) == x / abs(x) rand(m,n) matriz m×n de entradas aleatorias con distribución uniforme entre 0 y 1

randn(m,n) matriz m×n de entradas aleatorias con distribución normal, de valor promedio 0 y varianza 1

magic(n) matriz n×n con la propiedad de que la suma de filas y columnas es igual

diag(t) t un vector de

longitud n

matriz n×n con t en su diagonal y las otras entradas ceros

compan(pol) matriz cuyo polinomio característico tiene como coeficientes los elementos del vector pol (ordenados de mayor grado a menor)

(13)

Ejemplos:

>> A = [3 -1; 1 0] corresponde con 

 

 −

= 1 0

1 A 3

( ) (

3

)( )

1 3 1

1

1 det 3

det  = − − + = 2 − +



= −

x x x x

x xI x

A

su polinomio característico es

>> compan([1 -3 1]) → ans = 3 -1 1 0

>> D = magic(3)

→ ans =

8 1 6 3 5 7 4 9 2

>> C = eye(3)

→ ans =

1 0 0 0 1 0 0 0 1

>> a = rand(2,3)

→ ans = 0.8147 0.1270 0.6324 0.9058 0.9134 0.0975

>> sign(-3) → -1, >> sign([8,-3]) → 1 -1, >> sign([8,-3; -7 5]) → 1 -1 -1 1

[1 -3 1]

(14)

Operaciones sobre vectores y matrices

Transposición: consiste en cambiar filas en columnas:

Si x = [ 1 2 3 ] de dimensión 1×3, entonces x' es el vector de dimensión 3×1

Si A = [1 2 3; 4 5 6] de dimensión 2 x 3, entonces

A' es la matriz de dimensión 3 x 2

3 2 1

Suma y resta de vectores de igual dimensión:

(los vectores deben tener la misma dimensión) Si a = 1:3, b = 3:2:7

entonces a+b = [ 1 2 3 ] + [ 3 5 7 ] = [ 4 7 10]





6 3

5 2

4 1

(15)

Para matrices de igual dimensión podemos sumarlas o restarlas entre sí. El resultado es la suma o resta componente a componente de las dos matrices.

Ejemplo:

0.9501 0.4860 0.4565 0.2311 0.8913 0.0185 0.6068 0.7621 0.8214

1.9501 0.4860 0.4565 0.2311 1.8913 0.0185 0.6068 0.7621 1.8214

1 0 0 0 1 0 0 0 1

suma = A + B y resta = A - B

-0.0499 0.4860 0.4565 0.2311 -0.1087 0.0185 0.6068 0.7621 -0.1786 A = rand(3) y B = eye(3)

(16)

Multiplicación de vectores:

Vector fila por vector columna con dimensiones compatibles genera un número

Si a = [ 1; 2; 3 ] dimensión 3×1, b = [ 2, 1, 1 ] dimensión 1×3 Podemos llevar a cabo el producto de b y a:

( )





=





=

3 3 6

2 2 4

1 1 2 1

1 2 3 2 1 b

a

También podemos llevar a cabo el producto a*b como producto matricial, generando una matriz de dimensión 3×3:

( )

2 2 3 7

3 2 1 1 1

2 = + + =





=

∗ a b

(17)

Si A y B son matrices de dimensión m×n y n×p respectivamente, la multiplicación de A y B, es decir A*B, es una matriz de dimensión m×p Ejemplo:

>> A = [ 1 2 3; 4 5 6 ], B = [ [ 1 2 3 5 ] ; rand(2,4) ] 1 2 3

4 5 6

3.7357 6.3493 5.0052 8.6178 9.9161 17.4906 16.7486 27.6413

1.0000 2.0000 3.0000 5.0000 0.4447 0.7919 0.7382 0.4057 0.6154 0.9218 0.1763 0.9355

>> producto = A * B

Para matrices cuadradas se tiene la potenciación matricial.

Así, para la matiz cuadrada A, A^2 es equivalente a A*A

(18)

Operaciones escalar – vector o escalar – matriz:

Adición, sustracción, multiplicación y división de un vector o matriz por un escalar origina un nuevo vector o matriz donde sus entradas corresponden al resultado obtenido de la operación de las entradas del vector o matriz por el escalar.

] 5 3 1 [ 1 ] 6 4 2 [ 1 ] 3 2 1 [

* 2 1 2

] 1 0 1 [ 2 ] 3 2 1 [ 2

=

=

=

=

=

a a

Si a = [ 1, 2, 3 ] dimensión 1×3: entonces

Si A = [ 1:3; 7:9 ] dimensión 2×3: entonces Si 2*A + 1 = 3 5 7

15 17 19

(19)

Producto escalar de 2 vectores:

Dados los vectores a y b de longitud n, existe la función dot(a,b) que calcula el producto escalar, siendo el resultado un número real.

El producto escalar de los vectores a y b ( notación matemática: a·b ) Si a = [ 1, 2, 3 ] y b = [ 3; 2; 1 ] son de longitud 3, entonces

10 )

, (a b = dot

Producto vectorial de 2 vectores en 3 dimensiones:

Dada vectores a y b de longitud 3, existe la función cross(a,b) que cálcula el producto vectorial, siendo éste para MATLAB un vector columna.

El producto vectorial de los vectores a y b ( notación matemática: a×b ) crea un tercer vector perpendicular a ellos.

Si a = [ 1, 2, 3 ] y b = [ 3, 2, 1 ] son de dimensiones 1×3, entonces ]

4 8

4 [ ) ,

( = − −

= cross a b c

Obs:

• En nuestro ejemplo: a·c = 0 y b·c = 0 (c es perpendicular a y b)

• a×b = (a2b3 – a3b2, a3b1 – a1b3, a1b2 – a2b1)

(20)

Operaciones componente a componente:

En MATLAB existe para las matrices las operaciones de “punto”. La sintaxis es colocar un punto antes de la operación (multiplicación, división y potenciación) para hacer de la operación usual la

operación equivalente pero elemento a elemento.

]

*

*

* [

*

. b a1 b1 a2 b2 an bn

a = L

escalar

b b b b c

a a

a

a =[ 1 2 L n], =[ 1 2 n],

multiplicación punto división punto

potenciación punto

] / /

/ [ /

. b a1 b1 a2 b2 an bn

a = L

] [

.

] [

.

] [

.

2 1

2 1

2 1

2 1

n n

b n b

b

a a a

c n c

c

a a

a b

a

c c

c a c

a a

a c

a

L L L

=

=

=

Ejemplo: Sean

(21)

Ejemplos:

>> A = round(rand(3) * 3) >> B = [ 3 1 2 ; 4 5 6 ; 1 7 2 ] 3 0 0

1 1 0 3 2 1

9 0 0 4 5 0 3 14 2

3 1 2 4 5 6 1 7 2

>> resultado1 = A .* B

27 1 1 4 5 1 1 49 2

>> resultado2 = B .^ A

>> resultado3 = 2 .^ A 8 1 1

2 2 1 8 4 2

>> resultado4 = A ./ B 1.0000 0 0 0.2500 0.2000 0 3.0000 0.2857 0.5000

(22)

Aplicación de funciones a vectores:

El siguiente ejemplo genera una tabla de funciones seno y coseno:

>> x=[ 0.0: pi/50: 2*pi ] ' ;

>> y = sin(x); z = cos(x);

>> c = [x y z] → 0 0 1.0000 0.0628 0.0628 0.9980 0.1257 0.1253 0.9921 0.1885 0.1874 0.9823 0.2513 0.2487 0.9686 0.3142 0.3090 0.9511 0.3770 0.3681 0.9298 0.4398 0.4258 0.9048 0.5027 0.4818 0.8763

6.0947 -0.1874 0.9823 6.1575 -0.1253 0.9921 6.2204 -0.0628 0.9980 6.2832 -0.0000 1.0000

c =

c es una matriz de dimensión 101×3

(23)

Operadores relacionales y vectores:

Si una comparación se cumple, el resultado es 1 (verdadero), mientras que si no se cumple es 0 (falso). Recíprocamente,

cualquier valor distinto de cero es considerado como verdadero y el cero equivale a falso.

Los operadores relacionales de MATLAB se aplican a dos vectores del mismo tamaño, la comparación se realiza elemento a elemento, y el resultado es otro vector de unos y ceros del mismo tamaño, que recoge el resultado de cada comparación entre elementos.

Ejemplo:

>> a = [1 2 0 3]; b = [4 2 1 5];

>> a == b → ans = [0 1 0 0]

>> a ~= b → ans = [1 0 1 1]

>> a < b → ans = [1 0 1 1]

Ejercicio:

¿Qué da a(a>1)? ¿qué da a([0 1 0 1])? ¿qué da a(logical([0 1 0 1]))?

(24)

Operadores relacionales y matrices

Sean A y B matrices de igual dimensión.

A == B retorna una matriz de igual dimensión cuyas entradas son 1 o 0 según las entradas de A y B sean iguales o no.

Similarmente se tienen resultados equivalentes para los otros operadores relacionales.

3 0 0 1 1 0 3 2 1

3 1 2 4 5 6 1 7 2 1 0 0

0 0 0 0 0 0

0 1 1 1 1 1 1 1 1 Ejemplo:

>> A = round(rand(3) * 3), B = [ 3 1 2 ; 4 5 6 ; 1 7 2 ]

>> A == B, A ~= B

(25)

Operadores lógicos y matrices

Sean A y B matrices de igual dimensión.

A op B retorna una matriz de igual dimensión cuyas entradas son 1 o 0 según las entradas de A y B satisfagan la condición del operador lógico “op”.

3 0 0 1 1 0 3 2 1

3 1 2 4 5 6 1 7 2

1 0 0 1 1 0 1 1 1

1 1 1 1 1 1 1 1 1 Ejemplo:

>> A = round(rand(3) * 3), B = [ 3 1 2 ; 4 5 6 ; 1 7 2 ]

>> A & B, A | B

(26)

length(x) retorna la longitud del vector x

[m,n] = size(A) devuelve el número de filas m y de columnas n de A

size(A,1): número de filas, size(A,2): número de columnas de A

[xm,im] = max(x) para vectores, retorna el máximo elemento del vector. Devuelve el valor máximo (xm) y la posición que ocupa (im)

[xm,im] = max(A) = max(A,[ ],1)

para matrices, retorna un vector fila con los máximos elementos por cada columna.

Para max(A,[ ],2), retorna un vector columna con los máximos elementos por cada fila. Nótese que el segundo argumento es el vector vacío []. Para cada caso, en im

retorna las posiciones donde se alcanzan los máximos

[xm,im] = min(x) para vectores, retorna el mínimo elemento del vector. Devuelve el valor mínimo (xm) y la posición que ocupa (im)

[xm,im] = min(A) = min(A,[ ],1)

para matrices, retorna un vector fila con los mínimos elementos por cada columna.

Para min(A,[ ],2), retorna un vector columna con los mínimos elementos por cada fila. Nótese que el segundo argumento es el vector vacío []. Para cada caso, en im

retorna las posiciones donde se alcanzan los mínimos

sum(A), sum(A,1) suma por columna de los elementos de A , retornando las sumas en un vector fila sum(A,2) suma por filas de los elementos de A , retornando las sumas en un vector columna

Funciones que actúan sobre matrices y vectores:

(27)

Funciones que actúan sobre matrices y vectores (cont.):

cumsum(x) para vectores, devuelve el vector suma acumulativa de los elementos

cumsum(A) = cumsum(A,1)

para matrices, retorna una matriz de igual dimensión que A, conteniendo las sumas acumuladas por columna. Para cumsum(A,2), retorna las sumas

acumuladas por fila prod(A) =

prod(A,1) producto por columna de los elementos de A prod(A,2) producto por filas de los elementos de A

cumprod(x) para vectores, devuelve el vector producto acumulativo de los elementos

cumprod(A) = cumprod(A,1)

para matrices, retorna una matriz de igual dimensión que A, conteniendo los productos acumuladas por columna. Para cumprod(A,2), retorna los productos

acumuladas por fila

mean(x) valor medio de los elementos de un vector

std(x) desviación típica o estándar

[v,i] = sort(x)

ordena de menor a mayor los elementos de un vector x. Devuelve el vector ordenado v, y un vector i con las posiciones iniciales en x de los elementos en el

vector ordenado v

Si x es una matriz, hace lo equivalente con las columnas de la matriz

(28)

Ejemplos:

>> b = [28 32 36 40]

>> length(b) → ans = 4

>> sum(b) → ans = 136

>> cumsum(b) → ans = 28 60 96 136

>> prod(b) → ans = 1290240

>> cumprod(b) → ans = 28 896 32256 1290240

>> mean(b) → ans = 34

>> std(b) → ans = 5.1640

>> c = [3 4 1 6 10 10 2 3]

>> [xm,im] = max(c) → xm = 10, im = 5

>> [v,i] = sort(c) →

v = 1 2 3 3 4 6 10 10 i = 3 7 1 8 2 4 5 6

=

=

n

i

i

x x x

n S

1

2

2 1 ( )

2

Sx

std =

varianza

(29)

Ejemplos (cont.):

>> B = [ 3 1 2 ; 4 5 6 ; 1 7 2 ]

>> [m,n] = size(B)→ m = 3, n = 3

>> sum(B) → ans = 8 13 10

>> cumsum(B) → ans =

>> prod(B) → ans = 12 35 24

>> cumprod(B) → ans =





=

2 7 1

6 5 4

2 1 3 B

>> [xm,im] = max(B) → xm = 4 7 6, im = 2 3 2

>> [y,i] = sort(B) →

y = i =

3 1 2 7 6 8 8 13 10

3 1 2 12 5 12 12 35 24

1 1 2 3 5 2 4 7 6

3 1 1 1 2 3 2 3 2

(30)

Ejemplos:

>> A = [ 3 7 6 4 5 1 7 8 9 ]

>> find (A > 3) → 2 3 4 5 7 8 9 (vector con las posiciones en A)

>> find (A <= 3) → 1 6

>> find(A>=3 & A<8) → 1 2 3 4 5 7 Funciones que actúan sobre vectores y matrices

find: devuelve una lista de los índices o posiciones que cumplen cierta condición

(31)

Ejemplos (cont.):

>> A = [ 1 2 3 ; 4 5 6 ; 7 8 9 ]

>> find (A > 3) → 2 3 5 6 8 9 (vector columna con las posiciones en A)

>> find (A <= 3) → 1 4 7 (vector columna)

>> [ i, j ] = find (A <= 3) → i = 1 1 1 (vector columna con los índices de fila) j = 1 2 3 (vector columna con los índices de

columna) posiciones (1,1), (1,2) y (1,3) de A

>> ind = find (A < 3), b = A(ind)

se obtiene ind → 1 4 (vector columna con las posiciones en A) se obtiene b → 1 2 (vector columna con los elementos en A) Funciones que actúan sobre vectores y matrices:





=

9 8 7

6 5 4

3 2 1 A

(32)

Funciones que actúan sobre matrices:

Sea A una matriz de dimensión m×n

A ' transpuesta conjugada de A

A .' transpuesta sin conjugar de A

trace(A) devuelve la traza de A (suma de los elementos de la diagonal de A)

diag(A) diagonal de A

det(A) determinante de la matriz A, para el caso m=n (A cuadrada) norm(A)

norma 2 de A (radio espectral de AtA) norm(A,1): norma 1 de A ( max(sum(abs(A))) ) norm(A,inf): norma inf de A ( max(sum(abs(A'))) ) inv(A) matriz inversa de A, cuando esta exista

(33)

>> A = [ 1 0 -1 ; 0 2 0 ; 1 0 1 ]

>> A' →

1 0 1 0 2 0 -1 0 1





 −

=

1 0 1

0 2 0

1 0

1 A

>> trace(A) → 4

>> diag(A) →

>> det(A) → 4

>> inv(A) → 1 2 1

0.5 0.0 0.5 0.0 0.5 0.0 -0.5 0.0 0.5 Ejemplos:

Funciones que actúan sobre matrices (cont.):

(34)

Norma de un vector:

Dado un vector a, la función norm(a) calcula la norma de a.

Si a = [ 1, 2, 3 ] dimensión 1×3 entonces norm(a) → 3.7417

norm(a,1) → 6 norm(a,inf) → 3 Norma de una matriz:

Dada una matriz A, la función norm(A) calcula la norma de A.

Si A = [ 1 2 3 ; 4 5 6 ; 7 8 9 ] entonces norm(A) → 16.8481

norm(A,1) → 18 norm(A,inf) → 24 Ejemplos (cont.):

Funciones que actúan sobre matrices (cont.):

 

 

=

9 8

7

6 5

4

3 2

1 A

( 12 15 18 )

 

 

24

15

6

(35)

Norma de una matriz Ejemplo:

 

 

=

0 1

1

2 2

0

7 0

1 A

9 }

9 , 3 , 2 max{

max

1

1

= ∑ = =

=

n

1 i

a

ij n

A

j

8 }

2 , 4 , 8 max{

max

1

= =

= ∑

=

n

1 j

a

ij n

A

i

 

 

=

53 4

7

4 5

1

7 1

2 A

A

T

3649 .

7 )

(

*

2

= A A =

A ρ

0.5054 5.2530 54.2416 Autovalores:

norm(A,1)

norm(A,inf)

norm(A,2) MATLAB

eig(A’ * A) A = [1,0,-7;0,2,2;-1,-1,0]

Ejemplos (cont.):

(36)

Funciones que actúan sobre matrices (cont.):

A y B matrices de dimensión m×n

and(A,B) matriz cuyas entradas resultan de aplicar el operador lógico “y” a las entradas de A y B

or(A,B) matriz cuyas entradas resultan de aplicar el operador lógico “o” a las entradas de A y B

not(A) matriz cuyas entradas resultan de negar las entradas de A

all(A,1) o all(A) all(A,2)

all(A,1): operador lógico “y” múltiple por columna all(A,2): operador lógico “y” múltiple por fila

any(A,1) o any(A) any(A,2)

any(A,1): operador lógico “o” múltiple por columna any(A,2): operador lógico “o” múltiple por fila

Obs: En los casos de las funciones all y any, el primer argumento puede ser una expresión lógica cualquiera. De hecho el escribir all(A) equivale a

all(A~=0). Análogamente para any.

Obs: and(A,B) equivale a A & B or(A,B) equivale a A | B not(A) equivale a ~A

(37)

Ejemplos:

A = [1,2,-1,0; 0,1,4,-2] →

all(A,1) →

all(A,2) →

any(A,1) →

any(A,2) →

all(A>=1) →

any(A >= -2 & A <= -1.5 ,2) →

1 2 -1 0 0 1 4 -2

0 0

0 1 1 0

1 1 1 1 1

1

Funciones que actúan sobre matrices (cont.):

0 1 0 0 0

1

(38)

Funciones que actúan sobre arreglos:

a un vector de dimensión n, A y B matrices de dimensión m×n

isscalar(x) retorna 1 si x es una matriz 1×1, y 0 en cualquier otro caso islogical(x) retorna 1 si x es un arreglo lógico, y 0 en cualquier otro caso isnumeric(x) retorna 1 si x es un arreglo numérico, y 0 en cualquier otro caso

ischar(x) retorna 1 si x es un arreglo de caracteres, y 0 en cualquier otro caso isvector(a) retorna 1 si a es un vector 1×n ó n×1, y 0 en cualquier otro caso

isequal(A,B) retorna 1 si A es igual a B, y 0 en cualquier otro caso, para matrices de igual dimensión

isempty(x)

retorna 1 si x es un arreglo vacío, y 0 en cualquier otro caso. Un arreglo está vacío cuando no tiene elementos, es decir prod(size(x)) == 0 es una

sentencia verdadera.

(39)

A = [1,2,-1,0; 0,1,4,-2]

a = 234

v = [1,2,3,4,5,6]

b = 'ambiente de trabajo' c = 1 < 2

d = [ ] e = [4.1]

Ejemplos:

A a v b c d e

isscalar 0 1 0 0 1 0 1

islogical 0 0 0 0 1 0 0

isnumeric 1 1 1 0 0 1 1

ischar 0 0 0 1 0 0 0

isvector 0 1 1 1 1 0 1

isempty 0 0 0 0 0 1 0

Funciones que actúan sobre arreglos (cont.):

(40)

Función “reshape”

(

1 5 2 6 3 7 4 8

)

x =

>> s = [ 1 2 3 4; 5 6 7 8 ]; x = reshape(s, 4, 2)

→ produce el arreglo [ 1 3; 5 7; 2 4; 6 8 ] de dimensión 4×2





= 

8 7 6 5

4 3 2 s 1









=

8 6

4 2

7 5

3 1 x

Esta función permite cambiar la estructura de un arreglo dado.

reshape(s,m,n) retorna la matriz m×n rellenada por columnas, cuyos elementos se toman recorriendo s por columnas. Se produce un error si s no tiene m⋅n elementos.

>> s = [ 1 2 3 4; 5 6 7 8 ]; x = reshape(s, 1, 8)

→ produce el arreglo [ 1 5 2 6 3 7 4 8 ] de dimensión 1×8





= 

8 7 6 5

4 3 2 s 1

(41)

format compact;

% Solicita la nota acumulada

nota_acumulada = input('Nota acumulada del alumno ');

nota = nota_acumulada;

disp('nota final en base 100'); disp(nota);

nota_final = (nota >= 1) + (nota >= 30) + (nota >= 50) + (nota >= 70) + (nota >= 85);

disp('nota final en base 5'); disp(nota_final);

Programa que convierte una nota del 1 al 100 en una nota del 1 al 5, según criterio USB.

1 a 29 -> 1; 30 a 49 -> 2; 50 a 69 -> 3; 70 a 84 -> 4; 85 a 100 -> 5 Ejemplo:

>> nota = 84 → produce 4

>> nota = [33, 51, 92] → produce 2 3 5

Referencias

Documento similar

Pero Carlos no podía hacer simplemente un blog, como no pudo hacer nada de forma simple en su vida: ni tocar la guitarra (“hoy tengo los dedos gordos, pero finos”), ni leer,

Si especificamos una fila, una columna y un factor de capa (variable de control), el procedimiento Tablas de contingencia crea un panel de medidas y estadísticos asociados para

Queremos implementar una función que calcule devuelva el valor mínimo y máximo de un vector de N elementos.. Esto implica darle un vector a la función y devolver dos valores, a ver

La matriz D se forma poniendo en la diagonal de una matriz los valores propios de A, en el siguiente orden: en la i-´esima columna de D se pone el valor propio correspondiente al

En la tabla 3.6 que analiza la lealtad a la marca donde 17% de los encuestados indicaron estar de acuerdo en considerarse 100% leales a la marca Metro, este porcentaje está referido

Determine el valor de (m+n), de los vectores que se muetran en la figura cumple. Usando el sistema de ejes x, y, z encuentre el vector unitario del vector B. Hallar el módulo de

Se utiliz´o la clase Young, que permite crear tablas de Young y tiene como atributos la forma correspondiente a la tabla almacenada en un Vector y un vector de vectores para

Los perfiles entre los diferentes grupos de diagnóstico varían tanto en la puntua- ción alcanzada como en los máximos y mínimos que manifiestan cada uno de ellos y sus