Análisis Numérico para Ingeniería Clase Nro. 1 Integrantes de la Cátedra Francisco A. Lizarralde - Profesor Adjunto Carla Mana - J.T.P. Francisco Alvarez - J.T.P. Ezequiel Ayarzábal - Ayte. Graduado Lucas Sánchez Fellay - Ayte. Graduado Belén Posadas - Ayte. Alumno Ignacio Hegoburu - Ayte. Alumno Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 2 Evaluación y Régimen de Promoción Se tomarán 2 (dos) exámenes parciales. Los exámenes parciales serán teórico-prácticos. En la parte práctica se evaluará la habilidad para resolver problemas concretos en computadora. Se deberá presentar un Trabajo Final Integrador por grupo de 3 integrantes. El trabajo final, al igual que los parciales, sólo serán válidos durante la correspondiente cursada. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 3 Por qué utilizar Software Libre ? Nuestra cátedra se encuentra fuertemente comprometida con el proceso de utilización, difusión y distribución de Software Libre, sobre todo en lo referente a las herramientas necesarias para la resolución de problemas en sus clases prácticas. Entre otras razones, porque tanto la copia como la distribución de Software Libre es totalmente legal. Los productos del Software Libre, no pertenecen a una empresa en particular, sino a toda una comunidad de desarrolladores y usuarios, en la que todos podemos participar. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 4 Qué significa Software Libre ? NOT FREE AS IN Un Software es Libre, si respeta las 4 Libertades Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 5 Sistemas Operativos Libres Existe una amplia variedad de Sistemas Operativos Libres GNU/Linux. (Se denominan Distribuciones) Si desean una instalación completa y sencilla, Ubuntu es una excelente opción, Si su computadora no es muy potente pueden optar por una distribución más liviana como Ubuntu MATE. Una vez instalado, le pueden cargar los programas que usamos en la asignatura, Geany, GFortran, GnuPlot, etc. Si no desean instalar nada, pueden usar la distribución SLAX. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 6 Sistema Operativo SLAX SLAX es un Sistema Operativo Libre, derivado de Slackware. Existen dos versiones, una Live-CD y otra USB, por lo que no requiere instalación. Tenemos una versión adaptada con todos los programas necesarios para el estudio de nuestra asignatura. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 7 Software para la asignatura GEANY * GFORTRAN * Entorno Integrado de Desarrollo Lenguaje FORTRAN (95/08) BLAS * y LAPACK * Librerías Especializadas GNUPLOT * Gráficos y Visualización de Datos (*) Software Libre. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 8 GEANY Ing. Francisco A. Lizarralde Integrated Development Environment Facultad de Ingeniería - UNMDP - 2016 9 GFORTRAN Compilador y Bibliotecas GFORTRAN Compilador FORTRAN GNU FORTRAN LAPACK Bibliotecas de Funciones Especializadas Linear Algebra Package BLAS Basic Linear Algebra Subprograms Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 10 GNUPLOT Ing. Francisco A. Lizarralde Visualización de Resultados Facultad de Ingeniería - UNMDP - 2016 11 Otras fuentes de información En la página de la asignatura http://www3.fi.mdp.edu.ar/analisis encontrarán enlaces con información sobre algunos temas, bibliografía y novedades sobre fechas y horarios de consultas, exámenes, etc. Existe una lista de correo electrónico a la que pueden suscribirse en http://www3.fi.mdp.edu.ar/analisis/lista/lista.htm Todas las consultas sobre temas de la asignatura se realizarán en esta lista, por lo que no se responderán por otro medio. Existe una página de FAQs. (Preguntas muy frecuentes) Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 12 Temas a tratar Introducción al Análisis Numérico. Errores Numéricos. Representación de Números en Punto Flotante. Errores en las Operaciones. Introducción a FORTRAN. Estructuras de Decisión y Repetición. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 13 Cuál es el objetivo del Análisis Numérico ? El principal objeto de estudio del Análisis Numérico, consiste en el análisis del funcionamiento interno de los métodos numéricos, con el objetivo de saber elegir el más adecuado para resolver cada problema en particular, y así lograr una solución con la exactitud requerida. Los métodos numéricos nos permiten abordar aquellos problemas que son extremadamente complicados, cuando no imposibles de resolver en forma analítica. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 14 Que se estudia en Análisis Numérico ? En el Análisis Numérico es muy importante el estudio de los errores, ya sean estos, de modelado, de representación, ó inherentes a los métodos aplicados. La elección del algoritmo y del modelo matemático tienen gran influencia en el proceso de cálculo y el modo en que debemos interpretar los resultados obtenidos. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 15 Qué es un Error de Modelado ? Plataforma petrolífera Sleipner A Modelado de Elementos Finitos de los tanques de flotación Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 16 Qué es un Error de Modelado ? El 23 de agosto de 1991, la plataforma petrolífera Sleipner A propiedad de la empresa noruega Statoil, que se encontraba situada en el mar del Norte a 82 metros de profundidad, se hundió. La causa del error fue un modelado numérico de elementos finitos incorrecto de la plataforma. Esto produjo una fuga de agua en una de las paredes de uno de los 24 tanques de aire de 12 metros de diámetro que permitía la flotación de la plataforma de 57000 toneladas de peso, que además, soportaba a más de 200 personas y el equipamiento de extracción con un peso adicional de unas 40000 toneladas. Las bombas de extracción de agua no fueron capaces de evacuar toda el agua. La falla representó un costo total de 700 millones de euros. Para el modelado de los tanques de la plataforma se utilizó el programa de elementos finitos NASTRAN y una aproximación mediante un modelo elástico lineal. Esta aproximación no era correcta, lo que produjo una subestimación de un 47% de los esfuerzos que debían soportar las paredes de los tanques. Por esta razón, ciertas paredes fueron diseñadas con un grosor insuficiente. Un análisis posterior al accidente, utilizando un modelado numérico correcto, demostró que el diseño de la plataforma provocaría fugas en algunos de los tanques cuando ésta estuviese sobre agua, a 62 metros de profundidad. La fuga real se produjo cuando la plataforma estaba sobre agua, a 65 metros de profundidad, lo cual explica perfectamente la causa de la falla. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 17 Aplicación del Modelado Numérico El 12 de junio de 2000 se cerró el paso de personas por el famoso puente Millenium Bridge) en Londres, sólo dos días después de su inauguración. El Millenium Bridge es un puente de acero de 325 m. construido para permitir el paso de peatones sobre el río Támesis. La causa de la clausura: Una vibración lateral mucho mayor que la esperado debido a un fenómeno denominado excitación lateral síncrona. Luego de realizar un modelado numérico y experimentar con diversos escenarios, se ensayaron diferentes soluciones hasta determinar la más adecuada para corregir el problema. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 18 Diferencia entre Precisión y Exactitud Precisión Un valor es preciso cuando su dispersión con respecto a otros valores similares que representan dicho valor es baja. Exactitud Un valor es exacto cuando su diferencia con el valor teórico es prácticamente nula. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 19 Diferencia entre Precisión y Exactitud Preciso y Exacto Preciso pero no Exacto Exacto pero no Preciso Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 Ni Preciso ni Exacto 20 Tipos de Error Error de representación numérica. Error de redondeo o truncamiento. Error de formulación del Modelo Matemático. Error inherente al algoritmo. Error de las operaciones. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 21 Error Absoluto Dado un número exacto x y un número aproximado X, el cual difiere ligeramente de x, llamamos error absoluto Δ(X) a: Cota Cotade deError ErrorAbsoluto Absoluto X =∣x− X∣≤ X Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 22 Error Relativo El error relativo de un número aproximado X, es la relación entre el error absoluto Δ(X) del número y el valor absoluto del número “exacto” x , para x ≠ 0. El error relativo permite independizar el error, de la magnitud de los valores. Cota Cotade deError ErrorRelativo Relativo ∣x− X∣ δ ( X )= ≤δ X ∣x∣ Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 23 Truncamiento Truncar un número decimal x en el dígito correspondiente a 10(-d) de su representación decimal consiste en reemplazar todos los dígitos a la derecha de ese dígito, por ceros. π=3,14159265358979323846... Valor truncado en el 7mo. decimal T7 =3,1415926 Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 24 Redondeo Redondear un número x>0 en el dígito 10(-d) consiste en truncar el valor ( x + 0.5 10(-d) ). Si x<0 al redondear quedará como -|x| redondeado. =3,14159265358979323846... Valor redondeado en el 7mo. decimal R7 =3,1415927 Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 25 Cifras Significativas El dígito más significativo de un número real x no nulo, es el dígito no nulo más a la izquierda de su expansión decimal. Todos los dígitos, incluyendo los ceros a la derecha del dígito más significativo, son significativos y el último desplegado se llama dígito menos significativo. Los ceros a la izquierda del dígito más significativo, no son significativos. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 26 Ejemplo de Cifras Significativas Dígito menos significativo Dígito más significativo 0,00724100 Cifras no significativas Ing. Francisco A. Lizarralde Cifras significativas Facultad de Ingeniería - UNMDP - 2016 27 Dígitos Significativos Exactos Definición: Si X es un valor aproximado de un valor exacto x, se dice que X aproxima a x hasta el k-ésimo dígito significativo, si: −k ∣X− x∣ < 5⋅10 ⋅∣x∣ También se dice que X posee k dígitos significativos exactos. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 28 Dígitos Significativos Exactos La exactitud de los dígitos significativos puede expresarse en función de su error relativo. ∣X− x∣ −k < 5⋅10 ∣x∣ O escrito de otra forma: −k δ (x) < 5⋅10 Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 29 Dígitos Significativos Exactos Ejemplo: ¿Cuántos dígitos significativos exactos tiene el nro. aproximado 2.7183 con respecto al valor exacto 2.71828182845904 ? ∣2,71828182845904−2,7183∣ −6 δ (x)= =6,7536⋅10 2,71828182845904 Por lo tanto, podemos ver que : −6 δ (x) = 6,7536⋅10 Ing. Francisco A. Lizarralde −5 < 5⋅10 Facultad de Ingeniería - UNMDP - 2016 30 Error de Representación No siempre es posible almacenar en una computadora los valores exactos. La representación aproximada de los valores exactos se suele denominar números de máquina. La diferencia entre el valor exacto y su representación se denomina error inherente a la representación, ó simplemente error de representación. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 31 Error de Representación Representación de los Números Reales ­∞ +∞ 0 Representación Numérica en Computadora Mínimo Negativo Mínimo Positivo 0 Máximo Negativo Ing. Francisco A. Lizarralde Valores Representados Facultad de Ingeniería - UNMDP - 2016 Máximo Positivo 32 Error de Representación Una variable de tipo REAL de 4 bytes (32 bits), posee los siguientes rangos: Máximo Positivo: 3.4028235E+38 Máximo Negativo: -3.4028235E+38 Mínimo Positivo: Mínimo Negativo: Ing. Francisco A. Lizarralde 1.1754944E-38 -1.1754944E-38 Facultad de Ingeniería - UNMDP - 2016 33 Representación Numérica Los números reales se almacenan en la computadora en forma binaria, como números de punto flotante. ( Signo, Mantisa y Exponente ) Actualmente la mayoría de las computadoras representa los valores numéricos de acuerdo a la definición del IEEE-754 Floating Point Numbers Standard. Un número real de simple precisión ocupa 32 bits, mientras que uno de doble precisión ocupa 64 bits de memoria. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 34 Números en Punto Flotante Un número de máquina consta de 3 partes: SIGNO EXPONENTE MANTISA SIGNO EXPONENTE Ing. Francisco A. Lizarralde MANTISA Facultad de Ingeniería - UNMDP - 2016 35 Conversión de Decimal a Binario Conversión de un número decimal con |x| > 1 al sistema binario. Ejemplo: x = 23 23 2 1 11 2 1 5 2 1 2 2 0 1 (10111)2 = 1x24 + 0x23 + 1x22 + 1x21 + 1x20 = = 16 + 0 + 4 + 2 + 1 = (23)10 Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 36 Conversión de Decimal a Binario Conversión de un número decimal con |x| < 1 al sistema binario. Ejemplo: x = 0.125 0.125 x2 0.25 x2 0.5 x2 1.0 (0.001)2 = 0x2-1 + 0x2-2 + 1x2-3 = = 0 + 0 + 0.125 = (0.125)10 Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 37 Conversión de Decimal a Binario No siempre un nro. decimal exacto puede convertirse en un nro. binario exacto. Ejemplo: x = 0.1 0.1 x2 0.2 x2 0.4 x2 0.8 X2 1.6 Continúo con la parte fraccionaria Continúo con la parte fraccionaria 0.6 x2 1.2 (0.1)10 = (0.000110011001100......)2 Ing. Francisco A. Lizarralde 0.2 x2 0.4 x2 0.8 x2 1.6 Número Binario Periódico Facultad de Ingeniería - UNMDP - 2016 38 Error de Representación Numérica El 25 de febrero de 1991, durante la guerra del Golfo, una batería de misiles Patriot norteamericanos en Dharan (Arabia Saudita) no logró interceptar un misil Scud iraquí. Como consecuencia murieron 28 soldados norteamericanos. La causa: La acumulación de errores numéricos relacionados con la representación numérica del tiempo transcurrido. Como la batería llevaba más de 100 horas en actividad, este error acumulado produjo una diferencia de 0.34seg, en la determinación del tiempo, lo que a la velocidad de 6000 km/h que viaja el misil representa una diferencia de medio kilómetro con respecto a la posición del objetivo. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 39 Representación Normalizada IEEE-754 Representación del valor 0.15625, según el IEEE-754 Floating Point Numbers Standard (−1) SIGNO ( EXPONENTE−127) ∗(1.MANTISA)2∗2 0 124−127 −1 ∗1.012∗2 −3 1∗1.2510∗2 SIGNO EXPONENTE Ing. Francisco A. Lizarralde 1.25 = =0.15625 8 MANTISA Facultad de Ingeniería - UNMDP - 2016 40 Representación Normalizada IEEE-754 Representación del valor -118.625, según el IEEE-754 Floating Point Numbers Standard −1 SIGNO EXPONENTE−127 ∗1.MANTISA 2∗2 1 −1 ∗1.1101101012∗2 133−127 6 −1∗1.85351562510∗2 =1.853515625∗64=−118,625 SIGNO EXPONENTE Ing. Francisco A. Lizarralde MANTISA Facultad de Ingeniería - UNMDP - 2016 41 Representación de ±∞ y NaN Ciertas operaciones pueden producir resultados particulares: Un valor ±∞ se representa con el máximo exponente y todos los bits de la mantisa iguales a cero. Un valor NaN (Not a Number) se representa con el máximo exponente y al menos un bit de la mantisa distinto de cero. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 42 NaN - Not a Number Existen tres casos de operaciones que generan NaN: Operaciones en las que al menos un operando es un NaN. Indeterminaciones Operaciones con números reales que dan como resultado un valor complejo. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 43 NaN - Indeterminaciones Las divisiones 0/0 y ±∞/±∞ Las multiplicaciones 0×±∞ y ±∞×0 Las sumas ∞ + (−∞), (−∞) + ∞ y las restas equivalentes. El standard, posee además funciones alternativas para el cálculo de potencias: La función pow standard y el exponente entero pown definen 00, 1∞, and ∞0 as 1. La función powr define a las tres formas indeterminadas anteriores como operaciones inválidas y por lo tanto retorna NaN. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 44 NaN - Operaciones con Reales Operaciones con Reales que dan como resultado un valor complejo: La raíz cuadrada de un número negativo. El logaritmo de un número negativo. La inversa del seno ó coseno de un número que es menor que −1 ó mayor que +1. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 45 Errores en Adiciones y Sustracciones Para sumar (o restar) números en punto flotante, se igualan los exponentes, se suman (o restan) las mantisas, y finalmente, se normaliza el resultado (se representa nuevamente como número en punto flotante). Si se suman dos números en punto flotante, cuyas magnitudes son muy diferentes, el menor de ellos, prácticamente no es tenido en cuenta. Si se restan dos números en punto flotante, cuyas magnitudes son muy similares, la representación del resultado es prácticamente cero. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 46 Error en la Adición Ejemplo: Sumar los números 17396 y 0,473 y expresar el resultado en el mismo formato. Para simplificar, utilizaremos un formato decimal, en punto flotante normalizado con mantisa de 5 dígitos. fl( x + y) = fl( x)+fl ( y)= 5 5 = 0.17396x10 + 0,00000473 x10 = 5 = 0.17396x10 Adición Insignificante Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 47 Error en la Sustracción Ejemplo: Restar los números 32,17197 y 32,17110 y expresar el resultado en el mismo formato. Para simplificar, utilizaremos un formato decimal, en punto flotante normalizado con mantisa de 5 dígitos. fl( x− y) = fl ( x)−fl( y)= 2 2 = 0.32171x10 − 0.32171x10 = 2 = 0.00000x10 = 0 Sustracción Catastrófica Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 48 Errores en la Multiplicación y el Cociente Para multiplicar (o dividir) números en punto flotante, se multiplican (o dividen) las mantisas, se suman (o restan ) los exponentes, y finalmente, se normaliza el resultado (se representa nuevamente como número en punto flotante). La multiplicación de un número por otro de gran magnitud produce una amplificación del error existente en el primero. El cociente de un número por otro muy pequeño también produce una amplificación del error. En ambos casos el error de representación aumenta considerablemente. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 49 Consideraciones sobre las Operaciones Cuando se realizan operaciones con números en punto flotante, es importante siempre tener en cuenta que: fl ( x) ≠ x fl ( x+ y) ≠ x+ y fl ( x− y) ≠ x− y fl ( x∗y) ≠ x∗ y fl ( x / y) ≠ x / y Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 50 Error producido al calcular una Función Se dice que el cálculo del valor de una función f(x) está bien condicionado (o es numéricamente estable), si la exactitud hallada en el valor calculado f(x) es aproximadamente igual a la de x. En caso contrario, se dice que el cálculo del valor de una función está mal condicionado, o bien que f(x) está mal condicionada. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 51 Nro. de Condición de una Función El error relativo de una función es proporcional al error relativo de la variable: ∣δ f ( X )∣≈C∗∣δ X∣ Siendo el Número de Condición C: ∣X∗f ' X ∣ C= ∣f X ∣ Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 52 Condicionamiento de una Función ¿Qué variación porcentual en f(x) = ex resultará de un cambio del 1% en x ? Para x = 0,1; x = 10 y x = -10 x ex 0,01x 0,1 1,1051709 0,001 1,1062766 0,0010005 0,10% 10 22026,466 0,1 24343,009 0,1051709 10,52% -10 4,54E-005 -0,1 4,11E-005 0,0951626 9,52% Ing. Francisco A. Lizarralde ex+0,01x Facultad de Ingeniería - UNMDP - 2016 δ(eX) % 53 Nro. de Condición de una Función Número de condición de ex (para x = 10): X ∣X⋅f ' ( X )∣ ∣10⋅e ∣ C= = =10 X ∣f ( X )∣ ∣e ∣ Por lo tanto: ∣δ f ( X )∣≈C⋅∣δ X∣=10⋅∣0.01∣=0.1≈10 % de X Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 54 Lenguaje FORTRAN FORTRAN es un lenguaje de programación de alto nivel de propósito general, procedural e imperativo, que está especialmente adaptado para el cálculo numérico y la computación científica. Su nombre hace referencia al Mathematical Formula Translating System, desarrollado originalmente por IBM en 1957 para el equipo IBM 704. Siendo ampliamente utilizado desde entonces, en aplicaciones científicas y de Ingeniería. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 55 John Backus John Backus (Filadelfia, 3 de diciembre de 1924 Oregón, 17 de marzo de 2007) dirigió el proyecto de IBM que dió origen al Lenguaje FORTRAN. En 1977 ganó el Turing Award por sus trabajos en sistemas de programación de alto nivel, en especial por su trabajo con FORTRAN. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 56 Por qué usar FORTRAN ? A diferencia de una aplicación como MATLAB™, MATHCAD™, MATHEMATICA™, etc., un lenguaje de programación como FORTRAN no depende de un solo fabricante, sino que existen muchas versiones disponibles. Posee una sintaxis muy similar a otros lenguajes conocidos como PASCAL o C, pero está especialmente diseñado para realizar cálculos numéricos intensivos con gran precisión. Existe una amplia variedad de bibliotecas de funciones que resuelven diversas problemáticas de Ingeniería. Está disponible en diversas plataformas (Sistemas Operativos), y se puede usar tanto en computadoras de escritorio como en Mainframes con procesamiento paralelo. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 57 Tipos de Datos en FORTRAN INTEGER REAL COMPLEX LOGICAL CHARACTER Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 58 INTEGER El tipo de datos INTEGER se utiliza para almacenar valores enteros. Su rango de valores posibles está determinado por la cantidad de bytes establecida. Un INTEGER de 4 bytes (32 bits) puede almacenar valores dentro del rango de: –2147483648 a 2147483647 Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 59 REAL El tipo de datos REAL se utiliza para almacenar valores reales. Un REAL de 4 bytes (32 bits) puede almacenar valores dentro del rango de: -3.4028235E+38 a -1.1754944E–38 y de 1.1754944E–38 a 3.4028235E+38 Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 60 LOGICAL El tipo de datos LOGICAL se utiliza para almacenar valores lógicos. Sólo pueden almacenarse dos posibles para realizar valores, .TRUE. y .FALSE. FORTRAN está preparado operaciones lógicas con este tipo de datos, utilizando operadores lógicos, .AND. , .OR. , .NOT., etc. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 61 COMPLEX El tipo de datos COMPLEX se utiliza para almacenar números complejos. El mismo consiste en un par ordenado de números reales. FORTRAN está preparado para realizar operaciones complejas con este tipo de datos en forma totalmente transparente para el programador. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 62 CHARACTER El tipo de datos CHARACTER se utiliza por lo general para almacenar letras ó palabras. Si no se especifica el tamaño asume que se trata de un sólo caracter. Para almacenar palabras ó frases es necesario especificar la cantidad de caracteres, para reservar el espacio de memoria necesario. Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 63 Operadores Intrínsecos Los operadores intrínsecos se utilizan para operar sobre los tipos de datos intrínsecos. ARITMETICOS: + - * / ** SUMA RESTA PRODUCTO DIVISIÓN POTENCIA RELACIONALES: .EQ. .NE. .GT. .GE. .LT. .LE. == /= > >= < <= Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 64 Estructura de un programa FORTRAN [ PROGRAM nombre del programa ] [ sección de especificación] [ sección ejecutable] [ sección de sub-programas internos] END [ PROGRAM programa ] ] Ing. Francisco A. Lizarralde [ Facultad de Ingeniería - UNMDP - 2016 nombre de 65 IF Ejemplo: IF (a < b ) THEN aux = a a=b b = aux END IF Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 67 IF ELSE Ejemplo: IF (leftCornerX < 0) THEN leftCornerX = 0 ELSE aux = leftCornerX leftCornerX = rightCornerX rightCornerX = aux END IF Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 68 IF ELSE IF Ejemplo: IF (kWatts < 50) THEN costo = 30 ELSE IF (kWatts < 100) THEN costo = 20+ 0.5*kWatts ELSE IF (kWatts < 150) THEN costo = 15+ 0.3*kWatts ELSE IF (kWatts < 200) THEN costo = 5+ 0.2*kWatts ELSE costo = 0.15*kWatts END IF Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 69 SELECT CASE Ejemplo: SELECT CASE (kWatts) CASE (:49) costo = 30 CASE (50:99) costo = 20 + 0.5*kWatts CASE (100:149) costo = 15 + 0.3*kWatts CASE (150:199) costo = 5 + 0.2*kWatts ELSE costo = 0.15*kWatts END SELECT Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 70 DO Ejemplo: DO fila=1, maxFilas, 2 Ejemplo: DO col=1, maxCols, 3 matriz(fila, col) = fila+2*col END DO END DO Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 71 DO WHILE Ejemplo: Ejemplo: DO WHILE (sigue /= 'n') WRITE (*, 'Desea continuar ?') READ(*,''), sigue END DO Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 72 CUESTIONES PARA INVESTIGAR... ¿Cuántos dígitos significativos exactos tiene el número aproximado 0.0027 con respecto al número exacto 0.00265 ? ¿ Cuál es el número más cercano a 1.0, que puede almacenarse en una variable REAL(8) ? ¿Por qué ? ¿ Qué significan estas sentencias en FORTRAN ? CEILING, CMPLX, CONJG, DBLE, DIGITS, EPSILON, FLOOR, HUGE, INT, PRECISION, REAL, SPACING, TINY. ¿ Por qué la representación de números en punto flotante normalizado es discreta ? Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 73 PREGUNTAS ... Ing. Francisco A. Lizarralde Facultad de Ingeniería - UNMDP - 2016 74