Introducci on a los Computadores (CNM-130) Vectores y...
Transcript of Introducci on a los Computadores (CNM-130) Vectores y...
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Introduccion a los Computadores (CNM-130)Vectores y matrices en Matlab®
Alejandro Piedrahita H.
Instituto de MatematicasFacultad de Ciencias Exactas y Naturales
Universidad de Antioquia
Copyleft «2013. Reproduccion permitida bajo losterminos de la licencia de documentacion libre GNU.
Documento bajo construccion, reportar errores al
correo electronico [email protected]
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Contenido
1 Vectores en Matlab
2 Ejemplos con vectores
3 Matrices en Matlab
4 Ejemplos con matrices
5 Referencias
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Vectores en Matlab
Arreglo: concepto en programacion analogo a los conceptosmatematicos de vector, matriz y tensor
Arreglo unidimensional (vector): estructura de datos formada por unacoleccion finita de elementos homogeneos y ordenados que sereferencian con un nombre comun
Homogeneos: todos los elementos son del mismo tipo de dato
Ordenados: el arreglo tiene un primer elemento, un segundo elemento,etc.
Finito: el arreglo tiene un ultimo elemento
Los elementos de un arreglo se almacenan en posiciones consecutivasde memoria
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Vectores en Matlab
Comando Uso
[∗ ∗ · · · ∗] Genera el vector (∗, ∗, · · · , ∗)
m:n Genera el vector (m,m+1,...,n)
m:d:n Genera el vector (m,m+d,m+2d,...,n)
x(k) Muestra la k-esima entrada del vector x
>> x = [1 2 3]x =
1 2 3
>> y = [3, -2, 1]y =
3 -2 1
>> x(3)ans =
3
>> x(2) = -4x =
1 -4 3
>> x(3) = 2*x(1) - 3*x(3)x =
1 -4 -7
>> x(-2)
Index exceeds matrix dimensions.
>> [x y]ans =
1 -4 -7 3 -2 1
>> vacio = []vacio =
[]
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Vectores en Matlab
Comando Uso
[∗ ∗ · · · ∗] Genera el vector (∗, ∗, · · · , ∗)
m:n Genera el vector (m,m+1,...,n)
m:d:n Genera el vector (m,m+d,m+2d,...,n)
x(k) Muestra la k-esima entrada del vector x
>> numeros = [23 14 9 3 34 56 0 -3]numeros =
23 14 9 3 34 56 0 -3
>> numeros(1:3)ans =
23 14 9
>> numeros(3:2:7)ans =
9 34 0
>> numeros(6:-2:2)ans =
56 3 14
>> a = 3:2:9a =
3 5 7 9
>> b = 10:-1:3b =
10 9 8 7 6 5 4 3
>> a(:)
ans =
3579
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Operaciones con vectores en Matlab
Operador Operacion
== Igualdad de vectores (componente por componente)
.∧ Potencia de vectores (componente por componente)
.* , ./ Producto y division de vectores (componente por componente)
+ , - Suma y resta de vectores
rem(x,y) Modulo (residuo) entre componentes de vectores x e y
>> u = 1:3; v = -1:2:3;
>> u == vans =
0 0 1
>> 2*uans =
2 4 6
>> u+vans =
0 3 6
>> u.*vans =
-1 2 9
>> u.∧vans =
1 2 27
>> rem(v,u)ans =
0 1 0
>> u+1ans =
2 3 4
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Comparando vectores en Matlab
Operador Operacion
∼= Diferente de (componente por componente)
< Menor que (componente por componente)
> Mayor que (componente por componente)
<= Menor igual (componente por componente)
>= Mayor igual (componente por componente)
>> x = [1 2 3]; y = [3 2 1];
>> x ∼= yans =
1 0 1
>> x >= yans =
0 1 1
>> x >= 1ans =
1 1 1
>> fib = [1 1 2 3 5 8 13];
>> fib < 5ans =
1 1 1 1 0 0 0
>> fib(fib < 5)ans =
1 1 2 3
>> rem(fib,2) == 0ans =
0 0 1 0 0 1 0
>> fib(rem(fib,2) == 0)ans =
2 8
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Operadores logicos con vectores en Matlab
Operador Operacion
& y logico para vectores
| o logico para vectores
∼ negacion
>> x, yx =
1 2 3y =
3 2 1
>> x & yans =
1 1 1
>> x && y
Operands to the || and && operators must be
convertible to logical scalar values.
>> x | yans =
1 1 1
>> ∼xans =
0 0 0
>> t = 0;
>> t * sin(1/t) == 0ans =
0
>> (t == 0) | (sin(1/t) == 0)ans =
1
>> (t == 0) || (sin(1/t) == 0)ans =
1
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Algunas funciones predefinidas en Matlab
Funcion Uso
abs(x) Calcula el valor absoluto de los elementos de un vector x
sqrt(x) Calcula la raız cuadrada de los elementos de un vector x
exp(x) Calcula la funcion exponencial de los elementos de un vector x
log(x) Calcula el logaritmo natural de los elementos de un vector x
sin(x) Calcula el seno de los elementos de un vector x
cos(x) Calcula el coseno de los elementos de un vector x
tan(x) Calcula la tangente de los elementos de un vector x
asin(x) Calcula el seno inverso de los elementos de un vector x
acos(x) Calcula el coseno inverss de los elementos de un vector x
atan(x· · · ) Calcula la tangente inversa de los elementos de un vector x
>> x = [-9 -4 -1 0 1 16];ans =
-9 -4 -1 0 1 16
>> abs(x)ans =
9 4 1 0 1 16
>> sqrt(abs(x))ans =
3 2 1 0 1 4
>> alfa = [0 pi/3 pi/6 pi/2];
>> cos(alfa)ans =
1.0000 0.5000 0.8660 0.0000
>> cos(alfa)ans =
0.0000 0.8660 0.5000 1.0000
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Algunas funciones predefinidas en Matlab
Funcion Uso
length(x) Calcula el numero de elementos de un vector x
max(x) Calcula el mayor de un conjunto de datos x
min(x) Calcula el menor de un conjunto de datos x
sum(x) Calcula la suma de los elementos de un vector x
cumsum(x) Calcula las sumas acumuladas de conjunto de datos x
prod(x) Calcula el producto de los elementos de un vector x
cumprod(x) Calcula los productos acumulados de conjunto de datos x
mean(x) Calcula la media aritmetica de un conjunto de datos x
median(x) Calcula la mediana de un conjunto de datos x
var(x) Calcula la varianza de un conjunto de datos x
sort(x) Ordena de menor a mayor los elementos de un vector x
any(x· · · ) true (1) si algun elemento de x cumplple propiedad · · ·find(x) Devuelve las posiciones de los elementos true (1) de un vector x
>> x = [3 2 4 0 -5 7];
>> length(x)ans =
6
>> max(x)ans =
7
>> sort(x)ans =
-5 0 2 3 4 7
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Algunas funciones predefinidas en Matlab
Funcion Uso
length(x) Calcula el numero de elementos de un vector x
max(x) Calcula el mayor de un conjunto de datos x
min(x) Calcula el menor de un conjunto de datos x
sum(x) Calcula la suma de los elementos de un vector x
cumsum(x) Calcula las sumas acumuladas de conjunto de datos x
prod(x) Calcula el producto de los elementos de un vector x
cumprod(x) Calcula los productos acumulados de conjunto de datos x
mean(x) Calcula la media aritmetica de un conjunto de datos x
median(x) Calcula la mediana de un conjunto de datos x
var(x) Calcula la varianza de un conjunto de datos x
sort(x) Ordena de menor a mayor los elementos de un vector x
any(x· · · ) true (1) si algun elemento de x cumplple propiedad · · ·find(x) Devuelve las posiciones de los elementos true (1) de un vector x
>> x = 1:10;
>> sum(x)ans =
55
>> xans =
1 2 3 4 5 6 7 8 9 10
>> cumsum(x)ans =
1 3 6 10 15 21 28 36 45 55
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Algunas funciones predefinidas en Matlab
Funcion Uso
length(x) Calcula el numero de elementos de un vector x
max(x) Calcula el mayor de un conjunto de datos x
min(x) Calcula el menor de un conjunto de datos x
sum(x) Calcula la suma de los elementos de un vector x
cumsum(x) Calcula las sumas acumuladas de conjunto de datos x
prod(x) Calcula el producto de los elementos de un vector x
cumprod(x) Calcula los productos acumulados de conjunto de datos x
mean(x) Calcula la media aritmetica de un conjunto de datos x
median(x) Calcula la mediana de un conjunto de datos x
var(x) Calcula la varianza de un conjunto de datos x
sort(x) Ordena de menor a mayor los elementos de un vector x
any(x· · · ) true (1) si algun elemento de x cumplple propiedad · · ·find(x) Devuelve las posiciones de los elementos true (1) de un vector x
>> x = [1 2 4 6 8 10 12 15];
>> mean(x)ans =
7.2500
>> median(x)ans =
7
>> var(x)ans =
24.2143
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Algunas funciones predefinidas en Matlab
Funcion Uso
length(x) Calcula el numero de elementos de un vector x
max(x) Calcula el mayor de un conjunto de datos x
min(x) Calcula el menor de un conjunto de datos x
sum(x) Calcula la suma de los elementos de un vector x
cumsum(x) Calcula las sumas acumuladas de conjunto de datos x
prod(x) Calcula el producto de los elementos de un vector x
cumprod(x) Calcula los productos acumulados de conjunto de datos x
mean(x) Calcula la media aritmetica de un conjunto de datos x
median(x) Calcula la mediana de un conjunto de datos x
var(x) Calcula la varianza de un conjunto de datos x
sort(x) Ordena de menor a mayor los elementos de un vector x
any(x· · · ) true (1) si algun elemento de x cumplple propiedad · · ·find(x) Devuelve las posiciones de los elementos true (1) de un vector x
>> xans =
1 2 4 6 8 10 12 15
>> x( x > median(x) )ans =
8 10 12 15
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Algunas funciones predefinidas en Matlab
Funcion Uso
length(x) Calcula el numero de elementos de un vector x
max(x) Calcula el mayor de un conjunto de datos x
min(x) Calcula el menor de un conjunto de datos x
sum(x) Calcula la suma de los elementos de un vector x
cumsum(x) Calcula las sumas acumuladas de conjunto de datos x
prod(x) Calcula el producto de los elementos de un vector x
cumprod(x) Calcula los productos acumulados de conjunto de datos x
mean(x) Calcula la media aritmetica de un conjunto de datos x
median(x) Calcula la mediana de un conjunto de datos x
var(x) Calcula la varianza de un conjunto de datos x
sort(x) Ordena de menor a mayor los elementos de un vector x
any(x· · · ) true (1) si algun elemento de x cumplple propiedad · · ·find(x) Devuelve las posiciones de los elementos true (1) de un vector x
>> xans =
1 2 4 6 8 10 12 15
>> any(x == 8)ans =
1
>> find( rem(x,3) == 0)ans =
4 7 8
>> x( find( rem(x,3) == 0 ) )ans =
6 12 15
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Recorriendo un arreglo
El recorrido se realiza por medio de un ındice
El ındice puede ir desde el primero hasta el ultimo elemento
Recorrido del primero al ultimo
for i=1:n
% proceso que involucra a x[i]
end
El ındice puede ir desde el ultimo hasta el primer elemento
Recorrido del ultimo al primero
for i=n:-1:1
% proceso que involucra a x[i]
end
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Ejercicios
Ejercicio 2.1 (Notas)
Escriba un programa en que almacene en un vector (arreglo unidimensional)las notas finales de los alumnos de un curso formado por 10 estudiantes. Elprograma debe visualizar por pantalla las notas.
Ejercicio 2.2 (Notas promedio)
Modifique el programa del ejercicio anterior (2.1) para que muestre por pan-talla el promedio de notas del curso.
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Ejemplo 2.1: Fibonacci con vectores
Ejemplo 2.1
Realice un programa (utilizando vectores) que calcule los n primeros terminosde la sucion de Fibonacci
1, 1, 2, 3, 5, 8, 13, 21, 34, . . .
Solucion
n: almacena el entero hasta donde se realiza la suma
El termino n-esimo de la sucesion para n = 2, 3, . . . esta dado por:
fn = fn−1 + fn−2 con f0 = f1 = 1
fib: vector que almacenara los terminos de la sucesion
>> fib = [1 1];
>> i = 3;>> fib(i) = fib(i-1) + fib(i-2);
>> fibfib =
1 1 2
>> i = i+1;>> fib(i) = fib(i-1) + fib(i-2);
>> i = i+1;>> fib(i) = fib(i-1) + fib(i-2);
>> fibfib =
1 1 2 3 5
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Ejemplo 2.1: Fibonacci con vectores
fibofun.m
function fib = fibofun(n)% El programa calcula los n primeros terminos% de la sucesion de Fibonacci utilizando vectores.
fib = [1 1];
for i=3:nfib(i) = fib(i-1) + fib(i-2);
end
end
>> fibofun(10)
ans =1 1 2 3 5 8 13 21 34 55
>> z = fibofun(1000);
>> z(1000)/z(999)ans =
1.6180
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Funciones “vectorizadas”
Comando Uso
arrayfun(@funcion,x) Evalua funcion en cada elemento del vector x
>> x = 1:7ans =
1 2 3 4 5 6 7
>> arrayfun(@esprimo,x)ans =
0 1 1 0 1 0 1
Permiten aumentar la rapidez de ejecucion de una funcion
Se utilizan los operadores .*, ./ y .∧ en la definicion de una funcion
funvec.m
function y = funvec(x)% Evalua la funcion f(x) = x∧2*sen(x)+1/x en% cada una de las componentes de un vector x
y = x.∧2.*sin(x) + 1./x;
end
>> x = 1:5;
>> funvec(x)ans =
1.8415 4.1372 1.6034 -11.8588 -23.7731
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Ejemplo 2.2 (densidad de los numeros primos)
Considere la funcion π(x) = numero de primos ≤ x para cualquier numeroreal x. Utilice una version “vectorizada” de la funcion esprimo desarrolladaen clase para hallar π(x) y verifique numericamente que para valores“grandes” de x, π(x) ≈ x/ lnx, es decir,
lımx→∞
π(x)
x/ lnx= 1
Solucion
>> n = 10;>> vec = 2:nvec =
2 3 4 5 6 7 8 9 10
>> primos = arrayfun(@esprimo,vec);
>> primosprimos =
1 1 0 1 0 1 0 0 0
>> sum(primos)ans =
4
>> sum(primos)/(n/log(n))ans =
0.9210
>> n = 1000;>> vec = 2:n;>> primos = arrayfun(@esprimo,vec);>> sum(primos)/(n/log(n))ans =
1.1605
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Ejemplo 2.2: densidad de los numeros primos
lımn→∞
π(n)
n/ lnn= 1
>> n = 10;>> vec = 2:n;>> primos = arrayfun(@esprimo,vec);
>> primosprimos =
1 1 0 1 0 1 0 0 0
>> vecvec =
2 3 4 5 6 7 8 9 10
>> cumsum(primos)vec =
1 2 2 3 3 4 4 4 4
>> cumsum(primos)/vec*log(vec)ans =
0.3339 0.5293 0.6679 0.7754 0.8632
0.9375 1.0018 1.0586 1.1093
>> n = 1000;>> vec = 2:n;>> primos = arrayfun(@esprimo,vec);
>> x = vec;>> y = cumsum(primos)/vec*log(vec);
>> plot(x,y)>> grid on
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Ejemplo 2.3: Criba de Eratostenes
Ejemplo 2.3
La Criba de Eratostenes es un metodo sistematico para seleccionar (cribar)
todos los numeros primos menores que un entero n > 1. Primero se listan
todos los numeros naturales desde 2 hasta n y de esa lista se eliminan
los numeros que no son primos de la siguiente manera: cuando se encuentra
un numero que no ha sido eliminado de la lista, dicho numero se declara
primo y se procede a eliminar todos sus multiplos. Este proceso se repite
mientras que el cuadrado del mayor numero declarado como primo no exceda
a n. Implemente una funcion que genere un vector con todos los primos menores
que n por medio de la Criba de Eratostenes.
©2 3 �Z4 5 �Z6 7 �Z8 9 �Z1011 �Z12 13 �Z14 15 �Z16 17 �Z18 19 �Z2021 �Z22 23 �Z24 25 �Z26 27 �Z28 29 �Z3031 �Z32 33 �Z34 35 �Z36 37 �Z38 39 �Z4041 �Z42 43 �Z44 45 �Z46 47 �Z48 49 �Z50
2 ©3 5 7 �Z911 13 �Z15 17 19
�Z21 23 25 �Z27 29
31 �Z33 35 37 �Z3941 43 �Z45 47 49
2 3 ©5 7
11 13 17 19
23 �Z25 29
31 �Z35 37
41 43 47 49
2 3 5 ©711 13 17 19
23 29
31 37
41 43 47 �Z49
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
2 3 �Z4 5 �Z6 7 �Z8 �Z9 �Z1011 �Z12 13 �Z14 �Z15 �Z16 17 �Z18 19 �Z20�Z21 �Z22 23 �Z24 �Z25 �Z26 �Z27 �Z28 29 �Z3031 �Z32 �Z33 �Z34 �Z35 �Z36 37 �Z38 �Z39 �Z4041 �Z42 43 �Z44 �Z45 �Z46 47 �Z48 �Z49 �Z50
�Z : multiplos de 2
�Z : multiplos de 3
�Z : multiplos de 5
�Z : multiplos de 7
>> n = 10; i = 2;
>> criba = 2:n; primos = [];
>> cribacriba =
2 3 4 5 6 7 8 9 10
>> any(criba == i)ans =
1
>> primos = [primos i]
primos =2
>> rem(criba,i) ∼= 0ans =
0 1 0 1 0 1 0 1 0
>> criba( rem(criba,i) ∼= 0 )ans =
3 5 7 9
>> criba = [i criba( rem(criba,i)∼= 0)]criba =
2 3 5 7 9
eratostenes.m
function primos = eratostenes(n)% Devuelve los primos menores o iguales que ncriba = 2:n;primos = [];
for i=1:n
if any(criba == i)
primos = [primos i];
criba = [i criba( rem(criba,i)∼= 0)];
end
end
end
>> eratostenes(30)
ans =2 3 5 7 11 13 17 19 23 29
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Ejemplo 2.4 (funcion logıstica)
Para cada r ∈ [0, 4], la funcion
fr(x) = rx(1− x), x ∈ [0, 1]
se denomina funcion logıstica. Para cada x1 ∈ [0, 1], la sucesion {xn}∞n=1
definida por xn+1 = f(xn) se denomina sistema dinamico discreto definidopor fr. Si xn representa el tamano de una poblacion en el ano n, xn+1 re-presenta el tamano de la poblacion en el ano n+ 1. Implemente una funcionque tenga como argumentos a x1, r y n y devuelva el vector {x1, . . . , xn}.Grafique como evoluciona el sistema para valores distintos de x1, r y n.
Solucion
>> x = 0.2;>> r = 1.5;>> n = 8;
>> y = zeros(1,n);>> y(1) = x;>> yy =
0.2000 0 0 0 0 0 0 0
>> for i=1:7y(i+1) = r*y(i)*(1-y(i));end
>> y
y =0.2000 0.2400 0.2736 0.2981
0.3139 0.3230 0.3280 0.3306
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Ejemplo 2.4: funcion logıstica
logistica.m
function y = logistica(x,r,n)% Devuelve vector con el sistema dinamico% discreto generado por la funcion logisticay = zeros(1,n);y(1) = x;
for i=1:n-1
y(i+1) = r*y(i)*(1-y(i));
end
end
>> y = logistica(0.4,1.5,100);>> plot(y,’o’)>> grid on
>> y = logistica(0.2,2.9,100);>> plot(y,’o’)>> grid on
>> y = logistica(0.5,3.5,100);>> plot(y,’o’)>> grid on
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Ejemplo 2.5: Torres de Hanoi
Ejemplo 2.5
La Torres de Hanoi es un rompecabezas o juego matematico inventado en 1883
por el matematico frances Edouard Lucas, que consiste de un conjunto de discos de
distintos tamanos, enumerados de manera creciente y que se apilan insertandose de
mayor a menor en una de tres estacas disponibles. El objetivo del juego es mover el
conjunto completo de discos a otra estaca, moviendo cada disco a la vez de manera
tal que un disco de mayor tamano nunca este sobre un disco de tamano menor.
(a) Inicio (b) Fin
Reglas Torres de Hanoi
I Solo se puede mover un disco a la vez.
I Un disco de mayor tamano no puede estar sobre uno de menor tamano.
I Solo se puede desplazar el disco que se encuentre arriba en cada estaca.
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Ejemplo 2.5: Torres de Hanoi
Reglas Torres de Hanoi
I Solo se puede mover un disco a la vez.
I Un disco de mayor tamano no puede estar sobre uno de menor tamano.
I Solo se puede desplazar el disco que se encuentre arriba en cada estaca.
(c) Inicio (d) Paso 1
Figura: Solucion con n = 1 discos, numero de pasos: 2n − 1 = 1
(a) Inicio (b) Paso 1 (c) Paso 2 (d) Paso 3
Figura: Solucion con n = 2 discos, numero de pasos: 2n − 1 = 3
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Ejemplo 2.5: Torres de Hanoi
Reglas Torres de Hanoi
I Solo se puede mover un disco a la vez.
I Un disco de mayor tamano no puede estar sobre uno de menor tamano.
I Solo se puede desplazar el disco que se encuentre arriba en cada estaca.
(a) Inicio (b) Paso 1 (c) Paso 2 (d) Paso 3
(e) Paso 4 (f) Paso 5 (g) Paso 6 (h) Paso 7
Figura: Solucion con n = 3 discos, numero de pasos: 2n − 1 = 7
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Ejemplo 2.5: Torres de Hanoi
(a) Inicio (b) Paso 1 (c) Paso 2 (d) Paso 3
(e) Paso 4 (f) Paso 5 (g) Paso 6 (h) Paso 7
(i) Paso 8 (j) Paso 9 (k) Paso 10 (l) Paso 11
(m) Paso 12 (n) Paso 13 (n) Paso 14 (o) Paso 15
Figura: Solucion con n = 4 discos, numero de pasos: 2n − 1 = 15
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Ejemplo 2.5: Torres de Hanoi
Algoritmo Torres de Hanoi
I Si se tiene n = 1 disco, mover el disco de la estaca (1) a la (3).
I Si se tienen n > 1 discos,
1 mover los primeros n− 1 discos de la estaca (1) a la (2),
2 mover el disco restante de la estaca (1) a la (3),
3 mover los primeros n− 1 discos de la estaca (2) a la (3).
hanoi.m
function hanoi(numdiscos, inicial, final)% hanoi(numdiscos, inicial, final)% Resuelve las Torres de Hanoi. "numdiscos"% es la cantidad de discos a mover, "inicial"% es la estaca donde se encuentran los discos% y "final" es la estaca a donde se van a% mover los discos.
if numdiscos==1fprintf(’Mover disco 1 desde la estaca %d hasta la estaca %d \n’, inicial, final);
elseintermedia = 6-inicial-final;hanoi(numdiscos-1, inicial, intermedia);fprintf(’Mover disco %d desde la estaca %d hasta la estaca %d \n’,numdiscos,inicial,final);hanoi(numdiscos-1, intermedia, final);
end
end
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Ejemplo 2.5: Torres de Hanoi
(a) Inicio (b) Paso 1 (c) Paso 2 (d) Paso 3
Figura: Solucion con n = 2 discos, numero de pasos: 2n − 1 = 3
hanoi.m
function hanoi(numdiscos, inicial, final)if numdiscos==1
fprintf(’Mover disco 1 desde la estaca %d hasta la estaca %d \n’, inicial, final);else
intermedia = 6-inicial-final;hanoi(numdiscos-1, inicial, intermedia);fprintf(’Mover disco %d desde la estaca %d hasta la estaca %d \n’,numdiscos,inicial,final);hanoi(numdiscos-1, intermedia, final);
endend
>> hanoi(1,1,3)Mover disco 1 desde la estaca 1 hasta la estaca 3
>> hanoi(2,1,3)Mover disco 1 desde la estaca 1 hasta la estaca 2Mover disco 2 desde la estaca 1 hasta la estaca 3Mover disco 1 desde la estaca 2 hasta la estaca 3
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Ejemplo 2.5: Torres de Hanoi
(a) Inicio (b) Paso 1 (c) Paso 2 (d) Paso 3
(e) Paso 4 (f) Paso 5 (g) Paso 6 (h) Paso 7
Figura: Solucion con n = 3 discos, numero de pasos: 2n − 1 = 7
>> hanoi(3,1,3)Mover disco 1 desde la estaca 1 hasta la estaca 3Mover disco 2 desde la estaca 1 hasta la estaca 2Mover disco 1 desde la estaca 3 hasta la estaca 2Mover disco 3 desde la estaca 1 hasta la estaca 3Mover disco 1 desde la estaca 2 hasta la estaca 1Mover disco 2 desde la estaca 2 hasta la estaca 3Mover disco 1 desde la estaca 1 hasta la estaca 3
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Matrices en Matlab
Arreglo bidimensional: concepto en programacion analogo al conceptomatematico de matriz
La definicion de arreglo bidimensional [] puede hacerse desde dosenfoques:
Enfoque recursivo: se trata de un arreglo unidimensional en el que cadaelemento es a su vez un arreglo unidimensional
Enfoque directo: estructura de datos formada por una coleccion finita deelementos homogeneos, ordenados cada uno de ellos en dos dimensionesy referenciados con un nombre comun
El acceso a un elemento de la matriz se realiza mediante el nombre delarreglo (identificador) y un par de ındices que indican la “posicion” delelemento
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Representacion grafica de un arreglo bidimensional
Matriz con m filas (horizontales) y n columnas (verticales)
∗ ∗ · · · · · ·· · · · · · ∗
∗ · · · · · ·
......
∗
......
∗ · · · ∗
∗ : elemento (1,1)
∗ : elemento (1,3)
∗ : elemento (2,n-1)
∗ : elemento (3,2)
∗ : elemento (i,j)
∗ : elemento (m,3)
∗ : elemento (m,n)
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Declaracion de arreglos
Declaracion de una matriz:
nombre arreglo(filas,columnas)
nombre arreglo: identificador que representa la coleccion de elementos
filas: constante entera positiva que representa la cantidad de filas
columnas: constante entera positiva que representa la cantidad decolumnas
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Matrices en Matlab
Comando Uso
[fila 1; ... ;fila m] Crea una matriz con m filas
A(i,j) Muestra la entrada de la fila i, columna j de la matriz A
A(i,:) Muestra la fila i de la matriz A
A(:,j) Muestra la columna j de la matriz A
A(k:l,:) Muestra las entradas en todas las columnas entre las filas k y l
A(:,p:q) Muestra las entradas en todas las filas entre las columnas p y q
A(k:l,p:q) Muestra las entradas en las filas k hasta l y las columnas p hasta q
>> A = [1 2 3; 4 5 6]A =
1 2 34 5 6
>> A(2,1)ans =
4
>> A(1,:)ans =
1 2 3
>> A(1,3) = -2; A(2,3) = 0;
>> AA =
1 2 -24 5 0
>> A(:,3)A =
-20
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Matrices en Matlab
Comando Uso
[fila 1; ... ;fila m] Crea una matriz con m filas
A(i,j) Muestra la entrada de la fila i, columna j de la matriz A
A(i,:) Muestra la fila i de la matriz A
A(:,j) Muestra la columna j de la matriz A
A(k:l,:) Muestra las entradas en todas las columnas entre las filas k y l
A(:,p:q) Muestra las entradas en todas las filas entre las columnas p y q
A(k:l,p:q) Muestra las entradas en las filas k hasta l y las columnas p hasta q
>> B = [2 3 -1 4 1; 1 -3 0 7 -2; 4 8 3 5 1; 4 3 1 8 5]B =
2 3 -1 4 11 -3 0 7 -24 8 3 5 14 3 1 8 5
>> B(:,2:4)ans =
3 -1 4-3 0 78 3 53 1 8
>> B(2:3,2:4)ans =
-3 0 78 3 5
>> B(2:4,1:3)ans =
1 -3 04 8 34 3 1
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Operaciones con matrices en Matlab
Operacion Uso
== Igualdad de matrices (componente por componente)
+ ,- Suma y resta de matrices (componente por componente)
.* Producto de matrices (componente por componente)
A’ La matriz transpuesta de A
zeros(m,n) Crea una matriz m×n de ceros (0)
ones(m,n) Crea una matriz m×n de unos (1)
eye(n) Crea una matriz diagonal n×n con unos en la diagonal
diag(x) Crea una matriz diagonal con las entradas del vector x
magic(n) Crea un cuadrado magico n×nrand(m,n) Crea una matriz m×n de numeros pseudo-aleatorios
size(A) Crea un vector con el numero de filas y columnas de la matriz A
reshape(X,m,n) Crea una matriz m×n con elementos tomados de la matriz X
>> A = [3 1 4; -2 4 8]A =
3 1 4-2 4 8
>> B = [7 1 0; -2 5 8]B =
7 1 0-2 5 8
>> A == Bans =
0 1 01 0 1
>> A+Bans =
10 2 4-4 9 16
>> 2*Aans =
6 2 8-4 8 16
>> A.*Bans =
21 1 04 20 64
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Operaciones con matrices en Matlab
Operacion Uso
== Igualdad de matrices (componente por componente)
+ ,- Suma y resta de matrices (componente por componente)
.* Producto de matrices (componente por componente)
A’ La matriz transpuesta de A
zeros(m,n) Crea una matriz m×n de ceros (0)
ones(m,n) Crea una matriz m×n de unos (1)
eye(n) Crea una matriz diagonal n×n con unos en la diagonal
diag(x) Crea una matriz diagonal con las entradas del vector x
magic(n) Crea un cuadrado magico n×nrand(m,n) Crea una matriz m×n de numeros pseudo-aleatorios
size(A) Crea un vector con el numero de filas y columnas de la matriz A
reshape(X,m,n) Crea una matriz m×n con elementos tomados de la matriz X
>> zeros(3,2)ans =
0 00 00 0
>> U = ones(2,3)U =
1 1 11 1 1
>> rand(3,2)ans =
0.8147 0.12700.6324 0.90580.9134 0.0975
>> eye(2)ans =
1 00 1
>> C = magic(3)C =
8 1 63 5 74 9 2
>> size(U)ans =
2 3
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Operaciones con matrices en Matlab
Operacion Uso
== Igualdad de matrices (componente por componente)
+ ,- Suma y resta de matrices (componente por componente)
.* Producto de matrices (componente por componente)
A’ La matriz transpuesta de A
zeros(m,n) Crea una matriz m×n de ceros (0)
ones(m,n) Crea una matriz m×n de unos (1)
eye(n) Crea una matriz diagonal n×n con unos en la diagonal
diag(x) Crea una matriz diagonal con las entradas del vector x
magic(n) Crea un cuadrado magico n×nrand(m,n) Crea una matriz m×n de numeros pseudo-aleatorios
size(A) Crea un vector con el numero de filas y columnas de la matriz A
reshape(X,m,n) Crea una matriz m×n con elementos tomados de la matriz X
>> rand(3,2) - rand(3,2)ans =
0.1135 -0.35650.2018 0.1937
-0.0874 0.7628
>> x = [3 -1 4]x =
3 -1 4
>> X = diag(x)X =
3 0 00 -1 00 0 4
>> t = 1:6t =
1 2 3 4 5 6
>> M = reshape(t,2,3)M =
1 3 52 4 6
>> M’ans =
1 23 45 6
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Recorriendo una matriz A de tamano m×n
Recorriendo la fila i-esima de A = [aij ]:
De la primera a la ultima columna
for j=1:n
% proceso que involucra a A(i,j)
end
Recorriendo la columna j-esima de A = [aij ]:
De la primera a la ultima fila
for i=1:m
% proceso que involucra a A(i,j)
end
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Recorriendo una matriz A de tamano m×n
Recorrido de A = [aij ] por filas:
for i=1:m
for j=1:n
% proceso que involucra a A(i,j)end
end
Recorrido de A = [aij ] por columnas:
for j=1:n
for i=1:m
% proceso que involucra a A(i,j)end
end
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Ejemplo 4.1: cine
Ejemplo 4.1
Escriba un programa que almacene en una matriz el numero de personas queingresan a una sala de cine durante cada uno de los dıas de la semana. Lamatriz debe constar de dos columnas, la primera para los dıas de la semanay la segunda para el numero de personas, y siete filas para cada uno de losdıas de la semana. El programa debe calcular el promedio de personas queingresan a la sala.
Solucion
>> cine = zeros(7,2);
>> cine
cine =
0 00 00 00 00 00 00 0
>> for i=1:7cine(i,1) = i;end
>> cinecine =
1 02 03 04 05 06 07 0
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Ejemplo 4.1: cine
promediocine.m
% El programa calcula el promedio de personas% que ingresan a una sala de cine.
cine = zeros(7,2);cine(:,1) = 1:7;
for i=1:7cine(i,2) = input(’Numero de personas que ingresan: ’);
end
prom = sum(cine(:,2))/7;
fprintf(’El promedio de persona que ingresan a la semana es %g \n’, prom);
>> promediocine
Numero de personas que ingresan: 20Numero de personas que ingresan: 15Numero de personas que ingresan: 35Numero de personas que ingresan: 42Numero de personas que ingresan: 74Numero de personas que ingresan: 80Numero de personas que ingresan: 95El promedio de persona que ingresan a la semana es 51.5714
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Ejemplo automata celular
“Todo deberıa hacerse tan simple como sea posible, pero no mas que eso”.
(A. Einstein)
(a) Hormiga (genero Formica) (b) Colonia de hormigas
Figura: ¿principios de auto-organizacion en sistemas emergentes?
Automata celular: modelo matematico de un sistema dinamico queevoluciona en el tiempo y el espacio de manera discreta
El automata celular esta formado por una “malla de celulas” y por “esta-dos” y “reglas” que determinan como cambian sus estados en el tiempo
Permiten modelar formacion de patrones biologicos basados en interac-ciones entre celulas y el medio
Fueron desarrollados por John von Neumann y Stanislaw Ulam como unmodelo computacional para fenomenos de “auto-reproduccion”
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Ejemplo 4.2 (celulas vecinas)
Considere una matriz A = [aij ] de tamano n × n, tal que cada una de susentradas es 1 o 0. Cada entrada representa una celula que puede estar “viva”(aij = 1) o “muerta” (aij = 0). Cada celula tiene celulas vecinas adyacen-tes, horizontal, vertical y diagonalmente. Implemente una funcion llamadavecinos(A, i, j, n) que calcule el numero de celulas vecinas “vivas” que tienela celula ubicada en la posicion (i, j).
Solucion
0 1 0 0 1 0 0 1 1
1 0 1 0 0 0 0 0 0
0 1 1 0 0 1 0 0 0
1 0 0 1 0 0 1 0 0
0 1 1 0 1 0 0 1 1
A(i,j): celula en la celda (i,j)
Las entradas de A son 1’s o 0’s:
A(i, j) =
{1 si (i, j) esta viva,
0 si (i, j) esta muerta.
>> A = randi([0,1],5)
A =
0 0 1 0 11 0 1 1 10 1 1 1 10 0 0 0 01 0 0 0 1
Vecinos de A(i, j) = ai,j
ai−1,j−1 ai−1,j ai−1,j+1
ai,j−1 ai,j ai,j+1
ai+1,j−1 ai+1,j ai+1,j+1
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Ejemplo 4.2: celulas vecinas
ai−1,j−1 ai−1,j ai−1,j+1
ai,j−1 ai,j ai,j+1
ai+1,j−1 ai+1,j ai+1,j+1
>> A
A =
0 0 1 0 11 0 1 1 10 1 1 1 10 0 0 0 01 0 0 0 1
>> i=3; j=3; n=5;
>> m=0;
>> m = m + (A(i-1,j-1) == 1)
m =0
>> m = m + (A(i-1,j) == 1)
m =1
>> m = m + (A(i-1,j+1) == 1)
m =2
>> m = m + (A(i,j-1) == 1)
m =3
>> m = m + (A(i,j+1) == 1)
m =4
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
ai−1,j−1 ai−1,j ai−1,j+1
ai,j−1 ai,j ai,j+1
ai+1,j−1 ai+1,j ai+1,j+1
vecinos.m
function m = vecinos(A,i,j,n)% calcula el numero de vecinos% vivos de A(i,j)
m = 0;
% suma a lo largo de la fila i-1if i>1
if j>1m = m + (A(i-1,j-1) == 1);
endm = m + (A(i-1,j) == 1);
if j<nm = m + (A(i-1,j+1) == 1);
endend
% suma a lo largo de la fila iif j>1
m = m + (A(i,j-1) == 1);endif j<n
m = m + (A(i,j+1) == 1);end % continua en la columna derecha -->
% suma a lo largo de la fila i+1if i<n
if j>1m = m + (A(i+1,j-1) == 1);
endm = m + (A(i+1,j) == 1);if j<n
m = m + (A(i+1,j+1) == 1);end
end
end
>> A
A =
0 0 1 0 11 0 1 1 10 1 1 1 10 0 0 0 01 0 0 0 1
>> vecinos(A,3,3,5)ans =
4>> vecinos(A,3,2,5)ans =
3
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Ejemplo 4.3 (juego de vida)
El juego de la vida es un ejemplo de un automata celular disenado por el matematicobritanico John H. Conway en 1970, que se “juega” en una malla formada por celdas(“celulas”), cada una de las cuales puede estar o viva (1) o muerta (0).
0 1 0 0 1 0 0 1 11 0 1 0 0 0 0 0 00 1 1 0 0 1 0 0 01 0 0 1 0 0 1 0 00 1 1 0 1 0 0 1 1
La malla de celulas evoluciona en eltiempo y cada celula interactua con susocho celulas vecinas que se encuentranadyacentes horizontal, vertical y diago-nalmente.
En cada paso discreto del tiempo, las celulas cambian su estado ası:
Una celula viva con menos de 2 vecinas vivas, muere por “soledad”.
Una celula viva con mas de 3 vecinas vivas, muere por “sobrepoblacion”.
Una celula viva con 2 o 3 vecinas vivas, vive en la siguiente generacion.
Una celula muerta con exactamente 3 vecinas vivas, vive en la siguiente.
La configuracion inicial constituye la primera generacion del sistema; la segundageneracion se crea aplicando simultaneamente las reglas arriba enunciadas, a cadauna de las celulas de la primera generacion y ası sucesivamente.
En teorıa, el juego de la vida se desarrola en una malla “infinita”; utilizaremosuna malla finita en la que las celulas que se encuentra en la primera columna(izquierda) no tienen vecinas a izquierda, las que se encuentran en la primera fila(arriba) no tienen vecinas sobre ellas, etc.
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Ejemplo 4.3: juego de vida
Reglas juego de vida
I Una celula viva con menos de 2 vecinas vivas, muere por “soledad”.
I Una celula viva con mas de 3 vecinas vivas, muere por “sobrepoblacion”.
I Una celula viva con 2 o 3 vecinas vivas, vive en la siguiente generacion.
I Una celula muerta con exactamente 3 vecinas vivas, vive en la siguiente.
>> n = 5;
>> A = randi([0,1],n)
A =
0 0 1 0 10 1 1 1 01 0 1 0 00 1 0 1 11 0 1 0 1
>> spy(A)
>> i=2; j=3;
>> m = vecinos(A,i,j,n);
>> A(i,j) == 1ans =
1
>> if m == 2 || m == 3A(i,j) = 1;elseA(i,j) = 0;end
>> spy(A)
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Reglas juego de vida
I Una celula viva con menos de 2 vecinas vivas, muere por “soledad”.
I Una celula viva con mas de 3 vecinas vivas, muere por “sobrepoblacion”.
I Una celula viva con 2 o 3 vecinas vivas, vive en la siguiente generacion.
I Una celula muerta con exactamente 3 vecinas vivas, vive en la siguiente.
vida.m
% Juego de vida de Conway
clear all;
% Inicializa la primera generacion
n = 50;
A = randi([0,1],n);
seguir = 1;
% Ciclo infinito, control-C para detener
while seguir
spy(A); % Imprime la matriz
drawnow; % Actualiza imagen con nueva matriz
B = A; % Nueva generacion
for i=1:n
for j=1:n
m = vecinos(A,i,j,n);
if A(i,j)==1 % para celula (i,j) viva
if m == 2 || m == 3
B(i,j) = 1;
else
B(i,j) = 0;
end
else % para celula (i,j) muerta
if m==3
B(i,j) = 1;
else
B(i,j) = 0;
end
end
end
end
A = B; % La nueva generacion queda en A
end
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
El juego de la vida
(a) Inicio (b) Generacion 1 (c) Generacion 2 (d) Generacion 3
Figura: arreglo cuadrado
(a) Inicio (b) Generacion 1 (c) Generacion 2 (d) Generacion 3
Figura: arreglo oscilante
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
El juego de la vida
(a) Inicio (b) Generacion 1 (c) Generacion 2
(d) Generacion 3 (e) Generacion 4 (f) Generacion 5
Figura: arreglo que se estabiliza
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
El juego de la vida
(a) Inicio (b) Generacion 1 (c) Generacion 2
(d) Generacion 3 (e) Generacion 4 (f) Generacion 5
Figura: arreglo periodico
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Bibliografıa I
S. AttawayMatlab: A Practical Introduction to Programming and ProblemSolvingButterworth-Heinemann, 2011
L. BlancoProbabilidadUniversidad Nacional de Colombia, Primera edicion, 2004.
J.W. Brown, D.J. MurdochA First Course in Statistical Programming With RCambridge University Press, 1th edition , 2008
D. BurtonElementary Number TheoryMcGraw Hill Higher Education, 5th edition, 2002
O. CairoMetodologıa de la programacionSegunda edicion. Alfaomega Grupo Editor, S.A., 2005
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Bibliografıa II
M.A. CriadoProgramacion en lenguajes estructuradosAlfaomega Grupo Editor, S.A. de C.V. Primera Edicion, 2006
S. GhahramaniFundamentals of Probability with Stochastic ProcessesPearson Education, Inc., 2005
D.J. HunterEssentials of Discrete MathematicsJones & Bartlett Learning; 2 edition, 2010
H.P. LangtangenA Primer on Scientific Programming with PythonSpringer, 2011
O. Jones, R. Maillardet, A. RobinsonIntroduction to Scientific Programming and Simulation Using RChapman and Hall/CRC; 1 edition, 2009
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Bibliografıa III
J. KiusalaasNumerical Methods in Engineering with MatlabCambridge University Press, 2 edition, 2009
D.E. KnuthThe Art of Computer ProgrammingVolume 1, Fundamental AlgorithmsAddison Wesley Longman, 1997
S. LipschutzSchaum’s Outline of Essential Computer MathematicsMcGraw-Hill, 1th edition, 1982
Ch.F. Van LoanIntroduction to Scientific ComputingPrentice-Hall, Inc., 1997
C.B. MolerNumerical Computing with MatlabSIAM, 2004
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Bibliografıa IV
H.M. Mora EscobarIntroduccion a C y a metodos numericosUniversidad Nacional de Colombia (Sede Bogota), 2004
A. Quarteroni, F. SalieriCalculo cientıfico con Matlab y OctaveSpringer-Verlag Italia, 2006
S.M. RossSimulationElsevier Inc., 2006
R. SeroulProgramming for MathematiciansSpringer, 2000
E. ScheinermanC++ for Mathematicians: An Introduction for Students andProfessionalsTaylor & Francis Group, LLC, 2006
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias
Bibliografıa V
A. ShenAlgorithms and ProgrammingSpringer Undergraduate Texts in Mathematics and Technology, 2010
P. TymannSchaum’s Outline of Principles of Computer ScienceMcGraw-Hill, 1th edition, 2008