Fundamentos de la ingeniería matemática y sus algoritmos

117
1/117 Universidad Politécnica de Madrid–Escuela Técnica Superior de Ingenieros Industriales Grado en Ingeniería en Tecnologías Industriales. Curso 2016-2017-3º Matemáticas de Especialidad–Ingeniería Eléctrica Fundamentos de la Ingeniería Matemática y sus Algoritmos José Luis de la Fuente O’Connor [email protected] [email protected] Clase_fundamentos_2017.pdf

Transcript of Fundamentos de la ingeniería matemática y sus algoritmos

Page 1: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

1/117Universidad Politécnica de Madrid–Escuela Técnica Superior de Ingenieros IndustrialesGrado en Ingeniería en Tecnologías Industriales. Curso 2016-2017-3º

Matemáticas de Especialidad–Ingeniería Eléctrica

Fundamentosde la

Ingeniería Matemática y sus Algoritmos

José Luis de la Fuente O’[email protected]@upm.es

Clase_fundamentos_2017.pdf

Page 2: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

2/117

Índice

� Introducción y conceptos básicos

� Representación de un número en formato estándar IEEE

� Aritmética en un ordenador

� Evaluación de errores

� Cálculo numérico con matrices

� Producto de una matriz por un vector� Producto de dos matrices

� Normas

� Vectoriales�Matriciales

Page 3: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

3/117

Introducción

� En nuestro quehacer diario, consciente e inconscientemente, realizamos muchasoperaciones numéricas que confiamos ciegamente a los algoritmos numéricos,ordenadores y máquinas a nuestro alcance.

� Como ingenieros1, en importante que conozcamos qué hacen y cómo esosalgoritmos, o qué procedimientos formales siguen, pues son la fuente de muchasposibles mejoras, así como de problemas prácticos de interpretación y precisiónde los resultados.

� Calculemos, por ejemplo, el valor de un polinomio,

p.x/ D 2x4 C 3x3 � 3x2 C 5x � 1;en el punto x D 1=2.1 Pues somos esencialmente los que los producimos.

Page 4: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

4/117

� Supongamos que toda la información y los datos que se necesitan para haceresta operación están adecuadamente guardados en el ordenador.

¿Cuáles deberían ser?

� De acuerdo con nuestros conocimientos de este momento, la primera forma quese nos puede ocurrir para evaluar el polinomio en el punto dado procedería máso menos así:

p�12

� D 2 � 12� 1

2� 1

2� 1

2C 3 � 1

2� 1

2� 1

2� 3 � 1

2� 1

2C 5 � 1

2� 1 D 5

4.

� El número total de multiplicaciones que realizamos es 10; el de sumas/restas, 4.

Page 5: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

5/117

� Una segunda forma podría consistir en hacer lo siguiente

12� 1

2D �1

2

�2 D 14! y guardarlo

�12

�2 � 12D �1

2

�3 ! y guardarlo�12

�3 � 12D �1

2

�4 ! y guardarlo

y luego

p�12

� D 2 � �12

�4 C 3 � �12

�3 � 3 � �12

�2 C 5 � 12� 1 D 5

4.

� El número total de multiplicaciones en este caso es 3, para las potencias de 12,

más 4 después. Las sumas y restas son las mismas.

� Es evidente que si esto hay que hacerlo muchas veces, el ahorro en tiempo deesta segunda forma de proceder puede ser muy significativo, ¿no?

Page 6: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

6/117

� ¿Se puede hacer mejor aún? Consideremos el polinomio reescrito así:

p.x/ D �1C x�5 � 3x C 3x2 C 2x3�

D �1C x�5C x� � 3C 3x C 2x2�

D �1C x�5C x

�� 3C x�3C 2x�

��

D �1C x ��5C x �

�� 3C x � �3C x � 2�

��

y evaluémoslo de dentro hacia afuera12� 2; más 3 D 4

12� 4; más � 3 D �1

12� .�1/; más 5 D 9

2

12� 9

2; más � 1 D 5

4:

Page 7: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

7/117

� Esta forma de actuar se conoce como regla de Horner, o “multiplicaciónanidada”, por William George Horner, Inglaterra, 1786-1837.

Necesita 4 multiplicaciones y 4 sumas. Si el polinomio es de grado d , senecesitarán d multiplicaciones y d sumas.

Page 8: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

8/117

� Lo que acabamos de exponer es el paradigma de una de las cuestiones básicasque vamos a destacar recurrentemente en este curso:

� Los ordenadores son muy rápidos haciendo cosas muy sencillas.

� Con ellos, las cosas muy sencillas, sobre todo las que se repitenindefinidamente, hay que hacerlas de forma óptima: ingeniería.

� La mejor forma de hacer ciertas cosas y cálculos no siempre es la más obvia.

La mayoría de las ideas fundamentales de la ciencia sonesencialmente sencillas y, por regla general, pueden serexpresadas en un lenguaje comprensible para todos

Albert Einstein. 1879-1955.

En igualdad de condiciones la solución más sencilla esprobablemente la correcta

Guillermo de Ockham. 1285-1347.

Page 9: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

9/117� Para terminar con estas consideraciones previas, cualquier polinomio comoc1 C c2x C c3x2 C c4x3 C c5x4

se puede escribir así

c1 C x�c2 C x

�c3 C x

�c4 C x.c5/

���;

e incluso así

c1 C .x � r1/�c2 C .x � r2/

�c3 C .x � r3/

�c4 C .x � r4/.c5/

���;

donde r1, r2, r3 y r4 son los que se conocen como puntos de base.

�Este código deMATLAB hace todo eltrabajo.

function y=Horner(d,c,x,b)% Con regla de Horner se evalúa el polinomio de grado d,% definido en el vector c, en el punto x (puede ser vector).% Entrada: c(d+1), coeficientes del polinomio: c1, c2,...;% x, punto (vector) en el que se evalúa el polinomio;% b, puntos base, si es el caso.% Salida: y, valor del polinomio en x%if nargin<4, b=zeros(d,1); endy=c(d+1);for i=d:-1:1

y = y.*(x-b(i))+c(i);end

end

Page 10: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

10/117

function y=Horner(d,c,x,b)% Con regla de Horner se evalúa el polinomio de grado d,% definido en el vector c, en el punto x (puede ser vector).% Entrada: c(d+1), coeficientes del polinomio: c1, c2,...;% x, punto (vector) en el que se evalúa el polinomio;% b, puntos base, si es el caso.% Salida: y, valor del polinomio en x%if nargin<4, b=zeros(d,1); endy=c(d+1);for i=d:-1:1

y = y.*(x-b(i))+c(i);end

end

� Hagámoslo funcionar de varias maneras en el escritorio de MATLAB:

>> Horner(4,[-1 5 -3 3 2],1/2)ans =

1.250000000000000>> Horner(4,[-1 5 -3 3 2],1/2,[0 0 0 0])ans =

1.250000000000000>> Horner(4,[-1 5 -3 3 2],[-2 -1 0 1 2])ans =

-15 -10 -1 6 53

Page 11: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

11/117

Algunos conceptos básicos

� Un algoritmo2 es un conjunto ordenado y finito de operaciones y reglas quepermite hallar la solución de un problema, o realizar una actividad relativamentecompleja.

Nonlinear optimization: motivation, past and perspectives History

Euclid (300 BC) Al-Khwarizmi (783-850)

Philippe Toint (Namur) April 2009 30 / 323

Al-Khwarizmi (783-850)

2 De Muhammad ibn Musa al-Khwarizmi, sabio persa considerado uno de los padres del Álgebra (

10/11/2015 Álgebra - Wikipedia, la enciclopedia libre

https://es.wikipedia.org/wiki/%C3%81lgebra 1/7

Al Juarismi (siglo IX d.C.),considerado uno de los «padres delálgebra».

ÁlgebraDe Wikipedia, la enciclopedia libre

El álgebra (del árabe: الجبر al­ŷabr 'reintegración, recomposición'1 ) es la rama de lamatemática que estudia la combinación de elementos de estructuras abstractas acordea ciertas reglas. Originalmente esos elementos podían ser interpretados comonúmeros o cantidades, por lo que el álgebra en cierto modo originalmente fue unageneralización y extensión de la aritmética.2 3 En el álgebra moderna existen áreasdel álgebra que en modo alguno pueden considerarse extensiones de la aritmética(álgebra abstracta, álgebra homológica, álgebra exterior, etc.).

Índice

1 Introducción

2 Historia del álgebra

2.1 El álgebra en la antigüedad

2.2 Influencia árabe

2.3 Edad Moderna

2.4 Siglo XIX

3 Notación algebraica

3.1 Signos de operación

3.2 Signos de relación

3.3 Signos de agrupación

3.4 Signos y símbolos más comunes

4 Lenguaje algebraico

5 Estructura algebraica

6 Véase también

7 Referencias

8 Bibliografía

9 Enlaces externos

Introducción

A diferencia de la aritmética elemental, que trata de los números y las operaciones fundamentales, en álgebra -para lograr lageneralización- se introducen además símbolos (usualmente letras) para representar parámetros (variables o coeficientes), ocantidades desconocidas (incógnitas); las expresiones así formadas son llamadas «fórmulas algebraicas», y expresan unaregla o un principio general.4 El álgebra conforma una de las grandes áreas de las matemáticas, junto a la teoría de números,la geometría y el análisis.

)que escribió entre los años 800 y 825 la obra Quitab Al Jabr Al Mugabala, donde se recogía el sistema denumeración indio y el concepto de cero.

Page 12: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

12/117

� La velocidad de los algoritmos para realizar operaciones numéricas y susprestaciones y precisión dependen en gran medida de la exactitud con la que sepueden representar los números, datos y las operaciones en la máquina donde sehan de ejecutar.

� Para diseñar algoritmos y codificarlos en un lenguaje que interprete la máquinaes aconsejable conocer cómo opera la aritmética de esa máquina y losparámetros esenciales de su sistema de numeración.

� Los ordenadores y calculadoras guardan información numérica y alfanuméricaque se les suministran mediante una aproximación numérica, o código, de losmismos.

� En general, lo hacen empaquetándolos en grupos de bits –unidad básica–,denominados bytes (grupos de 8 bits).

Page 13: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

13/117

� Los ordenadores tienen varias formas estándar de representar un dato numérico:

� Formato entero —sin decimales (integer)— o

� Formato de coma o punto flotante (real): nuestro formatodecimal3.

� Además del integer y el real, se gestionan otros tipos de datos:

char/string Para almacenar o manipular caracteres alfanuméricos

logical Para designar variables o valores que sólo admiten el 1 o el 0 o elverdadero o falso

single/double Para almacenar variables o datos numéricos en precisiónsencilla –4 bytes– o doble –8 bytes–. Lo habitual en MATLAB es double

complex Para almacenar variables complejas, cuando no se quiere guardar laparte real y la imaginaria por separado.

3 De origen indo-arábigo entre los siglos IV y VI, transmitido a Europa gracias a la Escuela de Kerala, India.

Page 14: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

14/117

� La representación de un número entero en un ordenador en formato entero esexacta, siempre y cuando su valor esté comprendido dentro de los límites queadmite la máquina.

� En formato real sólo es posible representar un conjunto finito de números, F , dela recta real (F � R), formado por elementos de la forma

f D ˙�d1

ˇC d2

ˇ2C � � � C dp

ˇp

�� ˇe

D ˙0; d1d2 � � � dp � ˇe

donde: ˇ es la base de numeración, 0 � di � ˇ � 1; i D 1; : : : ; p;p el número de dígitos significativos, o longitud de mantisa (precisión);e el exponente, L (underflow) � e � U (overflow).

� La ristra de dígitos d1, d2, : : :, dp se denomina mantisa.

Page 15: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

15/117

Máquina Precisión ˇ p L U

IEEE st. 754-1985 normali.Simple 2 24 �126 127

Doble 2 53 �1022 1023

Extendida 2 64 �16381 16384

IBM mainframeSimple 16 6 �64 63

Doble 16 14 �64 63

Extendida 16 28 �64 63

Cray (superordenador)Simple 2 48 �8192 8191

Doble 2 96 �16383 16384

Calculadoras HP 10 12 �499 499

Parámetros de los sistemas de numeración de varias máquinas

Page 16: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

16/117

Normalización

� Un sistema de numeración se dice normalizado si el primer dígito de la mantisaes siempre distinto de cero al representar cualquier número que no es cero.Ventajas: I. En binario el primer dígito es siempre 1, por lo que no es necesario

guardarlo. Cualquier número sería ˙1;bbb : : : bb � 2p.II. Una única representación de un número.

III. No se malgastan dígitos (ceros) a la izquierda del primero nocero.

� En un sistema normalizado un número distinto de cero f está acotado de lasiguiente manera:

ˇL � jf j � ˇUC1.1 � ˇ�p/:

Page 17: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

17/117

� El conjunto F de números de una máquina representables exactamente no esevidentemente infinito: tiene un número de elementos fijo igual a

2.ˇ � 1/ˇp�1.U � LC 1/C 1� 2: dos opciones de signo.

� ˇ � 1: posibles valores del dígito más significativo de la mantisa.

� ˇ: posibles valores por cada uno de los p � 1 dígitos restantes de lamantisa, incluyendo el cero.

� U � LC 1 valores posibles del exponente.

Estos elementos no están igualmente espaciados sobre la recta real sino enpotencias sucesivas de ˇ.

� Si el número que se quiere representar es uno de estos elementos, se guardaríaen su exactitud; si no, una aproximación.

Page 18: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

18/117

� Ejemplo Si se trabaja en una máquina normalizada en la que ˇ D 2, p D 2(realmente habría 3 dígitos) , L D �1 y U D 1, los 25 elementos del conjuntoF de esa máquina son los representados por muescas en azul en la recta de lafigura Más ejemplos aquí.

0 2�2 3�3 3;5�3;5 2;5�2;5 1�1 1;5�1;5 0;5�0;5

� El número más grande positivo representable es

.1;11/2 � 21 D 2 ��1C 1=2C 1=22�

D 2 � .1C 0;5C 0;25/ D 3;510Iel más pequeño en valor absoluto,

.1;00/2 � 2�1 D 0;510:

Page 19: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

19/117Desnormalización

� La normalización produce un vacío de números en torno al 0. Ladesnormalización, que permite que haya ceros en los primeros dígitos de lamantisa, facilita rellenarlo cuando el exponente del número sea el mínimo.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

19/133

Desnormalización

� La normalización produce un vacío de números en torno al 0.La desnormalización facilita rellenarlo cuando el exponente del número sea elmínimo, permitiendo que haya ceros en los dígitos más significativos de lamantisa.

0 2�2 3�3 3;5�3;5 2;5�2;5 1�1 1;5�1;5 0;5�0;5

� En el sistema de “juguete” anterior, el vacío central se podría rellenar conelementos cuya mantisa no empieza por 1. Se podrían añadir 3 más a cada ladodel cero, siendo el más pequeño positivo representable el.0;01/2 � 2�1 D .0;125/10.

� La desnormalización amplía el rango de números representables, aunque la

� En el sistema de “juguete” anterior, el vacío central se podría rellenar conelementos cuya mantisa no empieza por 1.

� Se podrían añadir 3 más a cada lado del cero, siendo el más pequeño positivorepresentable el .0;01/2 � 2�1 D .0;125/10.

� La desnormalización amplía el rango de números representables, aunque laprecisión de esos de más es menor que la general al tener menos dígitos no cero.

Page 20: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

20/117Sistema binario de numeración

� Es el sistema de numeración universal, con el que trabajan casi todas lasmáquinas de cálculo electrónicas y ordenadores a nuestra disposición.

� En este sistema, cualquier número se expresa

� � � b2b1b0;b�1b�2 � � �donde cada dígito binario, o bit, es 0 ó 1.

� En el sistema decimal, de base 10, el equivalente a ese número cualquiera seríael resultado de

� � � b222 C b121 C b020 C b�12�1 C b�22�2 � � � :El número 4 en base 10 sería en binario 1002 y 3=410 sería 0;112.

Page 21: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

21/117

� Para convertir cualquier número del sistema decimal al binario habría que hacerlo siguiente:

Parte entera Se divide por 2 sucesivamente y se guardan los restos, 0 ó 1,de cada división.Esos restos se ordenan desde el primero al último y se disponen de derecha aizquierda. El conjunto de dígitos obtenido es la representación en binario.Por ejemplo, con 53;7 hacemos

53� 2D 26 r 126� 2D 13 r 013� 2D 6 r 1

6� 2D 3 r 0

3� 2D 1 r 1

1� 2D 0 r 1:

El número 5310 es en binario 1101012.Comprobando 1101012 D 25 C 24 C 22 C 20 D 32C 16C 4C 1 D 5310.

Page 22: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

22/117

Parte fraccionaria Se hace el proceso inverso: se multiplica la partefraccionaria por 2 y se guardan las partes enteras.Al final se disponen los enteros obtenidos, sucesivamente, a la derecha de lacoma. Con 53;7:

0;7 � 2D 0;4C 10;4 � 2D 0;8C 00;8 � 2D 0;6C 10;6 � 2D 0;2C 10;2 � 2D 0;4C 00;4 � 2D 0;8C 0

:::

Se ve que el proceso llega un momento que se repite indefinidamente cadacuatro pasos. Es decir,

0;7 D 0;101102:En resumen, el número 53;710 es en binario 110101;101102.

Page 23: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

23/117

� Para convertir cualquier número de binario a decimal:

Parte entera Se suman las sucesivas potencias de 2. Por ejemplo,101012 D 1 � 24 C 0 � 23 C 1 � 22 C 0 � 21 C 1 � 20 D 2110.

Parte fraccionaria Si es finita, se procede de forma similar, por ejemplo

0;10112 D 1

2C 1

23C 1

24D 1

2C 18C 1

16D�11

16

�10

:

Si es infinita, lo más fácil es usar el desplazamiento por potencias de 2.

Por ejemplo, si se quiere convertir a base 10 el número x D 0;10112,primero se multiplica por 24, lo que desplaza la coma cuatro posiciones a laderecha; luego se resta el original:

24 � x D 1011;1011x D 0000;1011:

Page 24: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

24/117

Restando �24 � 1� � x D 10112 D 1110:

Luego se despeja x, quedando que x D 11=1510:

�Otro ejemplo: x D 0;10101.Primero se multiplica por 22: y D 22 � x D 10;101. La parte entera es 2 ycon la parte fraccionaria, z D 0;101, se procede como antes:

23 � z D 101;101z D 000;101:

De aquí, restando, 7z D 5, por lo que la parte fraccionaria es z D 5=7.El resultado 22 � x D y D 2C 5=7, por lo que x D 2�2y D 19=2810.

Page 25: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

25/117

� Formatos habituales para presentar al usuario la información que un ordenadorguarda de un número en binario:

Decimal Binario Octal (base 8) Hexadecimal (base 16)01234567891011121314151617

01

1011

10010111011110001001101010111100110111101111

1000010001

01234567

10111213141516172021

0123456789ABCDEF

1011

Page 26: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

26/117

� Por ejemplo,>> format hex>> 1ans =

3ff0000000000000>> 9.4ans =

4022cccccccccccd>> 1/0ans =

7ff0000000000000>> 0/0ans =

fff8000000000000

Page 27: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

27/117

Formato binario estándar de aritmética encoma flotante de IEEEPrecisión doble —palabra de 64 bits— y normalizado

63 62 52 51 0

S Exponente Mantisa

� S es el bit de signo: 0 para números positivos; 1 los negativos.

� El exponente (11 bits) no tiene bit de signo: cualquier exponente4 es0 � Exp � 2047. Para que sea siempre positivo tiene un sesgo, el número1023 D 210 � 1.

� Cualquier dato numérico: .�1/S � 2.Exp�1023/ � 1;Mantisa:4 2047 D 211 � 1

Page 28: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

28/117

� Si Exp D 2047 y M ¤ 0, el valor es NaN ("Not a number").

� Si Exp D 2047 y M D 0, el valor es -Inf si S D 1; Inf, si S D 0.

� Si Exp D 1 y M D 0, el valor es el más pequeño representable: 2�1022.

� Si Exp D 0 y M ¤ 0, valores desnormalizados, el valor es.�1/S � 2�1022 � 0;Mantisa.

� Si Exp D 0, M D 0 y S D 1, el valor es -0.

� Si Exp D 0, M D 0 y S D 0, el valor es 0.

Page 29: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

29/117

� En el caso de 1 D C1; 0000000000000000000000000000000000000000000000000000 � 20, sucodificación interna es

0 01111111111 0000000000000000000000000000000000000000000000000000

una vez se añade 1023 al exponente. Entonces 0011111111112 D 3FF16.

� El siguiente número mayor que 1 con este formato estándar es

C1; 0000000000000000000000000000000000000000000000000001 � 20;o 1C 2�52. Interno 0 01111001011 0000000000000000000000000000000000000000000000000000

El exponente es 0011110010112 D 3CB16 D 97110. Es decir, 2971�1023 D 2�52.

Definición Se denomina epsilon de una máquina, �m Kaq, a la distancia entre 1 y elnúmero más pequeño mayor que uno del sistema de numeración de esa máquina. Si es elIEEE estándar de precisión doble, �m Kaq D 2�52:

Page 30: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

30/117

� Volviendo a lo anterior,

>> format hex; 1ans =

3ff0000000000000>> 9.4ans =

4022cccccccccccd>> 1/0, 0/0ans =

7ff0000000000000ans =

fff8000000000000>> epsans =

3cb0000000000000

� El número 9;4 D 1001;0110 se guarda así:

0 10000000010 0010 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1101 D 4022CCCCCCCCCCCD.

La mantisa se ha troceado en grupos de 4 bits para hacerlos corresponder con elformato hexadecimal. El exponente es 1023C 3 D 1026 D .10000000010/2.Añadiendo el bit de signo, los doce primeros bits, en hexadecimal, resultan40216.Al ajustar el número, se pierde algo, ¿no?

Page 31: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

31/117

� Los otros resultados corroboran la representación interna de 1=0 D1 y0=0 D NaN.

� Juguemos un poco más con estos conceptos mediante MATLAB

>> 1+2^-52ans =

1.000000000000000>> 1+2^-53==1ans =

1>> 1+2^-52==1ans =

0>> 2^-53ans =

1.110223024625157e-016>> ans*2ans =

2.220446049250313e-016>> epsans =

2.220446049250313e-016

Page 32: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

32/117

� Para calcular el epsilon de una máquina se puede utilizar epsilon.m, un scriptde MATLAB, como el que sigue.

function eps=epsiloneps=1;while 1+eps~=1

eps=eps/2;endeps=eps*2;

end

� Los resultados son:

>> eps1=epsiloneps1 =

2.220446049250313e-016>> eps % El de MATLABeps =

2.220446049250313e-016

Page 33: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

33/117

Precisión sencilla —palabra de 32 bits— y normalizado31 30 23 22 0

S Exponente Mantisa

� Valores típicos

S Exp M Valor

0 11111111 00000100000000000000000 NaN

1 11111111 00100010001001010101010 NaN

0 11111111 00000000000000000000000 10 10000001 10100000000000000000000 C1 � 2129�127 � 1;101 D 6; 50 10000000 00000000000000000000000 C1 � 2128�127 � 1;0 D 20 00000001 00000000000000000000000 C1 � 21�127 � 1;0 D 2�1260 00000000 10000000000000000000000 C1 � 2�126 � 0;1 D 2�1270 00000000 00000000000000000000001 C1 � 2�126 � 2�23 D 2�1490 00000000 00000000000000000000000 0

1 00000000 00000000000000000000000 -0

1 10000001 10100000000000000000000 �1 � 2129�127 � 1;101 D �6; 51 11111111 00000000000000000000000 �1

Page 34: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

34/117

IEEE precisión simple VS precisión doble

Precisión simple Precisión dobledígitos significativos (p) 24 bits 53 bitslongitud del exponente 8 bits 11 bitsbits de información 32 64emax 127 1023emin -126 -1022valor más grande normalizado 2127 � 1038 21023 � 10308valor más pequeño normalizado 2�126 � 10�38 2�1022 � 10�308�m Kaquina 21�24 � 10�7 21�53 � 10�16

Precisión simple Precisión dobleExp D 0 0 < Exp < 255 0 < Exp < 2047ExpD255.s/ ó 2047.d/

M D0 ˙0 potencias de 2 ˙1M ¤0 desnormalizados números ordinarios NaN

Page 35: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

35/117

� Los números positivos más grande y más pequeño que MATLAB puederepresentar en precisión doble son:

fmin D 2�1022 D 2;225073858507201 � 10�308fmax D .1 � 2�53/ � 21024 D 1;7976931348623157 � 10308fmindesnor: D 2�1022�52 D 4;940656458412465 � 10�324

>> digits(35)>> vpa(’(1-2^(-53))*2^1024’)ans =1.7976931348623157081452742373170436*10^308>> (1-2^(-53))*2^1024ans =

Inf>> 2^(-1022)ans =

2.225073858507201e-308

Variable Precision Arithmetic

Page 36: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

36/117

� Comprobamos utilizando realmax y realmin de MATLAB.

>> realminans =

2.225073858507201e-308>> realmaxans =

1.797693134862316e+308>> realmax*2ans =

Inf>> realmin/2ans =

1.112536929253601e-308>> realmin/(2^52)ans =

4.940656458412465e-324>> ans/2ans =

0>> vpa(’2^(-1028)’)ans =3.4766779039175021610784886208318814*10^(-310)

Page 37: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

37/117

Codificación o representación de un número

� Para ver cómo codifica el estándar IEEE un número, volvamos a9;4 D .1001;0110/2.

� En principio, en precisión doble, este número se “ve” así

C1; 0010110011001100110011001100110011001100110011001100 110 : : : � 23;con los primeros 52 bits de la mantisa encuadrados o encajados en elcompartimento reservado por la máquina para él.

Page 38: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

38/117

� Ahora bien, ¿cómo se encaja adecuadamente una ristra infinita de decimalesbinarios en el sistema de numeración de IEEE?

� ¿Truncándola o cortándola? Es decir, abandonando o ignorando los que nocaben en esa “caja”.

� ¿Redondeándola? En otras palabras, haciendo algo más inteligente para quese pierda la menor cantidad de información de ese número.

� El modelo general de cómo un ordenador representa en coma flotante(formato decimal) un número lo definen

el conjunto G D fx 2 R W m � jxj �M g [ f0g y la aplicación f l.�/ W G ! F

tales que

f l.x/ D�el elemento c 2 F más próximo a x, si se redondea;el c 2 F más cercano a x que satisfaga jcj � jxj, si se trunca.

Page 39: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

39/117

� El redondeo y truncamiento en una máquina ficticia que trabajase con ˇ D 10 ycon p D k sería:

� Truncando, el número

x D C0;d1d2d3 : : : dkdkC1dkC2 : : : � 10n

perdería los dígitos dkC1; : : : quedando C0;d1d2d3 : : : dk � 10n.� Redondeando, se añadiría 5 � 10n�.kC1/ al número en cuestión y luego setruncaría.Ejemplo Si p D 3 en una máquina, el número 0;3246 se representaría con0;324 truncando y con 0;325 redondeando.

� El error de redondeo interno de una máquina es debido a ese truncamiento oredondeo.

Page 40: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

40/117

� La técnica o regla de redondeo al más cercano de IEEE consiste en sumarun 1 al bit número 52 si el 53 es 1, o no hacer nada –redondear por lo bajo– enel 52 si el 53 es 0.

� Excepción: Si los bits que siguen al 52 son 10000 : : : (a medio camino entre elvalor superior e inferior) se redondea de tal manera que el 52 sea siempre 0.

� Con este criterio el número 9;4 quedaría así:

C1; 0010110011001100110011001100110011001100110011001101 � 23:Se ha desechado la ristra 0;1100� 2�52� 23 D 0;0110� 2�51� 23 D 0;4� 2�48y se ha sumado 2�52 � 23 D 2�49 al redondear.

Page 41: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

41/117

� En resumenf l.9;4/D 9;4C 2�49 � 0;4 � 2�48

D 9;4C �1 � 0;8�2�49D 9;4C 0;2 � 2�49:

Cometiéndose así un error de redondeo al guardarlo de 0;2 � 2�49. ¡Sólo porguardarlo! codificarlo, o almacenarlo, dentro de la máquina.

Definición El error absoluto de la representación x� del número x en un ordenadores jx � x�j.

� El error absoluto de la representación de un número x en un ordenador en susistema de coma, o punto, flotante es jx � f l.x/j.

Page 42: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

42/117

Definición El error relativo de la representación x� del número x en un ordenadores jx � x�j

jxj .

� El error relativo de redondeo del sistema de numeración IEEE, f l.x/, estáacotado de la siguiente manera

jx � x�jjxj � 1

2�m Kaq:

� El redondeo afecta a la representación de todos los resultados de las operacionespues f l.x/ D x.1C ı/, jıj < 1

2�m Kaq.

Page 43: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

43/117

Índice

� Introducción y Conceptos básicos

� Representación de un número en formato estándar IEEE

� Aritmética en un ordenador

� Evaluación de errores

� Cálculo numérico con matrices

� Producto de una matriz por un vector� Producto de dos matrices

� Normas

� Vectoriales�Matriciales

Page 44: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

44/117

Aritmética en un ordenador

� Proceso para sumar los números 3 y 14:

310 = 1;100 � 21 D 1;100 � 21024�10231410 = 1;110 � 23 D 1;110 � 21026�1023

Alineamiento310 = 0;011 � 21026�10231410 = 1;110 � 21026�1023

Suma0;011

1;110

10;001 ) 10;001 � 21026�1023D 1;0001 � 21027�1023 D 100012 D 1710

Page 45: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

45/117

� ¡OJO! con los casos extremos de exponentes muy alejados.

>> x=2^30x =

1.073741824000000e+009>> 2^-22ans =

2.384185791015625e-07>> x+2^-22==xans =

0>> x+2^-23==xans =

1>> 2^-23ans =

1.192092895507813e-07

Page 46: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

46/117

� El sistema de numeración, F , de un ordenador tiene definidas entre suselementos las operaciones aritméticas habituales. Dada la finitud de F sonoperaciones aritméticas de precisión finita.

� Si 2 designa cualquiera de las cuatro operaciones aritméticas elementales C, �,� y �, y ja2bj 2 G antes definido, el resultado de cualquier cómputo ocálculo en ordenador con ellas dará como resultado f l.a2b/.

� Cualquier operación aritmética en ordenador cumple que

f l.a2b/ D .a2b/.1C ı/donde jıj < 1

2�m Kaq.

Page 47: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

47/117

� Si las operaciones aritméticas elementales en una máquina se representan por˚, , ˝ y ˛, el resultado de aplicarlas será siempre:

a˚ b D f l.f l.a/C f l.b//Ia b D f l.f l.a/ � f l.b//Ia˝ b D f l.f l.a/ � f l.b// ya˛ b D f l.f l.a/� f l.b//:

� El error relativo de cualquiera de estas operaciones es

ja2b � f l.a2b/jja2bj � 1

2�m Kaq:

Page 48: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

48/117

� Ejemplo En una máquina ˇ D 10, p D 3 y la representación se hacemediante truncamiento.

� La operación aritmética .10�3 C 1/ � 1 dará como resultado

f lŒf l.10�3 C 1/ � 1� D 0:

� El error relativo es 1 (el 100%). Por el contrario,

f lŒ10�3 C f l.1 � 1/� D 10�3;resultado exacto.

� La aritmética de coma flotante, por consiguiente, no es asociativa:.1C �=2/C �=2 D 1, pero 1C .�=2C �=2/ > 1.¡Ojo! Tampoco es distributiva: .aC b/ � c ¤ a � c C b � c.

Page 49: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

49/117

Con MATLAB (¡comentarios bienvenidos!)

� f l.x/ D 1 si 1 < x � 1C �M .

� f l.x/ D 1C 2�m si 1C �m < x < 1C 2�m.

>> e = 1 - 3*(4/3 - 1)e =

2.2204e-016

>> a = 0.0;for i = 1:10

a = a + 0.1;enda == 1ans =

0

Page 50: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

50/117

>> b = 1e-16 + 1 - 1e-16;c = 1e-16 - 1e-16 + 1;b == cans =

0

>> (2^53 + 1) - 2^53ans =

0>> 1+2^53-2^53ans =

0>> 1+(2^53-2^53)ans =

1

>> sin(pi)ans =

1.2246e-016>>

Page 51: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

51/117

� Recordemos el número 9; 4:

>> format long>> x=9.4x =

9.400000000000000>> y=x-9y =

0.400000000000000>> z=y-0.4z =

3.330669073875470e-016>> 3*2^-53ans =

3.330669073875470e-016

El error en la codificación de 3;4 era 0;2 � 2�49. Cuando se le resta 9 el errorsigue siendo el mismo pues la representación de este número es exacta. Elnúmero 0;4 tiene un error de representación de f l.0;4/ D 0;4C 0;1 � 2�52, loque hace que el error final sea

0;2 � 2�49 � 0;1 � 2�52 D 0;1 � 2�52�24 � 1� D 3 � 2�53:

Page 52: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

52/117

� Ejemplo Supongamos que se quiere operar con los números x D 13e y D 5

7

en una máquina con ˇ D 10 y p D 5 que usa truncamiento.

� La representación en esa máquina de esos números será

f l.x/ D 0,33333 � 100 y f l.y/ D 0,71428 � 100:

� Los resultados de diversas operaciones y sus errores son:

Operación Resultado Valor Real Error Absoluto Error Relativo

x ˚ y 0,10476 � 101 22=21 0,190 � 10�4 0,182 � 10�4y x 0,38095 � 100 8=21 0,238 � 10�5 0,625 � 10�5x ˝ y 0,23809 � 100 5=21 0,524 � 10�5 0,220 � 10�4y ˛ x 0,21428 � 101 15=7 0,571 � 10�4 0,267 � 10�4

Page 53: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

53/117� Como el error máximo relativo es 0;267 � 10�4, la aritmética de ese ordenadorpara estos cálculos produce errores satisfactorios.

� Usemos u D 0;714251, v D 98765;9 y w D 0;111111 � 10�4.� La representación en la máquina de estos números será

f l.u/ D 0,71425 � 100; f l.v/ D 0,98765 � 105 y f l.w/ D 0,11111 � 10�4:� Como muestra la tabla, y u produce un error absoluto pequeño pero unerror relativo bastante grande:

Operación Resultado Valor Real Error Absoluto Error Relativoy u 0,30000 � 10�4 0,34714 � 10�4 0,471 � 10�5 0,136

.y u/˛ w 0,27000 � 101 0,31243 � 101 0,424 0,136.y u/˝ v 0,29629 � 101 0,34285 � 101 0,465 0,136u˚ v 0,98765 � 105 0,98766 � 105 0,161 � 101 0,163 � 10�4

� La división posterior por w y multiplicación por v amplifica el error absolutosin modificar el error relativo.

� Por el contrario, la adición del número grande v y el pequeño u produce unerror absoluto grande pero no un gran error relativo.

Page 54: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

54/117

Evaluación de diversos errores

� Un algoritmo perfectamente diseñado se puede utilizar en problemas malcondicionados, en los cuales los errores tienden a crecer de una formaincontrolada según se llevan a cabo operaciones aritméticas.

� La condición de un problema es directamente proporcional a la sensibilidad delos resultados a pequeñas variaciones en los datos. Si la condición es muygrande, deben esperarse dificultades aunque los datos iniciales sean exactos,pues los errores numéricos tenderán a amplificarse.

� También se pueden dar algoritmos inestables, que no tienen en cuenta esasconsideraciones a escala de operaciones individuales, u otras como vemos acontinuación.

Page 55: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

55/117

Error de cancelación o pérdida de relevancia

� Analicemos esta operación, >> x=1.e-15; ((1+x)-1)/xans = 1.110223024625157e+000

que debería dar 1.

� El error de cancelación, o de pérdida de relevancia o significancia, se refiere a lapérdida de dígitos que conlleva la representación final de ciertas operaciones–resta esencialmente– entre números de magnitud similar, o muy grandes ymuy pequeños, que dan un resultado con un número de dígitos representablemuy pequeño.

Page 56: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

56/117

� Como sabemos, para llevar a cabo sumas y multiplicaciones, los números sonprimeramente convertidos a un formato de exponente común. Si eldesplazamiento que ello conlleva en uno de los dos supera los dígitossignificativos que la máquina permite, se puede perder toda la información deese número, o introducir nueva errónea en el resultado final.

>> format long>> a=0.483525656234498a =

0.483525656234498>> b=0.483525534699123b =

0.483525534699123>> a-bans =

1.215353749861592e-007

Page 57: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

57/117

� En el ejemplo de MATLAB anterior, veamos qué pasa.

>> format long>> x=1.e-15;>> xx =

1.000000000000000e-015>> 1+xans =

1.000000000000001e+000>> (1+x)-1ans =

1.110223024625157e-015>> 1+xans =

1.000000000000001e+000>> ans-1ans =

1.110223024625157e-015>> ans/xans =

1.110223024625157e+000

Page 58: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

58/117

� Ejemplo Considérese la función f .x/ D .1 � cos x/=x2.Si x D 1;2� 10�5, el valor de cos x, redondeado a diez5 dígitos significativos, es

c D 0;9999999999por lo que

1 � c D 0;0000000001:La representación interna de 1 � c sólo posee un dígito real.

>> vpa(’1-cos(0.000012)’,10)ans =.1e-9>> vpa(’1-cos(0.000012)’,30)ans =.71999999999136000000e-10

5 El valor con treinta dígitos es 0,999999999928000000000863999999.

Page 59: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

59/117

� El valor de la función es entonces

1 � cx2D 10�10

1;44 � 10�10 D 0;6944 : : :

el cual es erróneo pues 0 � f .x/ < 1=2 para todo x ¤ 0.>> vpa(’1-cos(0.000012)’,10)/vpa(’0.000012^2’,10)ans =.69444444444444444444444444444444>> vpa(’1-cos(0.000012)’,50)/vpa(’0.000012*0.000012’,50)ans =.49999999999400000000002880000000>>

Page 60: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

60/117

� Para evitar el error de cancelación de este caso, como cos x D 1� 2 sen2.x=2/,es fácil ver que

f .x/ D 1

2

�sen.x=2/x=2

�2:

� Calculando f .x/ mediante esta fórmula y aproximando sen.x=2/ con 10dígitos significativos, el resultado es f .x/ D 0;5, el cual se aproxima alvalor exacto en 10 dígitos.

>> vpa(’sin(0.000012/2)^2’,10)/vpa(’(0.000012/2)^2’,10)/2ans =.50000000000000000000000000000000

� En general, no es buena práctica dar por buenos números de magnitud muypequeña resultado de una diferencia de números mucho más grandes.

Page 61: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

61/117

� Representación en el entorno de 0 de

f .x/ D .1 � cos x/x2

y g.x/ D 1

2

�sen.x=2/x=2

�2:

Effect of rounding error on algorithms

Example: two expressions for the same function:

f(x) =1− cos2 x

x2, g(x) =

sin2 x

x2

−0.01 0 0.010.999

1

1.001f

g

results of cosx and sinx were rounded to 10 decimal digits; othercalculations are exact

Problem conditioning and stability of algorithms 17-7

Page 62: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

62/117

Casuística de errores en algoritmosTruncamiento de series

� Un ejemplo clásico de algoritmo numérico es el del cálculo de e�x. La expresióndel desarrollo en serie de ex es:

ex D 1C x C x2

2ŠC x

3

3ŠC � � �

Si se desea calcular e�5,5 mediante esta expresión en una máquina con ˇ D 10y p D 5, los resultados que se obtienen son los siguientes:

e�5,5 DC1,0000 � 5,5000C 15,125 � 27,730C 38,129� 41,942C 38,446 � 30,208C 20,768 � 12,692C 6,9803 � 3,4902C 1,5997 � � � �

D C0,0026363:

Page 63: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

63/117

� La suma de términos se trunca después de 25, pues los siguientes no aportandígitos significativos a la precisión del resultado.

� El valor real de e�5,5 es 0,00408677. Como se puede comprobar, la diferenciacon 0,0026363 es muy importante: absoluta y relativamente.

� El problema con esta forma de calcular e�5,5 surge de la suma y resta devalores relativamente próximos en magnitud, con la consiguiente pérdida dedígitos significativos por cancelación.

� Una alternativa mejor es obtener el desarrollo en serie de e5;5 y luego calcular elrecíproco. La respuesta sería:

e�5;5 D 1

e5;5D 1

1C 5;5C 15;125C � � � D 0;0040865:

Page 64: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

64/117

� A continuación se lista un programa en MATLAB para el cálculo de ex pordesarrollo en serie. Su objetivo es analizar los errores que se cometen y cuándoocurren.

function ssum = expSeriesPlot(x,tol)% Suma de n términos de la serie exp**x% Datos: x = exponente del número e% tol = (opcional) tolerancia de la suma. Por defecto: tol = 5e-9% La suma termina cuando T_k/S_k < tol, donde T_k es el% término k-esimo y S_k la suma acumulada (con ese término).if nargin < 2, tol=5e-9; endterm = 1; ssum = term; Eabs(1)=abs(ssum-exp(x)); k=1; % Inicializarfprintf(’Aproximación en serie de exp(%f)\n\n’,x); % Cabecera salidafprintf(’ k término k suma Error abs. serie\n’);fprintf(’%3d %11.3e %11.3e %16.3e\n’,1,x,ssum,Eabs(1));

while abs(term/ssum)>tol % Bucle principalk=k+1;term = term*x/(k-1); % Siguiente término de la seriessum = ssum + term;Eabs(k) = abs(ssum-exp(x));fprintf(’%3d %11.3e %11.3e %16.3e\n’,k,term,ssum,Eabs(k));

endsemilogy(1:k,Eabs,’-’); xlabel(’Número de términos’); ylabel(’Error absoluto’);fprintf(’\nError de truncamiento después de %d términos: %11.3e\n\n’,k,Eabs(k));

end

Page 65: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

65/117

� Los resultados numéricos del cálculo de e�10 se listan a continuación.

>> expSeriesPlot(-10,5e-12)Aproximación en serie de exp(-10.000000)

k término k suma Error abs. serie1 -1.000e+001 1.000e+000 1.000e+0002 -1.000e+001 -9.000e+000 9.000e+0003 5.000e+001 4.100e+001 4.100e+001..

47 1.817e-012 4.540e-005 1.803e-01348 -3.867e-013 4.540e-005 2.063e-01349 8.055e-014 4.540e-005 1.258e-01350 -1.644e-014 4.540e-005 1.422e-01351 3.288e-015 4.540e-005 1.389e-01352 -6.447e-016 4.540e-005 1.396e-01353 1.240e-016 4.540e-005 1.394e-013

Error de truncamiento después de 53 términos: 1.394e-013

ans =4.5400e-005

Page 66: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

66/117

� El gráfico del error absoluto respecto del número de términos considerado en laserie es el que sigue.

0 10 20 40 50 6010

−14

10−12

10−10

10−8

10−6

10−4

10−2

100

102

104

30Numero de terminos

Err

or a

bsol

uto

� Para k < 48 el error que se comete al evaluar la serie con la fórmula lodetermina el truncamiento de la misma. A partir de k > 48 es el error deredondeo interno el que evita que se pueda mejorar el resultado.

Page 67: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

67/117

� Este ejemplo pone de manifiesto la interdependencia entre los errores deredondeo internos de la máquina y los errores debidos al truncamiento de seriesen los algoritmos.

Page 68: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

68/117

Solución de una ecuación cuadrática

� Desde el punto de vista teórico, resolver la ecuación cuadráticaax2C bxC c D 0 es un problema trivial. Desde el punto de vista numérico conprecisión finita, no tanto.

� Como es sabido, si a, b y c son números reales y a ¤ 0, las dos soluciones de laecuación, x1 y x2, están dadas por las expresiones

x1 D �b Cpb2 � 4ac2a

(1)

y

x2 D �b �pb2 � 4ac2a

: (2)

Page 69: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

69/117

� Veamos lo que ocurre al aplicar directamente estas fórmulas en una máquina enla que ˇ D 10, p D 8, L D �50 y U D 50.

� Si a D 1, b D �105 y c D 1, las raíces auténticas de la ecuación son

x1 D 99999;999990y

x2 D 0;000010000000001:

� Si se usan las expresiones (1) y (2) en la máquina apuntada, el resultado es

x1 D 100000;00y

x2 D 0;0:

Page 70: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

70/117

� Al calcular x1 y x2 ha habido un error de cancelación catastrófico, pues

f l..�105/2 � 4/ D 1010:

� La forma de evitarlo consiste en usar el signo de b para determinar cuál de lasexpresiones (1) o (2) produciría menor error de cancelación, y usarla paracalcular la raíz de mayor valor absoluto, a partir de la fórmula

x1 D��b C signo.b/

pb2 � 4ac

2a:

� Como ax2 C bx C c D a.x � x1/.x � x2/, lo que implica que ax1x2 D c, laotra raíz se podría calcular usando la expresión

x2 D c

ax1:

Page 71: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

71/117

� Aplicando este criterio en el ejemplo apuntado se obtendrían las raícesx1 D 100000;00 y x2 D 0;00001: ambas buenas soluciones.

� Módulos interactivos en esta dirección.

Page 72: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

72/117

Aproximación de la derivada

� De la definición de derivada de una función f W R ! R en un punto x

f 0.x/ D lKımh!0

f .x C h/ � f .x/h

:

se puede deducir la aproximación por diferencias finitas

f 0.x/ � f .x C h/ � f .x/h

.

Page 73: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

73/117

� Por el desarrollo en serie Taylor,6

f .x C h/ D f .x/C f 0.x/hC f 00.�/h2=2;

para algún � 2 Œx; x C h�. Es decir,f 0.x/ D .f .x C h/ � f .x// =hC f 00.�/h=2:

� Esta expresión nos dice que el error de la aproximación por diferencias finitas,resultado del truncamiento de esa fórmula a partir del tercer término, estaráacotado pues por Mh=2, donde M acota jf 00.t/j en un t cerca de x.

� Suponiendo por otro lado que el error interno del cálculo de la función es �, elerror de redondeo interno de evaluar la derivada por la fórmula de diferenciasfinitas estará acotado por 2�=h.6 Formulado en 1715 por Brook Taylor, Reino Unido, 1685-1731.

Page 74: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

74/117

� El error total del cálculo en la derivada está acotado en consecuencia por lasuma de los dos posibles componentes de error,

Mh

2C 2�h:

El primer término decrece, y el segundo se incrementa, al decrecer h

� Haciendo la derivada de esta suma con respecto a h igual a cero, se obtiene quela misma se minimiza cuando

h � 2p�=M:

Page 75: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

75/117

� Para la función f .x/ D sen.x/, en x D 1, tomando M D 1, el error total de laaproximación por diferencias finitas se representa en la figura. Su mínimo es� 10�8 � p�.

10−16

10−14

10−12

10−10

10−8

10−6

10−4

10−2

100

10−18

10−16

10−14

10−12

10−10

10−8

10−6

10−4

10−2

100

102

step size

erro

r

truncation error rounding error

total error

Page 76: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

76/117

� El error de truncamiento en la aproximación por diferencias finitas puedereducirse usando la fórmula centrada:

f 0.x/ � f .x C h/ � f .x � h/2h

.

� En términos generales, los errores de redondeo tienden a prevalecer en loscálculos algebraicos de los algoritmos que llegan a una solución en un númerode pasos finito, mientras que los de truncamiento sobresalen en los que seutilizan derivadas, integrales, y no linealidades en general, que suele ser el casode los algoritmos de procesos infinitos o cuasi infinitos.

Page 77: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

77/117

Otra suma de infinitos sumandos

� Como es sabido1XkD1

k�2 D �2

6D 1;64493406684822640606569166266 : : :

� Supongamos que no se conoce el resultado o que se desea calcularlo con unordenador.

� Parece lógico codificar un bucle en k mediante el cual se sumen los términos dela serie hasta que el resultado no se vea alterado por la incorporación de nuevosdígitos.

� En un ordenador personal, utilizando precisión sencilla, el valor que se obtiene apartir de k D 4096 es 1;64472532.

Page 78: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

78/117

� El truncamiento que llevaría a cabo este algoritmo haría que el resultado sólo seaproximase al exacto en cuatro dígitos, cuando lo esperable, de acuerdo con elsistema de numeración de la máquina, serían 6 dígitos mínimo. ¿Qué pasa?

� La respuesta está en la forma en que se efectúa la suma: primero los númerosmayores y después los más pequeños.

� En efecto, para k D 4096, se lleva a cabo la siguiente operación: s C 4096�2.El término 4096�2 D 2�24 y s � 1;6.

� Como ya hemos visto, la precisión sencilla utiliza una mantisa de 24 bits por loque 4096�2, frente a s � 1;6, se sale de la ventana de valores que admite lapalabra de ordenador que ha de representar el resultado. Igual ocurriría con lostérminos sucesivos.

Page 79: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

79/117

� Una forma de remediar esto consiste en acumular primero la suma de lostérminos más pequeños y luego la de los grandes, lo que requiere anticiparcuántos términos se necesitan.

function Suma_de_serie_1(j)% Se simula suma 1/k^2 con infinitos sumandossuma=0; i=j;

while i~=0suma=suma+1/i/i;i=i-1;

endfprintf(’ Suma = %21.17f\n’,suma);

end

� Si se utilizan 1010, el valor que se obtiene con este código de MATLAB es

>> tic, Suma_de_serie_1(10000000000), tocSuma = 1.64493406674822640

Elapsed time is 73.001613 seconds.>>

es decir, el exacto con 10 dígitos significativos.

Page 80: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

80/117

� Analicemos esta variante del problema.

function suma = Suma_de_serie_3(i,j)%suma=i*0;for i1=i:j, suma=suma+1/i1/i1; endend

>> i=vpa(’1’,30)i =1.0>> tic, Suma_de_serie_3(i,200000), tocans =1.6449290668607264156390818334169Elapsed time is 282.695168 seconds.>>

Page 81: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

81/117

Polinomio de Wilkinson

� Toma el nombre de James Hardy Wilkinson, del National Physical Laboratory,Reino Unido, 1919-1986. Tiene esta forma

w.x/ D .x � 1/.x � 2/ � � � .x � 20/:

Page 82: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

82/117

� Si se expande

w.x/Dx20 � 210x19 C 20615x18 � 1256850x17 C 53327946x16 � 1672280820x15CC40171771630x14 � 756111184500x13 C 11310276995381x12��135585182899530x11 C 1307535010540395x10 � 10142299865511450x9CC63030812099294896x8 � 311333643161390640x7CC1206647803780373360x6 � 3599979517947607200x5CC8037811822645051776x4 � 12870931245150988800x3CC13803759753640704000x2 � 8752948036761600000xCC2432902008176640000:

>> n = 20;>> syms x>> P20 = prod(x-(1:n))P20 =(x - 1)*(x - 2)*(x - 3)*(x - 4)*(x - 5)*(x - 6)*(x - 7)*(x - 8)*(x - 9)*(x - 10)*(x - 11)*(x - 12)*(x - 13)*(x - 14)*(x - 15)*(x - 16)*(x - 17)*(x - 18)*(x - 19)*(x - 20)>> P = expand(P20)P =x^20 - 210*x^19 + 20615*x^18 - 1256850*x^17 + 53327946*x^16 - 1672280820*x^15 +40171771630*x^14 - 756111184500*x^13 + 11310276995381*x^12 - 135585182899530*x^11 +1307535010540395*x^10 - 10142299865511450*x^9 + 63030812099294896*x^8 -311333643161390640*x^7 + 1206647803780373360*x^6 - 3599979517947607200*x^5 +8037811822645051776*x^4 - 12870931245150988800*x^3 + 13803759753640704000*x^2 -8752948036761600000*x + 2432902008176640000

Page 83: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

83/117

� Veamos qué pasa.

function y=wilkpoly(x)% Evalua en x el polinomio de Wilkinsony=x^(20)-210*x^(19)+20615*x^(18)-1256850*x^(17)...+53327946*x^(16)-1672280820*x^(15)+40171771630*x^(14)...-756111184500*x^(13)+11310276995381*x^(12)...-135585182899530*x^(11)+1307535010540395*x^(10);y=y-10142299865511450*x^9+63030812099294896*x^8;y=y-311333643161390640*x^7+1206647803780373360*x^6;y=y-3599979517947607200*x^5+8037811822645051776*x^4;y=y-12870931245150988800*x^3+ 13803759753640704000*x^2;y=y-8752948036761600000*x+2432902008176640000;

end

>> fzero(@wilkpoly,16)ans =

16.014680305804578

%%

>> Z = sort(solve(P))’Z =[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

¿Sorprendente?

Page 84: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

84/117

Índice

� Introducción y Conceptos básicos

� Representación de un número en formato estándar IEEE

� Aritmética en un ordenador

� Evaluación de errores

� Cálculo numérico con matrices

� Producto de una matriz por un vector� Producto de dos matrices

� Normas

� Vectoriales�Matriciales

Page 85: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

85/117

Cálculo numérico con matrices

� Las operaciones de cálculo numérico con vectores y matrices:

� productos de vectores por matrices y de dos matrices,

� el cálculo de normas de vectores y matrices,

� la evaluación del condicionamiento de sistemas de ecuaciones lineales,

son fundamentales en los métodos y algoritmos que estudiamos y analizamos eneste curso.

Conocer cómo se llevan a cabo en un ordenador y optimizarlas es muy útil

Page 86: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

86/117

Producto de una matriz por un vector

� Comencemos por y D Ax, donde A 2 Rm�n y x 2 Rn.Cada coeficiente del vector y se obtiene mediate esta fórmula:

yi Dn

i

jD1

aij � xj :

� Esta operación se puede interpretar como:

� Combinar linealmente los vectores columna de A;

� Una serie de productos interiores de los vectores fila de A por x.

Page 87: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

87/117

� En forma de algoritmo, esta operación se estructuraría así:

� Producto y D AxHacer y D 0for i D 1 to m

for j D 1 to ny.i/ D y.i/C a.i; j /x.j /

endend

� Para ser factible, las dimensiones deben cumplir que

Œm � n�̃A

� Œn � 1�̃x

D Œm � 1�̃y

:

Page 88: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

88/117

� En la zona de trabajo o pizarra de MATLAB se haría así:

>> y=A*x

� Programando el algoritmo anterior con las instrucciones que permiteMATLAB se obtendría algo así:

[m n]=size(A);y=zeros(m,1);for i=1:m

for j=1:ny(i)=y(i)+A(i,j)*x(j);

endend

� En este script (o “guión”) a seguir, el bucle con el índice j materializa elproducto interior de la fila i de A por el vector x.

Page 89: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

89/117

� También se podría hacer algo un poco más sofisticado como lo que sigue.

function y = MatVecF(A,x)[m n] = size(A);y = zeros(m,1);for i=1:m

y(i) = A(i,:)*x;end

end

Éste sería el algoritmo programado en su versión por filas: una sucesión deproductos interiores: los vectores fila de A, A(i,:), por el vector x.

Page 90: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

90/117

� El algoritmo por columnas materializa que la operación Ax es equivalente aefectuar una combinación lineal de los vectores columna de A. Por ejemplo,

y D Ax D241 23 45 6

35�7

8

�D241 � 7C 2 � 83 � 7C 4 � 85 � 7C 6 � 8

35

D 724135

35C 8

24246

35 D

24235383

35 :

� Codificado para MATLAB:

function y = MatVecC(A,x)[m n] = size(A);y = zeros(m,1);for j=1:n

y = y + A(:,j)*x(j);end

end

Page 91: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

91/117

� La operación Ax conlleva realizar O.mn/ multiplicaciones e igual número desumas/restas.

� El que consuma más o menos tiempo de ordenador dependerá de cómo se realizala operación y la forma de almacenar en la memoria del ordenador la matriz A.

� Si la matriz se guarda por columnas (lo habitual por defecto), la operaciónen su forma por columnas requerirá menos tiempo que la versión por filas,pues los coeficientes a los que se accede están contiguos en la memoria y sepueden conseguir de una sola vez: una ristra de ellos: row, o renglón.

Page 92: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

92/117

� Para realizar la operación yT D xTA, en vez de y D Ax, los programasanteriores se convertirían en los que siguen.

function y=VecMatF(x,A)[m n] = size(A);y = zeros(1,n);for j=1:m

y = y+x(j)*A(j,:);end

end

function y=VecMatC(x,A)[m n] = size(A);y = zeros(1,n);for j=1:n

y(j) = y(j)+x*A(:,j);end

end

Page 93: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

93/117

Producto de dos matrices

� Si A 2 Rm�r y B 2 Rr�n son dos matrices, su producto, C 2 Rm�n D AB,se calcula mediante esta fórmula:

cij Dr

i

kD1

aik � bkj ;

para todo 1 � i � m y 1 � j � n. El algoritmo es el que sigue.

� Producto C D AB

Hacer C D 0

for j D 1 to nfor i D 1 to m

for k D 1 to rc.i; j / D c.i; j /C a.i; k/ � b.k; j /

endend

end

Page 94: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

94/117

� Cada coeficiente cij , es el resultado de un producto interior:

Inner Product (Row) View of Matrix–MatrixProduct

The product AB produces a matrix C. The cij element is the

inner product of row i of A and column j of B.

AB = C ⇐⇒ cij = a′(i)b(j)

a′(i) is a row vector, b(j) is a column vector.

ji

=cij

r

ji

b( j ) cija'(i )

The inner product view of the matrix–matrix product is easier to

use for hand calculations.

NMM: A Review of Linear Algebra page 45

� En MATLAB:

function C = MatMatInt(A,B)[m r] = size(A);[r n] = size(B);C = zeros(m,n);for j=1:n

for i=1:mC(i,j) = A(i,:)*B(:,j);

endend

end

Page 95: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

95/117

� Ahora bien, cada columna j de la matriz C es el resultado de multiplicar lamatriz A por el vector columna j -ésimo de B.

Column View of Matrix–Matrix Product

The product AB produces a matrix C. The columns of C are

linear combinations of the columns of A.

AB = C ⇐⇒ c(j) = Ab(j)

c(j) and b(j) are column vectors.

ji

=

A b( j ) c( j )

j

r

The column view of the matrix–matrix product AB = C is

helpful because it shows the relationship between the columns of

A and the columns of C.

NMM: A Review of Linear Algebra page 44

� En MATLAB:

function C = MatMatVec(A,B)[m r] = size(A);[r n] = size(B);C = zeros(m,n);for j=1:n

C(:,j) = A*B(:,j);end

end

Page 96: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

96/117� Por último, la matriz C también se puede ver como el resultado de sumar rmatrices de rango uno, cada una resultado del producto exterior de dos vectores.

� Recordemos que el producto exterior de u y v es

uvT D

2664u1u2:::um

3775 Œv1v2 � � � vn� D

2664u1v1 u1v2 � � � u1vnu2v1 u2v2 � � � u2vn:::

:::: : :

:::umv1 umv2 � � � umvn

3775 :

� Según esto,

C D AB Dr

i

kD1

A.W; k/B.k; W/:

� En MATLAB:

function C = MatMatExte(A,B)[m r] = size(A);[r n] = size(B);C = zeros(m,n);for k=1:r

C = C + A(:,k)*B(k,:);end

end

Page 97: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

97/117

� Todos estos métodos realizan O.mnr/ multiplicaciones e igual número desumas/restas.

� El procedimiento más adecuado para programarlo en ordenador dependerá decómo se almacenan en él las matrices.

� El más eficaz suele ser el que denominábamos MatMatVec. Luego lo veremoscon un ejemplo.

Page 98: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

98/117Fórmula de Strassen para multiplicar matrices

� Desarrollada en 1969 por Volker Strassen, Alemania, 1936-. Se usa paramultiplicar dos matrices A y B cuadradas de dimensión 2p.

� Se basa en una reordenación inteligente de los cálculos convencionales.

� Si A y B son bloques 2 � 2, el producto es�C11 C12

C21 C22

�D�A11 A12

A21 A22

� �B11 B12

B21 B22

D�A11B11 CA12B21 A11B12 CA12B22

A21B11 CA22B21 A21B12 CA22B22

�:

Esta operación necesita 8 multiplicaciones y 4 sumas en su forma tradicional.

Page 99: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

99/117

� Strassen reagrupa las operaciones de tal manera que sólo se necesiten 7multiplicaciones y 18 sumas. Haciendo

P1 D .A11 CA22/.B11 CB22/

P2 D .A21 CA22/B11

P3 DA11.B12 �B22/

P4 DA22.B21 �B11/

P5 D .A11 CA12/B22

P6 D .A21 �A11/.B11 CB12/

P7 D .A12 �A22/.B21 CB22/ y luego

C11 D P1 CP4 �P5 CP7

C12 D P3 CP5

C21 D P2 CP4

C22 D P1 CP3 �P2 CP6:

Page 100: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

100/117

� Generalizando, si las 7 multiplicaciones son de matrices m �m, como lassubmatrices son m=2 �m=2, se requieren

7

8m3 multiplicacionesC

�7

8m2.m � 2/C 9

2m2

�sumas:

� La operación “natural” requeriría m3 multiplicaciones y m2.m � 1/ sumas.

� Para un dimensión m suficientemente grande el procedimiento de Strassenreduce las operaciones por un factor de alrededor de 7/8.

Page 101: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

101/117

� Si se aplica recursivamente la idea y se van dividiendo las submatrices en cuatrobloques, cada unos de estos en otros cuatro y así sucesivamente, elprocedimiento mejorará sustancialmente el número total de operaciones que hayque efectuar.

� El orden de las matrices de menor tamaño al que se puede aplicar esta idea esnmin D 16, pues con bloques más reducidos el número de operaciones que serealiza es mayor que el ordinario.

Page 102: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

102/117

� En MATLAB, para matrices n � n, con n D 2p.

function C = strass(A,B)% Calcula C=AxB mediante la fórmula de Strassen% A,B matrices n x n; n potencia de 2.%

n = length(A);if n-2^(log2(n))~=0, error(’n no es pot. de 2’); endif n <= 16

C = A*B;else

m = n/2; u = 1:m; v = m+1:n;P1 = strass(A(u,u)+A(v,v),B(u,u)+B(v,v));P2 = strass(A(v,u)+A(v,v),B(u,u));P3 = strass(A(u,u),B(u,v)-B(v,v));P4 = strass(A(v,v),B(v,u)-B(u,u));P5 = strass(A(u,u)+A(u,v),B(v,v));P6 = strass(A(v,u)-A(u,u),B(u,u) + B(u,v));P7 = strass(A(u,v)-A(v,v),B(v,u)+B(v,v));

C = [P1+P4-P5+P7 P3+P5; P2+P4 P1+P3-P2+P6];end

end

Page 103: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

103/117

� Ejemplo Para tiempos de cálculo, ejecutamos el programa TiemposAxB:

>> TiemposAxB(256)Error en Int: 7.105427e-014Error en Exte: 1.705303e-013Error en Vec: 1.705303e-013Error en Strass: 7.531753e-013Tiempos: Int: 0.374; Exte: 0.827; Vec: 0.016; Strass: 0.109; MATLAB: 0.000>> TiemposAxB(512)Error en Int: 1.136868e-013Error en Exte: 3.694822e-013Error en Vec: 3.694822e-013Error en Strass: 3.041123e-012Tiempos: Int: 1.607; Exte: 2.730; Vec: 0.172; Strass: 0.640; MATLAB: 0.062>> TiemposAxB(1024)Error en Int: 3.410605e-13Error en Exte: 1.108447e-12Error en Vec: 1.108447e-12Error en Strass: 1.642775e-11Tiempos: Int: 10.516; Exte: 17.906; Vec: 0.625; Strass: 2.891; MATLAB: 0.188>> TiemposAxB(2048)Error en Int: 5.684342e-13Error en Exte: 3.069545e-12Error en Vec: 3.069545e-12Error en Strass: 7.560175e-11Tiempos: Int: 90.000; Exte: 170.953; Vec: 12.938; Strass: 17.234; MATLAB: 0.750>> TiemposAxB(4096)Error en Int: 9.094947e-13Error en Exte: 8.867573e-12Error en Vec: 8.867573e-12Error en Strass: 3.319656e-10Tiempos: Int: 4537.313; Exte: 970.969; Vec: 108.250; Strass: 78.938; MATLAB: 5.609

� Al doblar el tamaño, los tiempos se multiplican � por 23.

Page 104: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

104/117

Índice

� Introducción y Conceptos básicos

� Representación de un número en formato estándar IEEE

� Aritmética en un ordenador

� Evaluación de errores

� Cálculo numérico con matrices

� Producto de una matriz por un vector� Producto de dos matrices

� Normas

� Vectoriales�Matriciales

Page 105: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

105/117

NormasVectoriales

� Si en un espacio vectorial E sobre el cuerpo K (R o C ) se define una normavectorial como una aplicación k � k W E ! R que verifica

1) kvk D 0 H) v D 0 y x ¤ 0 H) kxk > 0;2) k˛vk D j˛jkvk para ˛ 2 K y v 2 E;3) kuC vk � kuk C kvk 8u; v 2 E;

se dice que E es un espacio vectorial normado.

Page 106: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

106/117

� La condición kuC vk � kuk C kvk se conoce como regla del triángulo.

3.1 Espacios normados

Si en un espacio vectorial E sobre K (R o C) se define una norma vectorial como una aplicaciónk � k W E ! R que verifica

kvk D 0 H) v D 0 y x ¤ 0 H) kxk > 0;k˛vk D j˛jkvk para ˛ 2 K y v 2 E;kuC vk � kuk C kvk 8u; v 2 E;

se dice que E es un espacio vectorial normado.La condición kuCvk � kukCkvk es la desigualdad de Minkowski; se conoce también como regla

del triángulo. Es una generalización del hecho de que un lado de un triángulo no puede ser mayor quela suma de los otros dos: ver figura. Una variante de esta regla es la siguiente:

ku � vk � kuk � kvk:

uC v

u

v

Figura 3.1: Representación gráfica de la regla del triángulo

En el espacio vectorial Kn, para 1 � p <1, se tiene la familia de normas

kxkp D�jx1jp C � � � C jxnjp

�1=p;

denominadas normas p de Hölder. Casos particulares lo constituyen las correspondientes a p D 1 yp D 2:

kxk1 DnXiD1jxi j

kxk2 Dpjx1j2 C � � � C jxnj2 :

Esta última se denomina en Rn norma euclídea. También en Kn es una norma la dada por

kxk1 D mKax1�i�n

jxi j :

Estas normas cumplen, cualquiera que sea x 2 Kn, que

kxk1 � kxk2 � kxk1 � nkxk1 :

Si la bola cerrada unidad en R2 es el conjunto fx 2 R2 W kxk � 1g, sus formas para las normasvectoriales 1, 2,1, y p son las que representa la figura 3.2.

7

Es una generalización del hecho de que la longitud de un lado de un triángulono puede ser mayor que la suma de las de los otros dos.

� Una variante útil es esta:

ku � vk � kuk � kvk:

Page 107: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

107/117� En el espacio vectorial Kn, para 1 � p <1, se tiene la familia de normas

kxkp D�jx1jp C � � � C jxnjp

�1=p;

denominadas normas p de Hölder, o normas lp. Su formulación se debe a OttoHölder, Alemania, 1859-1937.

� Casos particulares muy utilizados corresponden a p D 1, p D 2 y p D1:

kxk1 DnXiD1jxi j

kxk1 DmKax1�i�n jxi jkxk2 D

qjx1j2 C � � � C jxnj2 (norma euclídea en Rn)

Cumplen, cualquiera que sea x 2 Kn, que kxk1 � kxk2 � kxk1 � nkxk1.

Page 108: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

108/117� Si el conjunto fx 2 R2 W kxk � 1g es el círculo unidad en R2, sus formaspara las normas vectoriales 1, 2, 1 y p son estas:

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

28/63

– Si el conjunto fx 2 R2 W kxk � 1g es la bola cerrada unidad enR2, su forma para las normas vectoriales 1, 2, 1, y p son estas.

‖x‖1 =2∑

i=1

|xi|

‖x‖2 =√|x1|2 + |x2|2 =

√xTx

‖x‖∞ = max1≤i≤2

|xi|

‖x‖p =[|x1|p + |x2|p

]1/p, (1 ≤ p < ∞)

kxk1 D2

i

iD1jxi j

kxk2 Dqjx1j2C jx2j2 D

qxTx

kxk1 D mKax1�i�2

jxi j

kxkp D Œjx1jp C jx2jp�1=p ; .1 � p <1/

D 1

D 1

D 1

D 1

Page 109: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

109/117

� En el espacio C Œ0; 1� de funciones continuas del intervalo Œ0; 1� en C , sonnormas

kf kp D"Z 1

0

jf .t/jp dt#1=p

ykf k1 D mKax

t2Œ0;1�jf .t/j :

� En un espacio vectorial normado se define la distancia entre dos elementos u yv mediante

d.u; v/ D ku � vk :

� Esta definición convierte a cualquier espacio vectorial normado en unespacio métrico.

Page 110: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

110/117

� En un espacio euclídeo n-dimensional, expresado Rn o En (espacio de Hilbertde dimensión finita), el ángulo entre dos vectores cualesquiera x e y es

� D arc cos�

xTy

kxkkyk�;

donde

� D xTy

kxkkyk; �1 � � � 1:

� Si los vectores son ortogonales: xTy D 0; � D �=2; � D 0.� Vectores alineados: xTy D kxkkyk; � D 0; � D 1� Vectores opuestos: xTy D �kxkkyk; � D �; � D �1.� Si forman un ángulo agudo: xTy > 0; � < �=2; � > 0.

� Ángulo obtuso: xTy < 0; � > �=2; � < 0.

Page 111: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

111/117Normas matriciales

� Se define sobre Rm�n como una aplicación k � k W Rm�n! R que cumple:

1) kAk D 0 H) A D 0

2) k�Ak D j�j � kAk3) kA CBk � kAk C kBk4) kABk � kAk � kBk

� Existen normas sobre el espacio Rm�n que no son normas matriciales pues nocumplen la propiedad 4. Así, si se define

kAk D mKax1�i;j�n

jaij j ;

se satisfacen 1), 2) y 3); sin embargo, tomando A D B Dh1

1

1

1

i, es fácil ver

que kABk D � 2 22 2 � D 2 > kAk � kBk D 1, por lo que no se cumple 4).

Page 112: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

112/117

Definición Una norma matricial k � k sobre Rm�n se dice consistente con unanorma vectorial k � k0 sobre Rn cuando para cada matriz A y cada vector x se cumple que

kAxk0 � kAk � kxk0:

� Se demuestra que para toda norma matricial es posible construir una normavectorial consistente. Recíprocamente, a toda norma vectorial sobre Rn se lepuede asociar una norma matricial consistente.

� Una norma matricial es una norma vectorial compatible con el producto.

Page 113: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

113/117

� Una norma matricial consistente con una cierta norma vectorial k � k seconstruye mediante la definición

kAk D sup0¤x2Rn

kAxkkxk :

� Esta norma matricial se dice inducida por la norma vectorial.

� La norma matricial inducida por la norma euclídea de Rn es la normaespectral, norma euclídea o norma 2:

kAk2 D sup0¤x2Rn

�xTATAx

xTx

�1=2Dq�max.A

TA/ D �max.A/

donde � designa un valor propio de A y � un valor singular.

Page 114: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

114/117

� Las normas matriciales inducidas más generales son

kAk1 D mKax1�j�n

mXiD1jaij j (columnas) y

kAk1 D mKax1�i�m

nXjD1jaij j (filas) :

� Si k � k es la norma inducida por una cierta norma vectorial y k � k0 es una normamatricial cualquiera consistente con esa norma vectorial, se cumple, para todamatriz A, que kAk � kAk0.

Page 115: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

115/117

� Un ejemplo importante de norma matricial es la norma de Frobenius, porFerdinand Georg Frobenius, Alemania 1849-1917.

Se define comokAk2F D

X1�i;j�n

a2ij D traza�AHA

�;

donde la traza de una matriz A de orden n esPn

iD1 ai i .

� La norma de Frobenius cumple que

kABkF � kAkF � kBkF :� La norma espectral y la norma de Frobenius cumplen que

kAk2 � kAkF :

Page 116: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

116/117� Ejemplo El efecto que produce aplicar la transformación lineal basada en lamatriz

A D�1 2

0 2

al círculo unidad, con las normas k � k1, k � k2 y k � k1 en R2, es este.

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

39/63

[0, 1]T

[1, 0]T

[1, 0]T

[2, 2]T

norma ∞

norma 2

norma 1

‖A‖2 ≈ 2,9208

‖A‖∞ = 3

‖A‖1 = 4

norma 1

norma 2

norma 1

– La aplicación transforma el vector e1 D Œ1; 0�T en sí mismo ye2 D Œ0; 1�T en Œ2; 2�T .

� La aplicación transforma el vector e1 D�10

�en sí mismo; e2 D

�01

�en�22

�.

Page 117: Fundamentos de la ingeniería matemática y sus algoritmos

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

117/117

� Tomando la norma 1, el vector unitario que más se amplifica al aplicarle latransformación es

�01

�(o�

0�1�), que pasa a ser

�22

�. Su factor de amplificación,

en términos de la norma 1, es 4.

� Tomando la norma 2, el vector unitario que más se amplifica es el que serepresenta en la figura con una recta discontinua. El factor de amplificación es2;9208.

� Para la norma 1, igualmente, el vector unitario que más se amplifica es el quese representa también con la recta discontinua:

�11

�, que pasa a transformarse

en�32

�. El factor de amplificación correspondiente es en este caso 3 ya que

� 11

� 1 D 1 � 3

2

� 1 D 3: