Introducci on a los Computadores (CNM-130) Vectores y...

59
Vectores en Matlab Ejemplos con vectores Matrices en Matlab Ejemplos con matrices Referencias Introducci´ on a los Computadores (CNM-130) Vectores y matrices en Matlab ® Alejandro Piedrahita H. Instituto de Matem´ aticas Facultad de Ciencias Exactas y Naturales Universidad de Antioquia Copyleft 2013. Reproducci´on permitida bajo los erminos de la licencia de documentaci´on libre GNU. Documento bajo construcci´on, reportar errores al correoelectr´onico [email protected]

Transcript of Introducci on a los Computadores (CNM-130) Vectores y...

Page 1: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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]

Page 2: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 3: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 4: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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 =

[]

Page 5: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 6: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 7: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 8: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 9: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 10: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 11: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 12: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 13: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 14: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 15: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 16: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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.

Page 17: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 18: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 19: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 20: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 21: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 22: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 23: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 24: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 25: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 26: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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.

Page 27: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 28: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 29: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 30: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 31: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 32: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 33: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 34: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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)

Page 35: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 36: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 37: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 38: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 39: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 40: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 41: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 42: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 43: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 44: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 45: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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”

Page 46: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 47: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 48: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 49: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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.

Page 50: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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)

Page 51: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 52: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 53: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 54: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 55: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 56: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 57: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 58: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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

Page 59: Introducci on a los Computadores (CNM-130) Vectores y ...ciencias.udea.edu.co/programas/pregrado/CNM-130/docs/clase10sinp.… · Vectores en Matlab Ejemplos con vectores Matrices

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