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

 

Это мой С код, датированный 03.1995 (ну и пылищи на антресолях!) Раз не стёр - значит работающий.


int Invert (double *t)
/*---------------------------------------------------------*
 *   Вычисление обратной матрицы путем ее перевода   	   *
 *   к треугольному виду  с последующим умножением 	   *
 *      на преобразованную единичную матрицу.        	   *
 *   Обратная матрица распологается на месте исходной.	   *
 *   Требуется <buf> область размерности t[1..NM*NM] 	   *
 *---------------------------------------------------------*
 *  t[0] =  NM  - размерность матрицы.               	   *
 *  t[1..NM*NM] - исходная (обратная) матрица по столбцам. *
 *  e[1..NM*NM] - элементы единичной матрицы.       	   *
 *  ВОЗВРАТ :  0 - OK                           	   *
 *---------------------------------------------------------*/
{   int    js, jk, jj, jp, n=t[0];
    double a1, a2, *e=(double *)buf;
//  -----------  Заполнение Е матрицы  -----------
    for (jk = 1; jk <= n; jk++) {
       jp = n*(jk-1);
       for (js = 1; js <= n; js++) {
	  e[js+jp] = t[js+jp];  t[js+jp] = 0.0; }
       t[jk+jp] = 1.0; }
// ----------------  Проход по столбцам ----------
    for (jk = 1; jk < n; jk++) {
//  ---------------  Обнуление столбца  ----------
       a1 = e[(jp = n*(jk-1))+jk];  //  Диагональный элемент
       for (js = jk+1; js <= n; js++) {
	    a2 = e[jp+js]/a1;   e[jp+js] = 0.0;
	    for (jj = jk+1; jj <= n; jj++)
	       e[n*(jj-1)+js] -= a2*e[n*(jj-1)+jk];
	    for (jj = 1; jj <= n; jj++)
	       t[n*(jj-1)+js] -= a2*t[n*(jj-1)+jk]; }
    } //  END for (JK)
//  -------  Определение обратной матрицы  -------
    for (js = n; js > 0; js--)
       for (jk = 1; jk <= n; jk++) {
	  for (a1 = 0.0, jj = js+1; jj <= n; jj++)
	     a1 += e[n*(jj-1)+js]*t[n*(jk-1)+jj];
	  t[n*(jk-1)+js] = (t[n*(jk-1)+js]-a1)/e[n*(js-1)+js]; }
    return 0;
}
/**********************************************************************/
 
Mathemat >>:

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

Присоединяюсь. Тоже слегка удивлён.

(задумчиво так) это в принципе свидетельствует о высокой эффективности компилятора MQL4.

 

to Mathemat, AlexEro

Коллеги, да ладно Вам придираться, был реализован первый попавшийся алгоритм. Ускорим со временем, углубим, улучшим.

 
grasn >>:

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

Да, 1 в 1. Опечатку нашел. Вот результат.


Увы, пока до надежного предсказания далеко...

 
grasn >>:

to Mathemat, AlexEro

Коллеги, да ладно Вам придираться, был реализован первый попавшийся алгоритм. Ускорим со временем, углубим, улучшим.



Да что Вы, коллега?! Мы не придираемся! Где Вы это увидели? Мы просто сразу же указываем на грабли, которыми сами ударялись ещё давно. И показываем как йих обойти. А что, лучше надо было промолчать?

 

to equantis

А я предупреждал на прошлой странице крупными буквами. Можно годы потрать, но не найти приемлемого решения, а можно и за 10 мин во всем разобраться. Все же рекомендую оставить на десерт :о)


to AlexEro

Да я просто напоминаю, что до этого момента вообще никакой библиотеки не было, кроме наработок Ilnur :о)

 
grasn >>:А я предупреждал на прошлой странице крупными буквами. Можно годы потрать, но не найти приемлемого решения, а можно и за 10 мин во всем разобраться. Все же рекомендую оставить на десерт :о)

Точно, стоит оставить...

Для того, чтобы закрыть вопрос привожу картинку с типичными результатами:

Синяя - цена

Красная - прогноз про программе с косинус-преобразованием с началом в 0

Лиловая - та же кривая, но рассчитанная от точки начала прогноза (100)

Зеленая - просто прогноз на базе кривой цены (пользовался встроенной функцией predict)

 
grasn >>:

to AlexEro

Да я просто напоминаю, что до этого момента вообще никакой библиотеки не было, кроме наработок Ilnur :о)

это у вас не было....

 
AlexEro >>:

это у вас не было....

Остается только спросить, и где же Вы были? :о))))))