algebra lineal con octave · código fuente contiene una potente librería de cálculo matricial...

16
ALGEBRA LINEAL CON OCTAVE Números complejos y Sistemas de ecuaciones lineales. ¿Qué es Octave? Es un lenguaje de programación de alto nivel, orientado al cálculo numérico. Y su vez es un programa que permite interpretar este lenguaje de forma interactiva, mediante órdenes o comandos. Estas órdenes pueden ser introducidas a través de un entorno en forma de terminal o consola de texto. Por supuesto, Octave incluye, además, la posibilidad de ser utilizado de forma no interactiva, interpretando las órdenes contenidas en un fichero. Estas características se pueden resumir diciendo que Octave es un lenguaje interpretado orientado al cálculo numérico matricial. Desde sus orígenes, Octave es software libre, gracias a lo cual, su comunidad de desarrolladores y usuarios ha ido creciendo hasta llegar a ser muy significativa. Su lenguaje de programación es altamente compatible con el de Matlab, el conocido entorno de cálculo numérico (con licencia privativa) desarrollado por The MathWorks, Inc. Está disponible en numerosas plataformas, entre ellas sistemas Unix (para los que fue originalmente desarrollado), Windows y MacOsX. Su código fuente contiene una potente librería de cálculo matricial para C++. De hecho, ha sido diseñado de forma que sea extensible dinámicamente, a través de nuevos procedimientos escritos en C++. Estas extensiones son programas “especiales” que tienen la extensión.oct y, como programas compilados, cuentan con un rendimiento mucho mayor que las funciones escritas en el lenguaje interpretado de Octave. Octave en línea OPERACIONES CON NUMEROS COMPLEJOS Octave por defecto define la unidad imaginaria con i o j, como 0 + 1i; Práctica 1. Ejecute en Octave en línea lo siguiente: z = sqrt(-1); z1 = i; z2 = j; z3 = complex(0,1); ¿Qué puede concluir? sqrt(n); función propia del lenguaje para calcular raíz cuadrada de una cantidad n. complex(a, b); función propia del lenguaje para crear un número complejo, cuya parte real se representa por el argumento a y la parte imaginaria con el argumento b. Práctica 2. Ejecute en Octave en línea lo siguiente: z1 = 3 + 4i

Upload: phungquynh

Post on 29-Sep-2018

258 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ALGEBRA LINEAL CON OCTAVE · código fuente contiene una potente librería de cálculo matricial ... (Balanceo de una reacción química) Al balancear reacciones químicas tales como

ALGEBRA LINEAL CON OCTAVE

Números complejos y Sistemas de ecuaciones lineales.

¿Qué es Octave?

Es un lenguaje de programación de alto nivel, orientado al cálculo numérico. Y su vez es un programa que permite

interpretar este lenguaje de forma interactiva, mediante órdenes o comandos. Estas órdenes pueden ser introducidas a

través de un entorno en forma de terminal o consola de texto. Por supuesto, Octave incluye, además, la posibilidad de ser

utilizado de forma no interactiva, interpretando las órdenes contenidas en un fichero. Estas características se pueden

resumir diciendo que Octave es un lenguaje interpretado orientado al cálculo numérico matricial.

Desde sus orígenes, Octave es software libre, gracias a lo cual, su comunidad de desarrolladores y usuarios ha ido

creciendo hasta llegar a ser muy significativa. Su lenguaje de programación es altamente compatible con el de Matlab, el

conocido entorno de cálculo numérico (con licencia privativa) desarrollado por The MathWorks, Inc. Está disponible en

numerosas plataformas, entre ellas sistemas Unix (para los que fue originalmente desarrollado), Windows y MacOsX. Su

código fuente contiene una potente librería de cálculo matricial para C++. De hecho, ha sido diseñado de forma que sea

extensible dinámicamente, a través de nuevos procedimientos escritos en C++. Estas extensiones son programas

“especiales” que tienen la extensión.oct y, como programas compilados, cuentan con un rendimiento mucho mayor que

las funciones escritas en el lenguaje interpretado de Octave.

Octave en línea

OPERACIONES CON NUMEROS COMPLEJOS

Octave por defecto define la unidad imaginaria con i o j, como 0 + 1i;

Práctica 1. Ejecute en Octave en línea lo siguiente:

z = sqrt(-1);

z1 = i;

z2 = j;

z3 = complex(0,1);

¿Qué puede concluir?

sqrt(n); función propia del lenguaje para calcular raíz cuadrada de una cantidad n.

complex(a, b); función propia del lenguaje para crear un número complejo, cuya parte real se

representa por el argumento a y la parte imaginaria con el argumento b.

Práctica 2. Ejecute en Octave en línea lo siguiente:

z1 = 3 + 4i

Page 2: ALGEBRA LINEAL CON OCTAVE · código fuente contiene una potente librería de cálculo matricial ... (Balanceo de una reacción química) Al balancear reacciones químicas tales como

z2 = -5 + 3i

z3 = -7 -10i

z4 = 7 – 4i

luego utilice el comando

compass(z1)

¿Qué sucedió?

Números complejos en forma polar y de Euler

Práctica 3. Ejecute en Octave en línea lo siguiente:

m = abs(z1)

a = angle(z1)

zp = m*(cos(a) + i*sen(a))

ze = m*exp(i*a)

Práctica 4. Realice las operaciones con complejos desarrolladas en clase.

Práctica 5. Calcular y graficar las n raíces de un número complejo.

1. Copie o transcriba el siguiente código en un archivo de Notepad (block de notas):

% CALCULO Y GRAFICACION DE LAS N RAICES DE UN COMPLEJO

% AUTOR: NELSON O. CACERES MUÑOZ.

% ©2018 www.nelsoncaceres.com

z = input('Numero complejo en forma cartesiana :');

a = angle(z)

modulo = abs(z)

n = input('Indice de la raíz :');

zm = modulo.^(1/n)

for m = 1:n

ze(m) = zm*exp(i*(a + 2*m*pi)/n);

compass(ze)

end

ze’

fprintf('\t\t%s%d%s','GRAFICA DE LAS ', n , ' RAICES DEL COMPLEJO '), disp(z)

2. Cree una carpeta temporal en el escritorio de Windows.

Page 3: ALGEBRA LINEAL CON OCTAVE · código fuente contiene una potente librería de cálculo matricial ... (Balanceo de una reacción química) Al balancear reacciones químicas tales como

3. Guarde el archivo anterior con el nombre rcomplejas.m

4. Inicie sesión en Octave en línea

5. Entre en la opción menú

6. Ingrese con su cuenta de Gmail, Google o Correo electrónico.

7. Suba el archivo rcomplejas.m

8. Ejecútelo.

¿Qué aparece?

SISTEMAS DE m ECUACIONES LINEALES CON n VARIABLES

Práctica 6. Operaciones con matrices.

Operaciones con matrices en Octave

1. Copie o transcriba el siguiente código en un archivo de Notepad (block de notas): % OPERACIONES CON MATRICES % AUTOR: NELSON O. CACERES MUÑOZ. % ©2018 www.nelsoncaceres.com disp('Digite los valores entre corchetes rectangulares [ ]. '); disp('Hágalo por filas, separando cada valor con un espacio '); disp('y finalizando cada fila con ;'); %A = input('Matriz :') A = [3 6 7 9; 5 9 6 4; 4 0 6 8; 1 6 8 -4]; % Ubicación de un elemento de la matriz disp('Elemento ubicado en la fila 1 columna 3'); m = A(1,3) disp('Elemento ubicado en la fila 4 columna 2'); n = A(4,2) disp('Intercambiar una fila, fila 4 por fila 1 '); aux = A(1,:); A(1,:) = A(4,:); A(4,:) = aux disp('Multiplicar una fila por un escalar y sumar o restar a otra fila '); disp('Multiplicar por -5 la fila 1 y sumarla a la fila 2'); A(2,:) = -5*A(1,:)+A(2,:); A

2. Analice cada línea. 3. Termine de completar la matriz de tal forma que en la diagonal principal solo queden 1s y

arriba y abajo 0s, si es posible.

Page 4: ALGEBRA LINEAL CON OCTAVE · código fuente contiene una potente librería de cálculo matricial ... (Balanceo de una reacción química) Al balancear reacciones químicas tales como

SOLUCIÓN DE UN SISTEMA DE m ECUACIONES LINEALES CON n VARIABLES CON LA FUNCIÓN

LINSOLVE

Práctica 7. Resolver la siguiente situación.

Una embotelladora de refrescos desea cotizar la publicidad de sus productos en televisión, radio y revista, se tienen tres

propuestas del plan de medios de acuerdo con el presupuesto asignado acerca de la cantidad de anuncios por medio en el

transcurso de un mes. En el primer presupuesto cada anuncio en televisión tiene un coste de $250 000, en radio $5 000 y

en revista $30 000. En el segundo presupuesto $310 000, $4 000 y $15 000 y en el último presupuesto $560 000, $10 000 y

$35 000. Los totales por presupuesto son los siguientes: $2 795 000, $3 437 000 y $6 225 000. Determine la cantidad de

anuncios cotizados por cada medio.

Solución:

PRODUCTOS INSUMOS

A. TELEVISION x1

A. RADIO x2

A. REVISTAS x3

CAPACIDAD

PRESUPUESTO 1 250000 5000 30000 2795000

PRESUPUESTO 2 310000 4000 15000 3437000

PRESUPUESTO 3 560000 10000 35000 6225000

Sistema de ecuaciones

250000x1 + 5000x2 + 30000x3 = 2795000

310000x1 + 4000x2 + 15000x3 = 3437000

560000x1 + 10000x2 + 35000x3 = 6225000

Matriz de coeficientes

250000 5000 30000

310000 4000 15000

560000 10000 35000

Matriz de términos independientes

2795000

3437000

6225000

Solución con linsolve de Octave

Digite en Octave en línea

A = [250000 5000 30000; 310000 4000 15000; 560000 10000 35000]

b = [2795000; 3437000; 6225000]

sol = linsolve(A,b)

¿Cómo se interpreta él resultado?

Verifique los resultados.

Page 5: ALGEBRA LINEAL CON OCTAVE · código fuente contiene una potente librería de cálculo matricial ... (Balanceo de una reacción química) Al balancear reacciones químicas tales como

Práctica 8. Resolver la siguiente situación.

El departamento de pesca y caza proporciona tres tipos de comida a un lago que alberga tres especies de peces. Cada pez

de la especie 1 consume cada semana un promedio de 1 unidad del alimento 1, 1 unidad del alimento 2 y 2 unidades del

alimento 3. Cada pez de la especie 2 consume cada semana un promedio de 3 unidades del alimento 1, 4 unidades del

alimento 2 y 5 unidades del alimento 3. Cada pez de la especie 3 consume cada semana un promedio de 2 unidades del

alimento 1, 1 unidad del alimento 1 y 5 unidades del alimento 3. Cada semana se proporciona al lago 25000 unidades del

alimento 1, 20000 unidades del alimento 2 y 55000 unidades del alimento 3. Si se supone que los peces consumen todo el

alimento, ¿Cuántos peces de cada especie pueden coexistir en el lago?

PRODUCTOS INSUMOS

PEZ ESPECIE 1 x1

PEZ ESPECIE 2 x2

PEZ ESPECIE 3 x3

CAPACIDAD

ALIMENTO 1 1 3 2 25000

ALIMENTO 2 1 4 1 20000

ALIMENTO 3 2 5 5 55000

Matriz reducida

1 0 5 40000

0 -1 1 5000

0 0 0 0

El sistema tiene infinitas soluciones

x1 + 5x3 = 40000 → x1 = 40000 – 5x3

-x2 + x3 = 5000 → -x2 = 5000 – x3 → x2 = x3 – 5000

Sol = (40000 – 5x3 , x3 – 5000, x3)

x3 tiene que ser restringida.

No puede tomar cualquier valor, puesto que las 3 especies de peces deben coexistir.

Luego,

40000 – 5x3 > 0 y x3 – 5000 > 0

8000 > x3 y x3 > 5000

Por lo tanto,

5000 < x3 < 8000

x3 solo puede tomar valor entre 5000 y 8000, sin inclusive.

Si x3 = 6000, x2 = 3000, x1 =10000

Si x3 = 6500, x2 = 1500, x1 = 7450

Page 6: ALGEBRA LINEAL CON OCTAVE · código fuente contiene una potente librería de cálculo matricial ... (Balanceo de una reacción química) Al balancear reacciones químicas tales como

Práctica 9. Solución de un sistema homogéneo (Balanceo de una reacción química)

Al balancear reacciones químicas tales como la de la Fotosíntesis: CO2 + H2O → C6H12O6 + O2

Se buscan enteros positivos x1, x2, x3 y x4, que no tengan un divisor común diferente de 1, de manera que en

x1(CO2) + x2(H2O) → x3(C6H12O6) + x4(O2)

el número de átomos de cada elemento químico involucrado es el mismo en cada lado de la reacción. El número de átomos

de un elemento químico lo indica un subíndice; por ejemplo, en CO2 hay un átomo de C (carbono) y dos átomos de O

(oxígeno). Esto nos lleva a un sistema homogéneo de ecuaciones.

Solución

C: x1 = 6x3

O: 2x1 + x2 = 6x3 + 2x4

H: 2x2 = 12x3

Sistema homogéneo

x1 - 6x3 = 0

2x1 + x2 – 6x3 – 2x4 = 0

2x2 – 12x3 = 0

Matriz de coeficientes

1 0 -6 0

2 1 -6 -2

0 2 -12 0

Digite en Octave

octave:1> A = [1 0 -6 0; 2 1 -6 -2; 0 2 -12 0]

A =

1 0 -6 0

2 1 -6 -2

0 2 -12 0

octave:2> R = rref(A)

R =

1.00000 0.00000 0.00000 -1.00000

0.00000 1.00000 0.00000 -1.00000

0.00000 0.00000 1.00000 -0.16667

octave:3> format rat

octave:4> R

R =

1 0 0 -1

0 1 0 -1

0 0 1 -1/6

Matriz reducida, de dónde

Page 7: ALGEBRA LINEAL CON OCTAVE · código fuente contiene una potente librería de cálculo matricial ... (Balanceo de una reacción química) Al balancear reacciones químicas tales como

x3 – 1/6x4 = 0 → x3 = 1/6x4

x2 – x4 = 0 → x2 = x4

x1 – x4 = 0 → x1 = x4

➔ x4 = x4

Si x4 = 6, entonces x1 = 6 x2 = 6 x3 = 1 x4 = 6 De tal forma que la reacción queda balanceada si: 6(CO2) + 6(H2O) → 1(C6H12O6) + 6(O2)

18 O = 18 O

6 C = 6 C

12 H = 12 H

Page 8: ALGEBRA LINEAL CON OCTAVE · código fuente contiene una potente librería de cálculo matricial ... (Balanceo de una reacción química) Al balancear reacciones químicas tales como

Práctica 10. Operaciones con matrices.

1. Introduzca dos matrices A3x4 y B4x2. Calcule A*B y B*A. ¿Qué puede decir de los resultados?

2. Genere dos matrices aleatorias, A y B, con elementos entre -10 y 10. Encuentre A*B y B*A. Repita el proceso para, al menos, siete pares de matrices A y B. ¿Cuántos pares satisfacen A*B = B*A? ¿Qué puede concluir sobre la posibilidad de que A*B = B*A? Nota: Para generar una matriz de números aleatorios entre -10 y 10 haga lo siguiente: a = -10; b = 10; A = round((a + (b – a).*rand(3,4)))

3. Introduzca las matrices A, b, x y z siguientes.

a) Muestre que Ax = b y Az = 0.

b) ¿Qué podría concluir de A(x + sz), donde s es cualquier escalar? Pruebe calculando A(x + sz)

para al menos cinco escalares s diferentes.

4. a) Genere dos matrices aleatorias con elementos enteros A y B tales que el producto AB esté definido. Modifique B de manera que tenga dos columnas iguales. (Por ejemplo, B(:,2) = B(:,3)) b) Encuentre AB y vea sus columnas. ¿Qué puede decir sobre las columnas de AB si B tiene dos columnas iguales? c) Pruebe su conclusión repitiendo las instrucciones anteriores para otros tres pares de matrices A y B (no elija sólo matrices cuadradas).

Page 9: ALGEBRA LINEAL CON OCTAVE · código fuente contiene una potente librería de cálculo matricial ... (Balanceo de una reacción química) Al balancear reacciones químicas tales como

Práctica 11. Aplicación de las matrices. (Cadenas de Márkov) Una empresa que realiza estudios de mercado está estudiando los patrones de compra para tres productos que son competidores entre sí. La empresa ha determinado el porcentaje de residentes de casas que cambiarían de un producto a otro después de un mes (suponga que cada residente compra uno de los tres productos y que los porcentajes no cambian de un mes a otro). Esta información se presenta en forma de matriz:

pij = porcentaje que cambia del producto j al producto i

Sea P la matriz de transición:

Donde p12 = 0.2 significa que el 20% de los residentes que compran el producto 2 cambian al producto

1 después de un mes, p22 = 0.75 significa que el 75% de los residentes que compraban el producto 2

continúa comprándolo después de un mes y p31 = 0,15 significa que el 15% de los residentes que

compraban el producto 1 cambia al producto 3 después de un mes. Suponga que existe un total de

30000 residentes.

a) Interprete los demás elementos de P

b) Sea x una matriz de 3x1 donde xk = el numero de residentes que compran el producto k. ¿Cuál

es la interpretación de Px? ¿Y P2x = P(Px)?

c) Suponga inicialmente que

Encuentre Pnx para n = 5, 10, 15, 20, 25, 30, 35, 40, 45 y 50. Describa el comportamiento de los

vectores Pnx conforme n crece. ¿Qué interpretación se le puede dar a esto?

d) Suponga inicialmente que

Repita las instrucciones anteriores. Compare los resultados de c) y d).

Page 10: ALGEBRA LINEAL CON OCTAVE · código fuente contiene una potente librería de cálculo matricial ... (Balanceo de una reacción química) Al balancear reacciones químicas tales como

e) Elija su propio vector inicial para x, en donde las componentes de x sumen 30000. Repita las

instrucciones y haga una comparación con los resultados anteriores.

f) Calcule Pn y 30000Pn para los valores de n dados antes. ¿Qué observa sobre las columnas de

Pn? ¿Cuál es la relación de las columnas de 30000Pn y los resultados anteriores de este

problema?

Page 11: ALGEBRA LINEAL CON OCTAVE · código fuente contiene una potente librería de cálculo matricial ... (Balanceo de una reacción química) Al balancear reacciones químicas tales como

Práctica 12. Aplicación de la inversa de una matriz. (Análisis estructural1)

1 LAY, DAVID C. Álgebra Lineal y sus aplicaciones. Cuarta edición. PEARSON EDUCACIÓN. México 2012.

Page 12: ALGEBRA LINEAL CON OCTAVE · código fuente contiene una potente librería de cálculo matricial ... (Balanceo de una reacción química) Al balancear reacciones químicas tales como

Aplicaciones:

Solución

y = D*f

octave:1> D = [0.011 0.003 0.001;0.003 0.009 0.003;0.001 0.003 0.011]

D =

0.0110000 0.0030000 0.0010000

0.0030000 0.0090000 0.0030000

0.0010000 0.0030000 0.0110000

octave:6> f = [40; 50; 30]

f =

40

50

30

octave:7> y = D*f

y =

31/50

33/50

13/25

octave:8> format short

octave:9> y

y =

0.62000

0.66000

0.52000

Las deflexiones en los puntos 1, 2 y 3 respectivamente son:

0.62, 0.66 y 0.52 pulgadas.

Page 13: ALGEBRA LINEAL CON OCTAVE · código fuente contiene una potente librería de cálculo matricial ... (Balanceo de una reacción química) Al balancear reacciones químicas tales como

Solución

D-1 (Matriz de rigidez)

octave:10> Dinv = inv(D)

Dinv =

1.0000e+02 -3.3333e+01 1.3878e-15

-3.3333e+01 1.3333e+02 -3.3333e+01

1.3878e-15 -3.3333e+01 1.0000e+02

octave:11> format rat

octave:12> Dinv

Dinv =

100 -100/3 0

-100/3 400/3 -100/3

0 -100/3 100

Otra forma (Matriz ampliada)

octave:13> Da = 1000*D

Da =

11 3 1

3 9 3

1 3 11

octave:14> I = eye(3)

I =

Diagonal Matrix

1 0 0

0 1 0

0 0 1

octave:15> C = [Da I]

C =

11 3 1 1 0 0

3 9 3 0 1 0

1 3 11 0 0 1

octave:16> C(1,:) = (1/11)*C(1,:)

Page 14: ALGEBRA LINEAL CON OCTAVE · código fuente contiene una potente librería de cálculo matricial ... (Balanceo de una reacción química) Al balancear reacciones químicas tales como

C =

1 3/11 1/11 1/11 0 0

3 9 3 0 1 0

1 3 11 0 0 1

octave:17> C(2,:) = -3*C(1,:)+C(2,:)

C =

1 3/11 1/11 1/11 0 0

0 90/11 30/11 -3/11 1 0

1 3 11 0 0 1

octave:18> C(3,:) = -1*C(1,:)+C(3,:)

C =

1 3/11 1/11 1/11 0 0

0 90/11 30/11 -3/11 1 0

0 30/11 120/11 -1/11 0 1

octave:19> C(2,:) = (11/90)*C(2,:)

C =

1 3/11 1/11 1/11 0 0

0 1 1/3 -1/30 11/90 0

0 30/11 120/11 -1/11 0 1

octave:20> C(1,:) = -C(1,2)*C(2,:)+C(1,:)

C =

1 0 0 1/10 -1/30 0

0 1 1/3 -1/30 11/90 0

0 30/11 120/11 -1/11 0 1

octave:21> C(3,:) = -C(3,2)*C(2,:)+C(3,:)

C =

1 0 0 1/10 -1/30 0

0 1 1/3 -1/30 11/90 0

0 0 10 0 -1/3 1

octave:22> C(3,:) = (1/10)*C(3,:)

C =

1 0 0 1/10 -1/30 0

0 1 1/3 -1/30 11/90 0

0 0 1 0 -1/30 1/10

octave:23> C(2,:) = -C(2,3)*C(3,:)+C(2,:)

C =

1 0 0 1/10 -1/30 0

Page 15: ALGEBRA LINEAL CON OCTAVE · código fuente contiene una potente librería de cálculo matricial ... (Balanceo de una reacción química) Al balancear reacciones químicas tales como

0 1 0 -1/30 2/15 -1/30

0 0 1 0 -1/30 1/10

octave:24> Dinv2 = [C(1,4) C(1,5) C(1,6);C(2,4) C(2,5) C(2,6);C(3,4) C(3,5)

C(3,6)]

Dinv2 =

1/10 -1/30 0

-1/30 2/15 -1/30

0 -1/30 1/10

octave:25> Dinv3 = 1000*Dinv2

Dinv3 =

100 -100/3 0

-100/3 400/3 -100/3

0 -100/3 100

y = D*f

f = D-1*y

y = (0; 0; 0.04)

octave:26> y = [0; 0; 0.04]

y =

0

0

1/25

octave:27> f = Dinv*y

f =

0

-4/3

4

Las fuerzas respectivas en los puntos 1, 2 y 3 para obtener la deflexión requerida en el punto 3, son:

0, -4/3 y 4 lbf.

Ejercicio.

Con un procedimiento como el anterior resuelva las siguientes situaciones.

Page 16: ALGEBRA LINEAL CON OCTAVE · código fuente contiene una potente librería de cálculo matricial ... (Balanceo de una reacción química) Al balancear reacciones químicas tales como

Ejercicios tomados de: LAY, DAVID C. Álgebra Lineal y sus aplicaciones. Cuarta edición. PEARSON EDUCACIÓN. México 2012.