Ipotesi basate su Fourier - pagina 9

 
grasn писал(а) >>

Non sono un esperto di algebra lineare, ma ho visto descrizioni di algoritmi più veloci. A proposito, se qualcuno ha - passarlo a Urain, sarà ancora più utile libreria nel senso di velocità di calcoli.

L'algoritmo più veloce è il metodo gaussiano (con opportune modifiche).

Ieri ho iniziato a scrivere una libreria sull'algebra lineare (non mi sono basato sulla libreria Urain ). La mia biblioteca ha più possibilità. Aspettate.

 
lea писал(а) >>

Un algoritmo più veloce è il metodo gaussiano (con opportune modifiche).

Ieri ho iniziato a scrivere una libreria sull'algebra lineare (non mi sono basato sulla libreria Urain ). La mia biblioteca ha più possibilità. Aspetta.

Affinché le mie parole non vi sembrino vuote - esporrò un file di intestazione della mia libreria. La mia libreria stessa è ancora in fase di estensione e test (controllo i calcoli in maple).

File:
libmatrix.mqh  18 kb
 
grasn >> :

Non sono un esperto di algebra lineare, ma ho visto descrizioni di algoritmi più veloci. A proposito, se qualcuno ce l'ha - passatelo a Urain, sarà una libreria ancora più utile in termini di velocità di calcolo.

Dovresti ridurre la matrice a una forma triangolare, per esempio, con il metodo di eliminazione Jordano-Hauss. Il prodotto dei suoi elementi diagonali (triangolari) è un determinante della matrice iniziale (lì è necessario tenere conto dei segni alla trasposizione delle linee all'eliminazione). Dopo di che, si può invertire l'intera matrice usando i suoi minori parziali e determinanti parziali. Funziona dieci volte più velocemente dei metodi canonici. Ed è possibile controllare la correttezza del programma solo con algoritmi brevi canonici. 1.

Ricette numeriche in C, seconda edizione (1992).

Soluzione di equazioni algebriche lineari

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


A proposito, c'è anche un utile libro gratuito (anche se la maggior parte di esso è su Fourier)

2. La guida dello scienziato e dell'ingegnere all'elaborazione digitale del segnale
Da Steven W. Smith, Ph.D.

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

 
AlexEro >> :

Si riduce una matrice a una forma triangolare - per esempio, con il metodo di eliminazione Jordano-Hauss, il prodotto dei suoi elementi diagonali (triangolari) è il determinante della matrice iniziale (lì si dovrebbe anche tener conto dei segni quando si riorganizzano le righe all'eliminazione). Dopo di che, si può invertire l'intera matrice usando i suoi minori parziali e determinanti parziali. Funziona dieci volte più velocemente dei metodi canonici. Ed è possibile controllare la correttezza del programma solo con algoritmi brevi canonici. 1.

Ricette numeriche in C, seconda edizione (1992).

Soluzione di equazioni algebriche lineari

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


A proposito, c'è anche un utile libro gratuito (anche se la maggior parte di esso è su Fourier)

2. La guida dello scienziato e dell'ingegnere all'elaborazione digitale del segnale
Da Steven W. Smith, Ph.

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


In realtà, questo metodo è implementato nel trovare il determinante, ma c'è qualcosa di più veloce per la Conversione?

Trovo un minore per ogni cella e divido per il determinante (questo risulta essere N^2 minori da trovare, e il minore è anche un determinante di un grado in meno)

 
Urain писал(а) >>

In realtà questo metodo è implementato nel trovare il determinante, ma c'è qualcosa di più veloce per la Conversione.

Trovo un minore per ogni cella e divido per il determinante (si scopre che occorre trovare N^2 minori, e un minore è anche un determinante di un grado in meno)

Il metodo Gauss può essere adattato a questo. O(N^3). Cerca "matrice inversa" su wikipedia.

 
Urain >> :

In realtà questo metodo è implementato nel trovare il determinante, ma c'è qualcosa di più veloce per la Conversione.

Trovo un minore per ogni cella e divido per il determinante (si scopre che è necessario trovare N^2 minori, e un minore è anche un determinante di un grado in meno)

Questo ciclo richiede solo un po' di tempo. Il problema è che si conta un minore in modo ricorsivo, vero? Si può accelerare contando ogni minore non tramite ricorsione, ma convertendo VER ogni matrice (minore, privata, sottomatrice) in una forma triangolare.

 
grasn >> :

La riga di una tale matrice è essenzialmente la dinamica del coefficiente KP su una data storia. E tali serie, per quanto possa sembrare strano, sono stazionarie e hanno un sacco di vantaggi. Ecco alcuni esempi per esempio:

Frequenza 0:

Grazie per il programma in Mathcade. Ho provato a replicarlo, ma ho scoperto che si comporta un po' diversamente dal tuo esempio. Per le previsioni ho preso una sezione della scorsa settimana su M15 con lunghezza di 1500 barre su EURUSD. Sembra più o meno la stessa della tua sezione di test.

Ma dopo aver usato CreateModeMatrix() ho un'immagine molto diversa alla frequenza 0:


La stessa immagine è più o meno la stessa ad altre frequenze. Cioè, nessun grande periodo come nel tuo esempio. Se non vi dispiace, date la vostra opinione su quale delle opzioni è corretta:

a) set di dati diversi - caratteristiche diverse;

b) interpretazione errata dei risultati della matrice DW;

c) errori di battitura nel programma.

 
equantis >> :

Grazie per il programma in Mathcade. Ho provato a replicarlo ma mi sono accorto che si comporta un po' diversamente dal tuo esempio. Per la previsione ho preso una sezione dell'ultima settimana su M15 con una lunghezza di 1500 barre su EURUSD. Sembra più o meno la stessa della tua sezione di test.

Ma dopo aver usato CreateModeMatrix() ho un'immagine molto diversa alla frequenza 0:


La stessa immagine è più o meno la stessa ad altre frequenze. Cioè, nessun grande periodo come nel tuo esempio. Se non ti dispiace, dai la tua opinione su quale delle opzioni è corretta:

a) set di dati diversi - caratteristiche diverse;

b) interpretazione errata dei risultati della matrice DW;

c) errori di battitura nel programma.


Implementazione 1:1?


PS: Una correzione. Se 1:1 e la riga di ingresso è quotata, è piuttosto strano. Se l'immagine è ferma, allora è già molto strano.

 
Urain >> :

Trovo un minore per ogni cella e lo divido per il determinante (sono N^2 minori da trovare, e un minore è anche un determinante di un grado in meno).

Certo, è un metodo lento. Mi chiedo come tu abbia ancora qualcosa per una matrice 100 per 100.

 

Solo nel caso, per alleggerire la tua coscienza:o)

Attenzione

Guardando l'argomento dell'applicazione della trasformata di Fourier, mi sono ricordato di quello con cui mi divertivo e ho scritto, pensando che questo sarebbe stato "un archivio di modelli che non dovrebbero esserci". Ho rinunciato a questo modello all'epoca, per essere onesto, avendo realizzato in pieno la complessità e l'impossibilità pratica di attuare questo approccio. È solo nel concetto, rompiamo il complesso in semplice. In pratica si scopre che è impossibile fare 50, 100 o più previsioni con sufficiente precisione, per usare un eufemismo. La natura è piuttosto difficile da imbrogliare, più precisamente - impossibile. E ciò che peggiora le cose è che non abbiamo bisogno dei primi risultati (sono i più accurati) ma dell'ultimo della serie di previsioni, ed è proprio il meno accurato. E la serie stessa non è così semplice. Di conseguenza, è praticamente impossibile utilizzare la previsione per il trading (non c'è bisogno di prestare attenzione a una singola immagine fortunata).


Non sono così sicuro che sia necessario spendere tempo in questa direzione... la soluzione può certamente esistere, ma è molto, molto, molto, molto difficile da trovare, date tutte le specificità delle quotazioni di mercato.