algebra lineal con octave · código fuente contiene una potente librería de cálculo matricial...
TRANSCRIPT
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
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.
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.
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.
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
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
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
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).
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).
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?
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.
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.
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,:)
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
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.
Ejercicios tomados de: LAY, DAVID C. Álgebra Lineal y sus aplicaciones. Cuarta edición. PEARSON EDUCACIÓN. México 2012.