Introducción a las funciones intrínsecas de Fortrans Asignación: Lea el capítulo 4 y el ejemplo trig. f. Mucho antes de que hubieran calculadoras científicas, los científicos y los ingenieros se dieron cuenta de que necesitaban maneras fáciles de obtener resultados de funciones comunes como seno, coseno, logaritmo natural y muchos más. Estas necesidades han sido consideradas con cada estándar de Fortran, resultando en una larga lista de funciones incorporadas (funciones intrínsecas) para hacer su vida más fácil. No cubriremos todas las funciones en el estándar actual (Fortran 90), pero le daré algunas claves en este y en las discusiones posteriores. La sintaxis para el uso de funciones intrínsecas puede ser muy familiar para usted, porque también aparecen en hojas de cálculo. Si introdujo la magnitud de una velocidad en la casilla A1 y el ángulo entre la velocidad y el eje x (en radianes) en la casilla A2, entonces puedo calcular la componente x de la velocidad en la casilla A3 con la fórmula A1COS A2). En Fortran, este resultado puede obtenerse con una declaración de asignación como velxvelcos (angrad). Antes de seguir adelante, necesitamos una definición simple. En el ejemplo anterior angrad es un argumento de la función cos. Some Funciones Intrínsecas Básicas abs (x) - Valor absoluto de x iabs (I) - Valor absoluto de un entero I (pre-90 Fortran abs no gustaba de argumentos enteros.) Sin (X) - Devuelve el seno de x (x no es un entero) cos (x) - Devuelve el coseno de x (x no es un entero) tan (x) - Devuelve la tangente de x (x no es un entero) (X) - calcula e (2.7183.) A la potencia x (x no es un entero) log (x) - calcula el logaritmo natural de x (x no es un entero y gt 0) log10 (x) 10 logaritmo de x (x no es un entero y gt 0) asin (x) - Devuelve el arcoseno (seno inverso) de x (x es real) acos (x) - Devuelve el arccoseno (coseno inverso) de x (X) - Devuelve la raíz cuadrada de x (x no es un entero y gt 0) nint (x) - Devuelve la raíz cuadrada de x (x es real) Entero al número real x min (x1, x2.) - Devuelve el mínimo de x1, x2. (Los argumentos deben ser del mismo tipo) max (x1, x2.) - Devuelve el máximo de x1, x2. (Los argumentos deben ser del mismo tipo) Las funciones max y min son inusuales ya que toman cualquier número de argumentos. Las formas genéricas min y max no eran una parte obligatoria de la norma Fortran 77, pero están en Fortran 90. En muchos códigos de Fortran 77 verá funciones: amax1 (x1, x2.) - Devuelve el máximo de x1, x2. Como un número real (los argumentos son reales) amax0 (i1, i2.) - Devuelve el máximo de i1, i2. Como un número real (argumentos son enteros) max0 (i1, i2.) - Devuelve el máximo de i1, i2. Como un entero (los argumentos son enteros) max1 (x1, x2.) - Devuelve el máximo de x1, x2. Como un entero (los argumentos son reales) Formas similares aparecieron para min. Además, log y log10 eran formas opcionales en Fortran 77. Los programas más antiguos usan a menudo alog y alog10 para iniciar el nombre de la función con una letra característica de un valor real en lugar de un valor entero. En general, Fortran 77 era más dependiente de que escogiera específicamente una función apropiada para los tipos de argumentos y el tipo de valor que se devolvería. Mientras que en el tema de Fortran 90 funciones intrínsecas, vale la pena señalar dos que ha visto en el ejemplo ranges. f. Y una función relacionada, que son útiles en programas que se ejecutan en una gama de máquinas. (X) - Devuelve el número positivo más grande que se puede representar en el equipo actual para el argumento real x x (-) La precisión aproximada decimal disponible en el equipo actual para el argumento real x Algunos comentarios sobre la velocidad Es necesario darse cuenta de que las funciones intrínsecas trigonométricas, log y exp son relativamente caras en términos de tiempo de computadora requerido. Si necesita el valor de sin (0.1) con frecuencia, utilice la función una vez en una asignación como: sin0p1 sin (0.1) y luego use la nueva variable sin0p1 dondequiera que sea necesario (0,1). El alto costo de exp y log también se refleja En el uso del operador. Por lo general, una expresión como xy da como resultado que el compilador inserte código equivalente a exp (ylog (x)). Sin embargo, la mayoría de los compiladores son lo suficientemente inteligentes como para darse cuenta de que si y es un entero, pueden usar una o más multiplicaciones (x2xx, x3xxx, etc.). Dichos compiladores contienen la lógica para conocer el punto de equilibrio, en términos de tamaño de y, entre dicha multiplicación y la combinación de exp y log. Siempre es más rápido programar x2 que x2.0, así que tenga cuidado en su elección de tipos para exponentes. La velocidad también es un factor en la existencia de la función intrínseca sqrt. Este es un algoritmo especial para calcular la raíz cuadrada de un número, que es siempre más rápido que elevar el número a la potencia 0.5. Cuando existe la opción use sqrt (x) en lugar de x0.5. En mi experiencia sqrt (sqrt (x)) es más rápido que x0.25. Mientras estamos en el tema de la velocidad, deberíamos revisar la velocidad relativa de otras operaciones. Sumar y restar son siempre los más rápidos. Multiplicar viene en segundo lugar. Divide es más lento que multiplicar, pero significativamente más rápido que sqrt. Si se va a dividir por una variable x con frecuencia (más de 2 o 3 veces), es una buena idea definir otra variable, diga rx con la ecuación rx1./x, luego multiplique por rx donde se dividiría por x . Un programa de ejemplo que utiliza funciones intrínsecas Estudie el programa de ejemplo trig. f para ver ejemplos de funciones intrínsecas y como un comienzo útil para su tarea más reciente. Preguntas de revisión Pruebe su conocimiento de este material con algunas preguntas de revisión. Subir un nivel / InicioCategoría: Fortran A continuación se enumeran todas las tareas en código Rosetta que se han resuelto con Fortran. Su ayuda necesaria Si conoce Fortran. Escriba código para algunas de las tareas no implementadas en Fortran. Fortran es el lenguaje de programación más antiguo que todavía está en uso generalizado. El lenguaje ha evolucionado considerablemente desde que fue lanzado por primera vez en 1957. Fortran fue desarrollado originalmente para aplicaciones científicas y de ingeniería, y sigue siendo especialmente adecuado para computación numérica y computación científica. Por convención, las versiones anteriores al Fortran 90 se deletrean con todas las letras mayúsculas (por ejemplo, FORTRAN 66, FORTRAN 77), mientras que comenzando con Fortran 90, se usa la escritura de casos mixta (es decir, Fortran 90, Fortran 95, Fortran 2003 y Fortran 2008). La norma más reciente es Fortran 2008 (ISO / IEC 1539-1: 2010). FORTRAN 77, siendo bastante viejo, carece de casi todo lo que uno espera de un lenguaje de programación moderno. Utiliza una línea de longitud fija y un formato de línea orientado a columnas que fue motivado por tarjetas perforadas. Debido a su antigüedad, y dado que los compiladores de FORTRAN generalmente daban un rendimiento muy bueno para el código numérico, una gran cantidad de código, especialmente el código científico, fue escrito en FORTRAN. Además, durante bastante tiempo no hubo compilador gratuito de Fortran 90, que también causó que un montón de código FORTRAN 77 se escribiera incluso bastante tiempo después de que el Fortran 90 fuera estandarizado. Debido a la gran cantidad de código escrito en FORTRAN 77 sigue siendo relevante hoy en día. De hecho, todos los compiladores Fortran modernos todavía acepta código FORTRAN 77. Fortran 90 fue una revisión importante del lenguaje. Se introdujo un nuevo formato de código fuente de forma libre, características de lenguaje de programación modernas como módulos, punteros y tipos definidos por el usuario, un sistema de tipo mejorado para tipos integrados y manejo de array incorporado superior. Los nuevos estándares de Fortran (Fortran 2003 y Fortran 2008) agregaron otras características modernas, como el soporte para la programación orientada a objetos. herencia. polimorfismo. procesamiento en paralelo. Y la interoperabilidad con el lenguaje de programación C. Subcategorías Esta categoría incluye las siguientes 3 subcategorías, de un total de 3. Promedio / Promedio móvil simple Promedios / Promedio móvil simple Le recomendamos que solucione esta tarea de acuerdo con la descripción de la tarea, utilizando cualquier idioma que conozca. Calculando el promedio móvil simple de una serie de números. Crear una función / clase / instancia con estado que toma un punto y devuelve una rutina que toma un número como argumento y devuelve una media móvil simple de sus argumentos hasta ahora. Un promedio móvil simple es un método para calcular un promedio de una corriente de números haciendo sólo el promedio de los últimos 160 P 160 números de la corriente 160, donde 160 P 160 se conoce como el período. Se puede implementar llamando a una rutina de iniciación con 160 P 160 como su argumento, 160 I (P), 160 que debe devolver una rutina que cuando se llama con miembros individuales sucesivos de un flujo de números, calcula la media de (arriba A), los últimos 160 P 160 de ellos, permite llamar a este 160 SMA (). La palabra 160 estado 160 en la descripción de la tarea se refiere a la necesidad de 160 SMA () 160 para recordar cierta información entre las llamadas a ella: 160 El período, 160 P 160 Un contenedor ordenado de al menos los últimos 160 P 160 números de cada uno de Sus llamadas individuales. El estado 160 también significa que las llamadas sucesivas a 160 I (), 160 el inicializador, 160 deben devolver rutinas separadas que no 160 comparten el estado guardado para que puedan ser utilizadas en dos flujos independientes de datos. El pseudo-código para una implementación de 160 SMA 160 es: Esta versión utiliza una cola persistente para contener los valores p más recientes. Cada función devuelta desde init-moving-average tiene su estado en un átomo que contiene un valor de cola. Esta implementación utiliza una lista circular para almacenar los números dentro de la ventana al principio de cada indicador de iteración se refiere a la celda de lista que contiene el valor que acaba de salir de la ventana y que se reemplazará con el valor simplemente añadido. Uso de un cierre En la actualidad, este sma no puede ser nogc porque asigna un cierre en el montón. Algún análisis de escape podría eliminar la asignación de montón. Uso de una edición de estructura Esta versión evita la asignación de montón del cierre manteniendo los datos en el marco de pila de la función principal. La misma salida: Para evitar que las aproximaciones de punto flotante sigan acumulándose y creciendo, el código podría realizar una suma periódica en toda la matriz de cola circular. Esta implementación produce dos objetos (de función) compartiendo estado. Es idiomático en E separar la entrada de la salida (leer de la escritura) en lugar de combinarlos en un objeto. La estructura es la misma que la implementación de la Desviación EstándarE. El programa de elixir a continuación genera una función anónima con un período incrustado p, que se utiliza como el período de la media móvil simple. La función run lee la entrada numérica y la pasa a la función anónima recién creada, y luego inspecciona el resultado a STDOUT. La salida se muestra a continuación, con el promedio, seguido por la entrada agrupada, formando la base de cada media móvil. Erlang tiene cierres, pero variables inmutables. Una solución entonces es utilizar procesos y un mensaje simple que pasa la API basada. Los lenguajes de matriz tienen rutinas para calcular los avarages de deslizamiento para una secuencia dada de ítems. Es menos eficiente realizar bucle como en los siguientes comandos. Pide continuamente una entrada I. Que se añade al final de una lista L1. L1 se puede encontrar pulsando 2ND / 1, y la media se puede encontrar en List / OPS Pulse ON para terminar el programa. Función que devuelve una lista que contiene los datos promediados del argumento suministrado. Programa que devuelve un valor simple en cada invocación: list es la lista promediada: p es el período: 5 devuelve la lista media: Ejemplo 2: Utilizando el programa movinav2 , 5) - Inicializando el cálculo del promedio móvil, y definir el período de 5 movinav2 (3, x): x - nuevos datos en la lista (valor 3), y el resultado se almacenará en la variable x, y se muestra movinav2 (4, : X - nuevos datos (valor 4), y el nuevo resultado se almacenará en la variable x, y se mostrará (43) / 2. Descripción de la función movinavg: variable r - es el resultado (la lista de promedios) que se devolverá variable i - es la variable de índice, y apunta al final de la sub-lista de la lista de promediar. Variable z - una variable auxiliar La función utiliza la variable i para determinar qué valores de la lista serán considerados en el siguiente cálculo promedio. En cada iteración, la variable i apunta al último valor de la lista que se utilizará en el cálculo promedio. Así que sólo tenemos que averiguar cuál será el primer valor en la lista. Por lo general, hay que tener en cuenta p elementos, por lo que el primer elemento será el indexado por (i-p1). Sin embargo, en las primeras iteraciones, el cálculo será normalmente negativo, por lo que la siguiente ecuación evitará los índices negativos: max (i-p1,1) o, ordenando la ecuación, max (i-p, 0) 1. Pero el número de elementos en las primeras iteraciones también será menor, el valor correcto será (índice final - comenzar índice 1) o, ordenando la ecuación, (i - (max (ip, 0) 1), y luego , (I - max (ip, 0)). La variable z tiene el valor común (max (ip), 0) así que el beginindex será (z1) y los numberofelements serán (iz) mid (list, z1, iz) devolverá la lista de valor que será la suma promedio .) Los sumará sum (.) / (Iz) ri los medirá y almacenará el resultado en el lugar apropiado en la lista de resultados Usando un cierre y creando una función
4-horas MACD Forex Trading estrategia Philip Nel comenzó un hilo en el foro de ForexFactory discutir la estrategia de comercio de 4 horas MACD Forex. Es un tema de foro impresionante. Comenzó en 2007 y todavía está activo ahora. (Tiene 1338 páginas y está creciendo.) Esta estrategia comercial se centra en encontrar patrones (por ejemplo, doble top y cabeza y hombros) en el indicador MACD. Los patrones de comercio del indicador en vez del precio me recuerdan a la CCI de Woodies. Esta estrategia comercial utiliza cinco medias móviles como puntos de soporte y resistencia. Configurarlos: 365 promedio móvil exponencial (EMA) 200 promedio móvil simple (SMA) 89 SMA 21 EMA 8 EMA No olvidamos el nombre de esta estrategia comercial. Las configuraciones para MACD son: 5 para EMA rápida 13 para EMA lenta 1 para la línea de señal Añadir líneas horizontales en 0.0015, 0.003, 0.0045, -0.0015, -0.003, y -0.0045 Reglas para 4 horas MACD Forex Trading Estrategia Este forex MACD Estrategia comercial tien...
Comments
Post a Comment