Библиотеки: ALGLIB - библиотека численного анализа - страница 3

 
Автоматически сгенерированная справка по ALGLIB
Файлы:
ALGLIB.zip  4934 kb
 
Rashid Umarov:
Автоматически сгенерированная справка по ALGLIB

Хотел посмотреть, по оглавлению переходы есть, но поле, где должен быть текст - всегда пустое ((


 
elibrarius:

Хотел посмотреть, по оглавлению переходы есть, но поле, где должен быть текст - всегда пустое ((


Ищите ответы в интернете -

Не отображается файл помощи CHM в Windows 7

 
Yury Kulikov:

Красавцы MQ! Серьезная работа!

Пример использования библиотеки - обучение нейронной сети MLP таблице умножения.


:( Вот только боюсь подумать, что будет с облаком, когда пользователи начнут активно использовать библиотеку в своих экспертах.
Данный простой скрипт весит под мегабайт.


То же но для RF:

считает не так точно, надо попробовать подтюнить

#include <Math\Alglib\dataanalysis.mqh>
//+------------------------------------------------------------------+
#define _rand(min,max) ((rand()/(double)SHORT_MAX)*((max)-(min))+min)
//+------------------------------------------------------------------+
void OnStart()
{
   CDecisionForest      Trf;
   CDecisionForestShell RFshell;
   CMatrixDouble        PatternsMatrix;
   CDFReport            RF_report;
   int RFinfo;
   double vector[2], out[1];
   
   // подготовка данных
   PatternsMatrix.Resize(100,3);
   int m=0;     // first pattern
   for(int i=1; i<=10; i++)
      for(int j=1; j<=10; j++)
      {
         PatternsMatrix[m].Set(0,i/10.0);       // input 1
         PatternsMatrix[m].Set(1,j/10.0);       // input 2
         PatternsMatrix[m].Set(2,(i*j)/100.0);  // target
         m++; //next pattern
      }
   // создание RF
   CDForest::DFBuildRandomDecisionForest(PatternsMatrix,100,2,1,50,0.4,RFinfo,Trf,RF_report);
   Print("Info=",RFinfo,"  Error=",CDForest::DFAvgError(Trf,PatternsMatrix,100));  
   // проверка сети на целочисленных данных
   string s="Тест 1 >> ";
   for(int i=1; i<=10; i++)
   {
      int d1=(int)_rand(1,10), d2=(int)_rand(1,10);
      vector[0]=d1/10.0;
      vector[1]=d2/10.0;
      CDForest::DFProcess(Trf,vector,out);
      s+=(string)d1+"*"+(string)d2+"="+DoubleToString(out[0]*100,0)+" // ";
   }
   Print(s);
   // проверка сети на дробныx данных
   s="Тест 2 >> ";
   for(int i=1; i<=5; i++)
   {
      double d1=NormalizeDouble(_rand(1,10),1), d2=NormalizeDouble(_rand(1,10),1);
      vector[0]=d1/10.0;
      vector[1]=d2/10.0;
       CDForest::DFProcess(Trf,vector,out);
      s+=DoubleToString(d1,1)+"*"+DoubleToString(d2,1)+"="+DoubleToString(out[0]*100,2)+
         "("+DoubleToString(d1*d2,2)+") // ";
   }
   Print(s);
}
2017.09.04 21:43:21.609 RF sample (EURUSD,H1)   Info=1  Error=0.01861400000000001
2017.09.04 21:43:21.610 RF sample (EURUSD,H1)   Тест 1 >> 6*9=55 // 7*3=21 // 6*6=38 // 9*7=65 // 9*9=80 // 8*4=32 // 4*1=6 // 1*8=13 // 4*3=12 // 2*2=5 // 
2017.09.04 21:43:21.610 RF sample (EURUSD,H1)   Тест 2 >> 7.7*5.8=46.64(44.66) // 3.0*3.3=9.70(9.90) // 6.0*9.2=55.32(55.20) // 2.6*6.7=20.08(17.42) // 2.5*4.0=12.54(10.00) // 

PS 

CDForest::DFBuildRandomDecisionForest(PatternsMatrix,100,2,1,500,1,RFinfo,Trf,RF_report);

так точнее, 500 древ и r=1, бОльшая подгонка и меньше шума

2017.09.04 22:08:33.227 RF sample (EURUSD,H1)   Info=1  Error=2.02997341158806e-15
2017.09.04 22:08:33.228 RF sample (EURUSD,H1)   Тест 1 >> 2*2=4 // 2*6=12 // 1*9=9 // 9*1=9 // 4*7=28 // 9*6=54 // 5*6=30 // 5*5=25 // 4*1=4 // 1*4=4 // 
2017.09.04 22:08:33.230 RF sample (EURUSD,H1)   Тест 2 >> 4.0*3.8=16.00(15.20) // 9.6*3.1=30.00(29.76) // 5.5*6.4=36.00(35.20) // 4.0*4.4=16.00(17.60) // 1.6*4.2=8.00(6.72) // 
 
Maxim Dmitrievsky:


То же но для RF:

считает не так точно, надо попробовать подтюнить

PS 

так точнее, 500 древ и r=1, бОльшая подгонка и меньше шума

Интересно, это сколько деревьев нужно сделать чтобы результаты ответа были точными? А ведь это простейшая таблица умножения, а если фукций несколько то нужно прогнать по РФ а не таблицу умножения, то ответ очевидно вообще будет издалека напоминать чтото справедливое?
 

Уважаемые разработчики, прошу добавить метод расчёта сопряженного числа комплексного числа в структуру complex (исходник в СБ <Math\Alglib\complex.mqh>)

Моя версия:

   //--- operations
   void              Copy(const complex &rhs);
   bool              Eq(const complex &lhs, const complex &rhs);
   bool              NotEq(const complex &lhs, const complex &rhs);
   complex           Add(const complex &lhs, const complex &rhs);
   complex           Sub(const complex &lhs, const complex &rhs);
   complex           Mul(const complex &lhs, const complex &rhs);
   complex           Div(const complex &lhs, const complex &rhs);
   complex           Conjugate(void) const;


................


//+------------------------------------------------------------------+
//| Conjugate                                                        |
//+------------------------------------------------------------------+
complex complex::Conjugate(void) const
  {
   complex complex_val(re,-im);
   return complex_val;
  };


После очередного релиза нового билда приходится откатывать к своей прежней ревизии. Что неудобно.

 
Denis Kirichenko:

Уважаемые разработчики, прошу добавить метод расчёта сопряженного числа комплексного числа в структуру complex (исходник в СБ <Math\Alglib\complex.mqh>)

Моя версия:


После очередного релиза нового билда приходится откатывать к своей прежней ревизии. Что неудобно.

Добавлено

 
Сбросьте пожалуйста свежую версию, не компилируется!(
 
Koshtenko #:
Сбросьте пожалуйста свежую версию, не компилируется!(

Используйте штатную версию Alglib, которая давно уже идет в поставке терминала. Класс комплексных чисел в нем адаптирован:


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