Hipótese baseada em Fourier - página 9

 
grasn писал(а) >>

não sou especialista em álgebra linear, mas já vi descrições de algoritmos mais rápidos. A propósito, se alguém tiver - passe-o para Urain, será ainda mais útil a biblioteca no sentido da velocidade dos cálculos.

O algoritmo mais rápido é o método Gaussiano (com modificações apropriadas).

Ontem comecei a escrever biblioteca sobre álgebra linear (não confiei na biblioteca do Urain ). Minha biblioteca tem mais possibilidades. Aguarde por isso.

 
lea писал(а) >>

Um algoritmo mais rápido é o método Gaussiano (com modificações apropriadas).

Comecei a escrever uma biblioteca sobre álgebra linear ontem (eu não contava com a biblioteca Urain ). Minha biblioteca tem mais possibilidades. Espere.

Para que minhas palavras não lhe parecessem vazias - vou colocar um arquivo de cabeçalho da minha biblioteca. Minha biblioteca propriamente dita ainda está sendo ampliada e testada (eu verifico os cálculos no bordo).

Arquivos anexados:
libmatrix.mqh  18 kb
 
grasn >> :

Não sou especialista em álgebra linear, mas já vi descrições de algoritmos mais rápidos. A propósito, se alguém o tem - passe-o para Urain, será ainda mais útil a biblioteca no sentido da velocidade dos cálculos.

A matriz deve ser reduzida a uma forma triangular, por exemplo, pelo método de eliminação Jordano-Hauss. O produto de seus elementos diagonais (triangulares) é um determinante da matriz inicial (lá é necessário levar em conta os sinais na transposição da linha na eliminação). Depois disso, pode-se inverter toda a matriz utilizando seus menores parciais e determinantes parciais. Funciona dez vezes mais rápido do que os métodos canônicos. E é possível verificar a correção do programa apenas através de algoritmos curtos canônicos. 1.

Receitas Numéricas em C, Segunda Edição (1992).

Solução de Equações Algébricas Lineares

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


A propósito, há também um bom livro gratuito útil (embora a maior parte dele esteja em Fourier).

2. o Guia do Cientista e Engenheiro de Processamento Digital de Sinais
Por Steven W. Smith, Ph.D.

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

 
AlexEro >> :

Você reduz uma matriz a uma forma triangular - por exemplo, pelo método de eliminação Jordano-Hauss, o produto de seus elementos (triangulares) diagonais é o determinante da matriz inicial (aí você também deve levar em conta os sinais ao rearranjar as linhas na eliminação). Depois disso, pode-se inverter toda a matriz utilizando seus menores parciais e determinantes parciais. Funciona dez vezes mais rápido do que os métodos canônicos. E é possível verificar a correção do programa apenas através de algoritmos canônicos curtos.

Receitas Numéricas em C, Segunda Edição (1992).

Solução de Equações Algébricas Lineares

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


A propósito, há também um bom livro gratuito útil (embora a maior parte dele esteja em Fourier).

2. o Guia do Cientista e Engenheiro de Processamento Digital de Sinais
Por Steven W. Smith, Ph.D.

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


Na verdade, este método é implementado para encontrar o determinante, mas existe algo mais rápido para a Conversão?

Eu encontro um menor para cada célula e divido pelo determinante. (Isto acaba sendo N^2 Menores a serem encontrados, e o menor também é um determinante por um menor).

 
Urain писал(а) >>

Na verdade, este método é implementado para encontrar o determinante, mas existe algo mais rápido para a Conversão.

Eu encontro um menor para cada célula e divido pelo determinante. (Acontece que N^2 Menores precisam ser encontrados, e um menor também é um determinante por um menor de posto)

O método Gauss pode ser adaptado a isto. O(N^3). Procure "matriz inversa" na wikipedia.

 
Urain >> :

Na verdade, este método é implementado para encontrar o determinante, mas existe algo mais rápido para a Conversão.

Eu encontro um menor para cada célula e divido pelo determinante. (Acontece que N^2 Menores precisam ser encontrados, e um menor também é um determinante por um menor de posto)

Este ciclo leva apenas um pouco de tempo. O problema é que você conta um menor recursivamente, não é mesmo? Você pode acelerá-la contando cada menor não através de recorrência, mas por VER convertendo cada matriz (menor, privada, sub-matriz) em uma forma triangular.

 
grasn >> :

A fila de tal matriz é essencialmente a dinâmica do coeficiente KP em uma determinada história. E tais séries, por estranho que possa parecer, são estacionárias e têm muitas vantagens. Aqui estão algumas amostras, por exemplo:

Freqüência 0:

Obrigado pelo programa em Mathcade. Tentei replicá-lo, mas me deparei com um comportamento um pouco diferente do seu exemplo. Para a previsão, tomei uma seção da semana passada na M15 com comprimento de 1500 barras no EURUSD. Parece mais ou menos o mesmo que sua seção de testes.

Mas depois de ter usado CreateModeMatrix() tenho uma imagem bem diferente na freqüência 0:


A mesma imagem é aproximadamente a mesma em outras freqüências. Isto é, sem grandes períodos como no seu exemplo. Se você não se importa, por favor, dê sua opinião sobre qual das opções está correta:

a) conjunto de dados diferentes - características diferentes;

b) Interpretação errada dos resultados da matriz DW;

c) erros de digitação no programa.

 
equantis >> :

Obrigado pelo programa em Mathcade. Tentei replicar, mas me deparei com um comportamento um pouco diferente do seu exemplo. Para a previsão, tomei uma seção da última semana na M15 com um comprimento de 1500 barras no EURUSD. Parece mais ou menos o mesmo que sua seção de testes.

Mas depois de ter usado CreateModeMatrix() tenho uma imagem bem diferente na freqüência 0:


A mesma imagem é aproximadamente a mesma em outras freqüências. Isto é, sem grandes períodos como no seu exemplo. Se você não se importa, por favor, dê sua opinião qual é a correta:

a) conjunto de dados diferentes - características diferentes;

b) Interpretação errada dos resultados da matriz DW;

c) erros de digitação no programa.


1:1 implementação?


PS: Uma correção. Se 1:1 e a linha de entrada for citada, é muito estranho. Se o quadro é estável, então já é realmente estranho.

 
Urain >> :

Eu encontro um menor para cada célula e divido pelo determinante (Isso é N^2 Menores para encontrar, e um menor também é um determinante por um menor).

É claro, é um método lento. Pergunto-me como você ainda conseguiu algo para uma matriz de 100 por 100.

 

Só por precaução, para aliviar sua consciência:o)

Advertência

Olhando para o tema da aplicação da transformação de Fourier, lembrei-me do que costumava me divertir, e escrevi, pensando que isto seria "uma loja de modelos que não deveria estar lá". Desisti deste modelo na época, para ser honesto, tendo percebido plenamente a complexidade e a impossibilidade prática de implementar esta abordagem. Está apenas no conceito, nós quebramos o complexo em simples. Na prática, revela-se que é impossível fazer 50, 100 ou mais previsões com precisão suficiente, para dizer de forma suave. A natureza é bastante difícil de enganar, mais precisamente - impossível. E o que torna as coisas piores é que não precisamos dos primeiros resultados (eles são os mais precisos), mas dos últimos da série de previsões, e é apenas o menos preciso. E a série em si não é tão simples assim. Como conseqüência, é praticamente impossível utilizar a previsão para comercialização (não há necessidade de prestar atenção a um quadro único de sorte).


Não tenho tanta certeza de que seja necessário gastar tempo nesta direção... a solução pode certamente existir, mas é muito, muito, muito difícil de encontrar, dadas todas as especificidades das cotações de mercado.