Гипотеза на базе Фурье - страница 9

 
grasn писал(а) >>

не специалист по линейной алгебре, но встречал описание более быстрых алгоритмов. Кстати, если у кого есть - передайте Urain, будет еще более полезная библиотека в смысле скорости вычислений.

Более быстрый алгоритм - метод Гаусса (с соответствующими модификациями).

Я вчера начал писать библиотеку по линейной алгебре (на библиотеку Urain не опирался). Возможностей у моей библиотеки побольше. Ждите.

 
lea писал(а) >>

Более быстрый алгоритм - метод Гаусса (с соответствующими модификациями).

Я вчера начал писать библиотеку по линейной алгебре (на библиотеку Urain не опирался). Возможностей у моей библиотеки побольше. Ждите.

Чтобы мои слова не казались вам пустыми - выложу заголовочный файл своей библиотеки. Саму библиотеку пока что расширяю и тестирую (вычисления проверяю в maple).

Файлы:
libmatrix.mqh  18 kb
 
grasn >>:

не специалист по линейной алгебре, но встречал описание более быстрых алгоритмов. Кстати, если у кого есть - передайте Urain, будет еще более полезная библиотека в смысле скорости вычислений.

Приводите матрицу к треугольному виду - например методом элиминации Жордано-Гаусса, произведение её (треуголки) диагональных элементов и есть детерминант исходной матрицы (там ещё учёт знаков надо вести при перестановке строк при элиминации). После этого дальше можно обращать всю матрицу, пользуясь её частными минорами и частными детерминантами. Работает в десятки раз быстрее канонических методов. А правильность работы программы можно проверять как раз каноническими короткими алгоритмами.

1. Numerical Recipes in C, Second Edition (1992)

Solution of Linear Algebraic Equations

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


Кстати, есть ещё полезная бесплатная хорошая книга (хотя и бОльшая часть посвящена Фурье)

2. The Scientist and Engineer's Guide to Digital Signal Processing
By Steven W. Smith, Ph.D.

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

 
AlexEro >>:

Приводите матрицу к треугольному виду - например методом элиминации Жордано-Гаусса, произведение её (треуголки) диагональных элементов и есть детерминант исходной матрицы (там ещё учёт знаков надо вести при перестановке строк при элиминации). После этого дальше можно обращать всю матрицу, пользуясь её частными минорами и частными детерминантами. Работает в десятки раз быстрее канонических методов. А правильность работы программы можно проверять как раз каноническими короткими алгоритмами.

1. Numerical Recipes in C, Second Edition (1992)

Solution of Linear Algebraic Equations

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


Кстати, есть ещё полезная бесплатная хорошая книга (хотя и бОльшая часть посвящена Фурье)

2. The Scientist and Engineer's Guide to Digital Signal Processing
By Steven W. Smith, Ph.D.

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


Собственно этод метод и реализован в нахождении Определителя, а вот есть ли чтото побыстрее для Обращения.

Я нахожу минор для каждой ячейки и делю на определитель.(Это получается N^2 Миноров нужно найти, а минор тодже определитель на ранг меньше)

 
Urain писал(а) >>

Собственно этод метод и реализован в нахождении Определителя, а вот есть ли чтото побыстрее для Обращения.

Я нахожу минор для каждой ячейки и делю на определитель.(Это получается N^2 Миноров нужно найти, а минор тодже определитель на ранг меньше)

Метод Гаусса к этому можно приспособить. O(N^3). Гляньте в википедии "обратная матрица"

 
Urain >>:

Собственно этод метод и реализован в нахождении Определителя, а вот есть ли чтото побыстрее для Обращения.

Я нахожу минор для каждой ячейки и делю на определитель.(Это получается N^2 Миноров нужно найти, а минор тодже определитель на ранг меньше)

Этот-то цикл занимает как раз немного времени. Проблема в том, что минор Вы считаете рекурсивно, не так ли ? Ускорить это можно подсчётом каждого минора не через рекурсию, а ЧЕРЕЗ приведение каждой (минорной, частной, под-матрицы) матрицы к треугольному виду.

 
grasn >>:

Строка такой матрицы - по существу это динамика коэффициента КП на взятой истории. И такие ряды, как это не странно - стационарны и обладают кучей достоинств. Для примера приведу несколько выборок:

Частота 0:

Спасибо за программу на Mathcade. Попытался его повторить, но наткнулся на то, что он ведет себя немного не так, как в Вашем примере. Для прогнозирования Взял отрезок за последнюю неделю на M15 длиной в 1500 баров на EURUSD. Выглядит примерно так же, как и Ваш тестовый участок.

Но после применения процедуры CreateModeMatrix() получил совсем другую картину на Частоте 0:


Такая же примерно картина и на других частотах. То есть, никаких больших периодов, как в Вашем примере. Если не сложно, подскажите свое мнение, какой из вариантов правильный:

а) другой набор данных - другие характеристики;

б) неправильная интерпретация результатов матрицы DW;

в) очепятки при наборе программы.

 
equantis >>:

Спасибо за программу на Mathcade. Попытался его повторить, но наткнулся на то, что он ведет себя немного не так, как в Вашем примере. Для прогнозирования Взял отрезок за последнюю неделю на M15 длиной в 1500 баров на EURUSD. Выглядит примерно так же, как и Ваш тестовый участок.

Но после применения процедуры CreateModeMatrix() получил совсем другую картину на Частоте 0:


Такая же примерно картина и на других частотах. То есть, никаких больших периодов, как в Вашем примере. Если не сложно, подскажите свое мнение, какой из вариантов правильный:

а) другой набор данных - другие характеристики;

б) неправильная интерпретация результатов матрицы DW;

в) очепятки при наборе программы.


реализация 1:1?


PS: Дописка. Если 1:1 и входной ряд котировка, то довольно странно. Если картинка устойчива, то это уже действительно странно.

 
Urain >>:

Я нахожу минор для каждой ячейки и делю на определитель.(Это получается N^2 Миноров нужно найти, а минор тодже определитель на ранг меньше)

Конечно, медленный метод. Я вообще удивляюсь, как у Вас еще и что-то получилось для матрицы 100 на 100.

 

На всякий случай, для успокоения своей совести :о)

Предупреждение

Глядя на тему применения Фурье преобразования, вспомнил чем ранее развлекался, и написал, подумав, что тут будет "склад моделей, которых не должно было быть". Забросил я тогда эту модель, если честно, осознав в полной мере сложность и практическую невозможность реализации данного подхода. Это только в концепции, сложное разбиваем на простое. На практике, оказывается, выполнить 50, 100, и более прогнозов с достаточной точностью мягко говоря, невозможно. Природу, довольно трудно обмануть, вернее - невозможно. А все окончательно ухудшает то, что нужны не первые прогнозные отсчеты (они самые точные), а нужен самый последний в прогнозном ряду, а он как раз, самый не точный. И сами ряды не такие уж и простые. Как следствие, для торговли прогнозом пользоваться практически невозможно (на удачную единственную картинку внимания обращать не нужно).


Не очень уверен, что нужно тратить время на это направление... решение, может быть конечно и есть, но найти его - очень, очень, очень, очень трудно с учетом всей специфики рыночных котировок.

Причина обращения: