UNIVERSIDAD NACIONAL DEL ESTE C.C.
II – 2018
FACULTAD POLITÉCNICA MATLAB
Computación Científica II
Vectores y Matrices
VECTORES
Concepto: Un Vector es un Array Unidimensional, (o sea de una sola dimensión), es una secuencia
de datos del mismo tipo que permite acceder directamente a cada uno de sus elementos,
indicando su posición (índice) dentro del vector. Por ejemplo, la secuencia {1,4,7,3,8} es un vector
de cinco números enteros, de forma que el primer elemento vale 1, el segundo 4, el tercero 7, y
así sucesivamente.
Formas de definir vectores (vectores filas)
Definamos un vector v que contenga los enteros 3, 4 y 5 en ese orden:
v = [3 4 5];
Otra forma de definir el vector anterior sería:
v= [3:5];
En general se puede definir un vector cuyos elementos se obtienen a partir del anterior más un
cierto incremento. Por ejemplo, definamos un vector a de N elementos y cuyo primer elemento
sea ni, el último sea nf y el incremento sea dn, se cumple:
v = [ni :dn: nf ];
Podemos darnos cuenta del ejemplo anterior que si agregamos una línea con un punto y coma, no
se muestra el resultado.
Rangos
Algunas veces es necesario introducir un vector con componentes a intervalos regulares.
Esto se realiza fácilmente con MATLAB con la estructura inicio:incremento:fin. Si no se
proporciona un incremento, MATLAB asume que es 1.
x1=0:10
Se puede seleccionar el propio incremento.
x2=0:2:10
Se puede ir incluso hacia atrás.
x3=10:-2:1}
Ej.: Si tenemos un vector v=[1 2 3].
Se puede obtener el tamaño de un vector v con el comando
size(v)
Material realizado por Lic. Cristian González y Lic. Edgar Acosta Machuca.
UNIVERSIDAD NACIONAL DEL ESTE C.C. II – 2018
FACULTAD POLITÉCNICA MATLAB
La información que devuelve indica que el vector v tiene 1 fila y 3 columnas. Aunque se puede
entender al vector v como una matriz con 1 fila y 3 columnas, también se puede entender como
un vector fila de longitud 3. Por ejemplo, pruebe el siguiente comando:
length(v)
Formas de definir vectores (vectores columnas)
Es también fácil escribir vectores columna en MATLAB. Introducimos el siguiente comando en la
ventana de comandos de MATLAB.
w=[4;5;6]
Si le aplicamos los comandos anteriores
w
who
whos
size(w)
El resultado indica que el vector w tiene 3 filas y 1 columna. Aunque se puede ver al vector w
como una matriz de 3 filas y 1 columna, también es posible pensar en el como un vector columna
de longitud 3. Probamos nuevamente el siguiente comando.
length(w)
Transposición.
El operador en MATLAB para transponer es el apóstrofe simple “ ‘ ”. Se puede cambiar así un
vector fila a un vector columna.
>> y = (1:10)’
O un vector columna a un vector fila.
>> y=y’
Como acceder a los datos
Una vez que se ha definido un vector, es posible acceder fácilmente a cada una de sus
componentes con los comandos de MATLAB. Por ejemplo, ingresemos el siguiente vector.
x=[10,13,19,23,27,31,39,43,51];
Ahora probemos los siguientes comandos:
x(2)
x(7)
Se puede cambiar fácilmente el contenido de una componente.
x(6)=100;
Material realizado por Lic. Cristian González y Lic. Edgar Acosta Machuca.
UNIVERSIDAD NACIONAL DEL ESTE C.C. II – 2018
FACULTAD POLITÉCNICA MATLAB
Se puede también acceder a un rango de elementos
x([1,3,5])
x(1:3)
x(1:2:length(x))
Operaciones con vectores
Un gran numero de operaciones en las que intervienen vectores y escalares se pueden ejecutar
con MATLAB.
Operaciones entre vector y escalar.
Las operaciones entre escalares y vectores son directas. Desde el punto de vista teórico, no se
puede sumar un escalar a un vector. Sin embargo, MATLAB si lo permite. Por ejemplo, si y es un
vector, el comando y+2 añadirá 2 a cada componente del vector. Veamos las salidas de los
siguientes comandos.
y=1:5
y+2
y-2
2*y
y/2
Por supuesto, estas operaciones son igualmente validas para vectores columna.
w=(1:3:20)’
w+3
w-11
.1*w
w/10
Operaciones entre vectores.
En primer lugar, considérense los siguientes vectores.
a=1:3
b=4:6
La adición y sustracción de vectores es natural y fácil. Introdúzcanse los siguientes comandos.
a,b,a+b
a,b,a-b
Sin embargo, se pueden obtener resultados no esperados si no se recuerda que MATLAB es un
entorno que trabaja con matrices.
a,b,a*b
Material realizado por Lic. Cristian González y Lic. Edgar Acosta Machuca.
UNIVERSIDAD NACIONAL DEL ESTE C.C. II – 2018
FACULTAD POLITÉCNICA MATLAB
El ultimo comando devuelve un error porque * es el símbolo de MATLAB para la multiplicación de
matrices, y en este caso hay un problema de compatibilidad entre los tamaños (orden) de las
“matrices” a y b. También pueden ocurrir errores si se intenta añadir vectores de diferente
tamaño.
a=1:3,b=4:7,a+b
Operaciones con componentes.
Para multiplicar los vectores a y b componente a componente, se ejecuta el siguiente comando de
MATLAB.
>> a=(1:3)’,b=(4:6)’
>>a,b,a.*b
El símbolo .* es el operador de MATLAB para la multiplicación elemento a elemento. La salida se
calcula multiplicando las primeras componentes de los vectores a y b, a continuación las segundas
componentes, etc. El operador de MATLAB para la división componente a componente es
./
>>a,b,a./b
Para elevar cada componente de un vector a una potencia, se usa
.^
>>a,a.^2
Expresiones más complicadas.
Con un poco de práctica se aprenderá como evaluar expresiones más complejas. Supongamos, por
ejemplo, para evaluar la expresión x2 − 2x −3 para valores de x entre 1 y 10, con incremento de 1
se escribe
>> x=1:10
>> y=x.^2-2*x-3
Material realizado por Lic. Cristian González y Lic. Edgar Acosta Machuca.
UNIVERSIDAD NACIONAL DEL ESTE C.C. II – 2018
FACULTAD POLITÉCNICA MATLAB
Ejercicio Vectores
1- Crear un vector de tamaño N (N se solicitara por teclado) y asignarle los siguientes valores
a; v(1)=1; v(2)=2 ... v(n)=n e imprimir los valores.
2- - Dado un vector de N elementos (N se solicitara por teclado), hacer un algoritmo que
permita hallar el mayor y el menor de los elementos. Ingresar el tamaño y los elementos
de cada posición por teclado.
3- Dado un vector V de N elementos, ordenarlo de forma descendente luego intercalar los
elementos de la primera mitad con los elementos de las segunda mitad.
4- Crear un vector columna que contenga los números impares entre 1 y 100.
5- Crear un vector fila que contenga los números pares entre 2 y 100.
6- Leer 2 vectores A y B, ambos de longitud N (N se solicitara por teclado) y luego calcular e
imprimir:
a. El vector C que sea la suma de A y B, sabiendo que cada C(i) = A(i) + B(i).
7- Leer un vector A de N elementos (N se solicitara por teclado). Hacer un algoritmo que
permita obtener la sumatoria de todos los elementos ubicados en posiciones pares.
8- Leer un vector de N componentes (N se solicitara por teclado) y luego hallar la suma y el
promedio de las componentes que están en los lugares pares y de las que se encuentran
en posiciones impares.
9- Hacer un algoritmo que permita contar los elementos del vector V de N componentes (N
se solicitara por teclado), que sean múltiplos de 3 y de 5. También se desea obtener el
promedio de los elementos ubicados en posiciones impares.
10- Se tiene en memoria un vector V de N elementos (N se solicitara por teclado). Hacer un
algoritmo que permita encontrar e imprimir la mediana. Mediana es el elemento del
medio o central, si N es impar. Si N es par, la mediana es la semisuma de los dos centrales.
11- Leer un vector A de longitud N (N se solicitara por teclado), hacer un algoritmo que
permita crear los vectores B, C y D tales que:
a. B tenga los elementos de A distintos de 0
b. C tenga los elementos de A que sean pares
c. D tenga los elementos de A que no cumplan las condiciones anteriores.
12- Dado un vector A de N elementos (N es par y se solicitara por teclado), hacer un algoritmo
que permita crear un vector B, tal que la primera mitad de B, sea cada elemento de la
primera mitad de A multiplicado por el mayor elemento de A y la segunda mitad de B, sea
la segunda mitad de A multiplicada por el menor elemento de A.
Material realizado por Lic. Cristian González y Lic. Edgar Acosta Machuca.
UNIVERSIDAD NACIONAL DEL ESTE C.C. II – 2018
FACULTAD POLITÉCNICA MATLAB
13- Leer un vector A de tamaño N, hacer un algoritmo que permita ordenar sus elementos en
forma ascendente.
14- Se lee un vector K, de dimensión M y un vector L, de dimensión N, cada uno de los cuales
contiene números enteros positivos diferentes.
a. Almacenar en otro vector la intersección de los vectores K y L. o sea aquellos
elementos que están tanto en K como en L.
b. Almacenar en otro vector la unión de los vectores K y L, o todos aquellos
elementos que están en K. o en L. o en ambos.
c. Almacenar en otro vector la diferencia simétrica de los vectores K y L, o sea
aquellos elementos que están en K o en L, pero no en ambos.
Ej.: K. = (1,3,2,5) L = (1,5,4,7,8,3)
a) Inter = (1,3,5)
b) Unión = (1,3,2,5,8,4,7)
c) Difer = (2,4,7)
Material realizado por Lic. Cristian González y Lic. Edgar Acosta Machuca.
UNIVERSIDAD NACIONAL DEL ESTE C.C. II – 2018
FACULTAD POLITÉCNICA MATLAB
MATRICES
Concepto: Una matriz es un array bidimensional (o sea consta de dos dimensiones), es muy
parecida a un vector, pero utiliza dos índices, uno para las filas, y el otro para las columnas. Si
queremos referirnos a un elemento de la matriz, debemos referirnos por el nombre, y encerrado
entre paréntesis la fila, y la columna en que se encuentra.
Formas de definir matrices
Ej.: A= [1,2,3; 4,5,6; 7,8,9]
Si escribimos el ejemplo en la ventana de comando podremos observar que los símbolos del punto
y coma indican el final de una fila, mientras que las comas se usan para separar los datos de las
filas, también podemos usar espacios para delimitar las entradas de cada fila de la siguiente
manera:
Ej.: A= [1 2 3; 4 5 6; 7 8 9]
Con el comando size(A) podremos ver el tamaño de la matriz
Si por ejemplo quisiéramos identificar el elemento ubicado en la fila 2 y la columna 1 de la matriz
A, ejecutamos:
A(2,1)
Material realizado por Lic. Cristian González y Lic. Edgar Acosta Machuca.
UNIVERSIDAD NACIONAL DEL ESTE C.C. II – 2018
FACULTAD POLITÉCNICA MATLAB
De esta forma podemos seleccionar un elemento dado de una matriz por la fila y lacolumna a la
cual pertenece:
a = A(2,1);
En general, A(i,j) se refiere al elemento de la fila i, columna j de la matriz A. También es fácil
cambiar el valor de una entrada.
A(3,3)=11111
El siguiente comando extrae los 2 primeros elementos de la 3ª fila:
A(3, 1:2)
Los dos puntos aislados representan "todos los elementos". Por ejemplo, el siguiente comando
extrae todos los elementos de la 3ª fila:
A(3, :)
Para acceder a la última fila o columna puede utilizarse la palabra end, en lugar del número
correspondiente. Por ejemplo, para extraer la 3 fila (la última) de la matriz:
A(end, :)
Matrices especiales
MATLAB tiene una serie de rutinas incorporadas para crear matrices. Es posible crear una matriz
de ceros de cualquier tamaño.
A=zeros(5) Genera una matriz de tamaño (5x5) con valores ceros
B=zeros(3,5) Genera una matriz de tamaño (3x5) con valores ceros
A=ones(6) Genera una matriz de tamaño (6x6) con valores unos
B=ones(2,10) Genera una matriz de tamaño (2x10) con valores unos
A=rand(6) Genera una matriz de tamaño (6x6) con números aleatorios entre 0 y 1.
B=rand(5,3) Genera una matriz de tamaño (5x3) con números aleatorios entre 0 y 1.
Para definir una matriz con todos los elementos iguales podemos realizarlo de la siguiente
manera:
Ej.: F=5*ones(3,3) Genera una matriz de (3x3) con todos los valores iguales a 5.
F=[5 5 5; 5 5 5; 5 5 5] Genera una matriz de (3x3) con todos los valores iguales a 5.
MATLAB proporciona unas rutinas para el redondeo de números.
D=floor(C)
D=ceil(C)
D=round(C)
D=fix(C)
Material realizado por Lic. Cristian González y Lic. Edgar Acosta Machuca.
UNIVERSIDAD NACIONAL DEL ESTE C.C. II – 2018
FACULTAD POLITÉCNICA MATLAB
Operaciones con matrices
OPERADORES ARITMÉTICOS
Los operadores matriciales de MATLAB son los siguientes:
+ adición o suma
-sustracción o resta
*multiplicación
' traspuesta
^ potenciación
\ división-izquierda
/ división-derecha
.* producto elemento a elemento
./ y .\ división elemento a elemento
.^ elevar a una potencia elemento a elemento
Ej.: >> A=[1 2; 3 4]
A=
12
34
A*2
ans =
24
68
A-4
ans =
-3 -2
-1 0
A/2
0.5000 1.0000
1.5000 2.0000
Suma y Resta
En este caso las matrices deben tener las mismas dimensiones. Por ejemplo, definamos dos
matrices M1 y M2, y luego efectuemos la suma entre ellas; comprobaremos en el siguiente
ejemplo que cada elemento de la matriz suma es la suma de los elementos correspondientes delas
matrices sumandos (ídem para la resta):
M1 = [1 2 3; 4 5 6];
M2 = [0 1 0;-1 2 1];
s = M1 + M2
Producto entre matrices.
Sea P la matriz producto de las matrices A y B. En este caso el número de columnas de A debe ser
igual al número de filas de B. Veamos el siguiente ejemplo:
Material realizado por Lic. Cristian González y Lic. Edgar Acosta Machuca.
UNIVERSIDAD NACIONAL DEL ESTE C.C. II – 2018
FACULTAD POLITÉCNICA MATLAB
A = [3 4 5;6 7 8];
B = [3 2;1 1;0 -3];
p = A*B
Producto de dos matrices elemento a elemento en el caso que las matrices tengan iguales
dimensiones. Se obtiene entonces una matriz donde cada elemento está definido por el producto
de los elementos correspondientes en las matrices dadas. Por ejemplo:
A = [ 3 4 5;6 7 8];
B = [1 -1 2; 0 2 4];
P = A.*B
Notar que en este caso hay que anteponer el punto (.) al símbolo del producto (*)para que realice
la operación elemento a elemento.
Ejercicio Matrices
1- Crear una matriz de tamaño M(6,4) y asignarle la suma de los índices que corresponden a
cada posición Ej.: M(1,1)=2..M(1,2)=3.. etc. y luego imprimir la matriz.
2- Crear una matriz de tamaño M(4,4) y solicitar los valores para cada posición de la matriz y
luego imprimir la matriz.
3- - Desarrollar un algoritmo que realice la sumatoria de los elementos que se encuentran en
la diagonal principal de una matriz cuadrada X(3,3) solicitando los valores para cada
posición.
4- - Desarrollar un algoritmo que realice la sumatoria de los elementos que se encuentran en
la diagonal secundaria de una matriz cuadrada X(3,3) solicitando los valores para cada
posición.
5- - Desarrollar un algoritmo que realice la sumatoria de los elementos que se encuentran en
la diagonal principal de una matriz cuadrada X(3,3) solicitando los valores para cada
posición.
Material realizado por Lic. Cristian González y Lic. Edgar Acosta Machuca.