Hipótesis de Fourier - página 9

 
grasn писал(а) >>

No soy un experto en álgebra lineal, pero he visto descripciones de algoritmos más rápidos. Por cierto, si alguien tiene - pasarlo a Urain, será aún más útil biblioteca en el sentido de la velocidad de los cálculos.

El algoritmo más rápido es el método de Gauss (con las modificaciones pertinentes).

Ayer empecé a escribir una biblioteca sobre álgebra lineal (no me basé en la biblioteca Urain ). Mi biblioteca tiene más posibilidades. Espéralo.

 
lea писал(а) >>

Un algoritmo más rápido es el método de Gauss (con las modificaciones pertinentes).

Ayer empecé a escribir una biblioteca sobre álgebra lineal (no me basé en la biblioteca Urain ). Mi biblioteca tiene más posibilidades. Espera.

Para que mis palabras no le parezcan vacías, expondré un archivo de cabecera de mi biblioteca. Mi biblioteca en sí todavía se está ampliando y probando (compruebo los cálculos en maple).

Archivos adjuntos:
libmatrix.mqh  18 kb
 
grasn >> :

No soy un experto en álgebra lineal, pero he visto descripciones de algoritmos más rápidos. Por cierto, si alguien lo tiene - pásalo a Urain, será una biblioteca aún más útil en el sentido de la velocidad de los cálculos.

Hay que reducir la matriz a una forma triangular, por ejemplo, por el método de eliminación de Jordano-Hauss. El producto de sus elementos diagonales (triangulares) es un determinante de la matriz inicial (ahí hay que tener en cuenta los signos en la transposición de líneas en la eliminación). Después, se puede invertir toda la matriz utilizando sus menores y determinantes parciales. Funciona diez veces más rápido que los métodos canónicos. Y es posible comprobar la corrección del programa sólo mediante algoritmos cortos canónicos. 1.

Numerical Recipes in C, segunda edición (1992).

Solución de ecuaciones algebraicas lineales

http://www.nrbook.com/a/bookcpdf.php


Por cierto, también hay un buen libro útil y gratuito (aunque la mayor parte es sobre Fourier)

2. Guía del científico y del ingeniero para el procesamiento digital de señales
Por el doctor Steven W. Smith

http://www.dspguide.com/pdfbook.htm

 
AlexEro >> :

Se reduce una matriz a una forma triangular - por ejemplo, por el método de eliminación de Jordano-Hauss, el producto de sus elementos diagonales (triangulares) es el determinante de la matriz inicial (ahí también hay que tener en cuenta los signos al reordenar las filas en la eliminación). Después, se puede invertir toda la matriz utilizando sus menores y determinantes parciales. Funciona diez veces más rápido que los métodos canónicos. Y es posible comprobar la corrección del programa sólo mediante algoritmos cortos canónicos. 1.

Numerical Recipes in C, segunda edición (1992).

Solución de ecuaciones algebraicas lineales

http://www.nrbook.com/a/bookcpdf.php


Por cierto, también hay un buen libro útil y gratuito (aunque la mayor parte es sobre Fourier)

2. Guía del científico y del ingeniero para el procesamiento digital de señales
Por Steven W. Smith, Ph.

http://www.dspguide.com/pdfbook.htm


En realidad, este método se implementa en la búsqueda del determinante, pero ¿hay algo más rápido para la Conversión?

Encuentro un menor para cada celda y lo divido por el determinante. (Resulta que hay que encontrar N^2 menores, y el menor es también un determinante por un rango menos).

 
Urain писал(а) >>

En realidad este método se implementa en la búsqueda del determinante, pero ¿hay algo más rápido para la Conversión.

Encuentro un menor para cada celda y lo divido por el determinante. (Resulta que hay que encontrar N^2 menores, y un menor es también un determinante por un rango menos)

El método de Gauss puede adaptarse a ello. O(N^3). Busca "matriz inversa" en la wikipedia.

 
Urain >> :

En realidad este método se implementa en la búsqueda del determinante, pero ¿hay algo más rápido para la Conversión.

Encuentro un menor para cada celda y lo divido por el determinante. (Resulta que hay que encontrar N^2 menores, y un menor es también un determinante por un rango menos)

Este ciclo lleva poco tiempo. El problema es que se cuenta un menor recursivamente, ¿no? Se puede acelerar contando cada menor no a través de la recursión, sino convirtiendo VER cada matriz (menor, privada, submatriz) a una forma triangular.

 
grasn >> :

La fila de dicha matriz es esencialmente la dinámica del coeficiente KP en una historia determinada. Y estas series, por extraño que parezca, son estacionarias y tienen muchas ventajas. He aquí algunos ejemplos, por ejemplo:

Frecuencia 0:

Gracias por el programa en Mathcade. Intenté replicarlo, pero me encontré con que se comporta de manera un poco diferente a tu ejemplo. Para el pronóstico tomé una sección de la semana pasada en M15 con una longitud de 1500 barras en EURUSD. Parece más o menos lo mismo que su sección de pruebas.

Pero después de usar CreateModeMatrix() tengo una imagen bastante diferente en la frecuencia 0:


La misma imagen es más o menos la misma en otras frecuencias. Es decir, no hay grandes periodos como en tu ejemplo. Si no le importa, dé su opinión sobre cuál de las opciones es la correcta:

a) conjunto de datos diferente - características diferentes;

b) la interpretación errónea de los resultados de la matriz DW;

c) errores de escritura en el programa.

 
equantis >> :

Gracias por el programa en Mathcade. Intenté replicarlo pero me encontré con que se comporta de manera un poco diferente a tu ejemplo. Para la predicción tomé una sección de la última semana en M15 con una longitud de 1500 barras en EURUSD. Parece más o menos lo mismo que su sección de pruebas.

Pero después de usar CreateModeMatrix() tengo una imagen bastante diferente en la frecuencia 0:


La misma imagen es más o menos la misma en otras frecuencias. Es decir, no hay periodos grandes como en tu ejemplo. Si no le importa, dé su opinión sobre cuál de las opciones es la correcta:

a) conjunto de datos diferente - características diferentes;

b) la interpretación errónea de los resultados de la matriz DW;

c) errores de escritura en el programa.


¿Implementación 1:1?


PD: Una corrección. Si es 1:1 y la fila de entrada está citada, es bastante raro. Si la imagen es fija, entonces ya es muy raro.

 
Urain >> :

Encuentro un menor para cada celda y lo divido por el determinante. (Son N^2 menores a encontrar, y un menor es también un determinante por un rango menos).

Por supuesto, es un método lento. Me pregunto cómo se puede conseguir algo para una matriz de 100 por 100.

 

Porsi acaso, para tranquilizar su conciencia:o)

Advertencia

Al ver el tema de la aplicación de la transformada de Fourier, me acordé de lo que solía entretenerme y escribí, pensando que sería "un almacén de modelos que no debería estar ahí". En su momento, renuncié a este modelo, para ser sincero, al darme cuenta de la complejidad y la imposibilidad práctica de aplicar este enfoque. Sólo en el concepto, rompemos lo complejo en lo simple. En la práctica resulta que es imposible hacer 50, 100 o más previsiones con suficiente precisión, por decirlo suavemente. La naturaleza es bastante difícil de engañar, más exactamente - imposible. Y lo que empeora las cosas es que no necesitamos los primeros resultados (son los más precisos) sino el último de la serie de pronósticos, y es justo el menos preciso. Y la serie en sí no es tan sencilla. En consecuencia, es prácticamente imposible utilizar el pronóstico para el comercio (no hay necesidad de prestar atención a una sola imagen afortunada).


No estoy seguro de que sea necesario dedicar tiempo a esta dirección... la solución puede existir ciertamente, pero es muy, muy, muy difícil de encontrar, dadas todas las particularidades de las cotizaciones del mercado.