Bibliothèque: ALGLIB - Bibliothèque d'Analyse Numérique - page 2

 
Lorsque j'ai écrit mon article, j'ai utilisé ALGLIB. J'ai même réussi à demander à l'auteur de la bibliothèque sur le forum quelque chose que je n'avais pas compris à l'époque. L'auteur a été très gentil et m'a répondu en détail. C'est pour cela que je lui voue un respect particulier. Je suis heureux que le travail de Bochkanov S.A. ait été remarqué par MQ Co.....
 
Je suis très enthousiaste à l'idée de recevoir cette bibliothèque. Je vous remercie de votre attention.
 
MQ beauties ! Un travail sérieux !

Un exemple d'utilisation de la bibliothèque est l'enseignement de la table de multiplication au réseau neuronal MLP.

#include <Math\Alglib\dataanalysis.mqh>
//+------------------------------------------------------------------+
#define _rand(min,max) ((rand()/(double)SHORT_MAX)*((max)-(min))+min)
//+------------------------------------------------------------------+
void OnStart()
{
   CMultilayerPerceptron net;
   CMLPReport rep;
   CMatrixDouble patterns;
   double vector[2], out[1];
   int info;
   // préparation des données
   patterns.Resize(100,3);
   int m=0;     // premier modèle
   for(int i=1; i<=10; i++)
      for(int j=1; j<=10; j++)
      {
         patterns[m].Set(0,i/10.0);       // entrée 1
         patterns[m].Set(1,j/10.0);       // entrée 2
         patterns[m].Set(2,(i*j)/100.0);  // cible
         m++; //suivant modèle
      }
   // création d'un réseau avec une couche cachée (5 neurones)
   CMLPBase::MLPCreate1(2,5,1,net);
   // formation au réseau
   CMLPTrain::MLPTrainLM(net,patterns,100,1 e-3,5,info,rep);     //Levenberg-Marquardt
   //CMLPTrain::MLPTrainLBFGS(net,paterns,100,1e-3,10,0.001,1000,info,rep);//L-BFGS
   Print("Info=",info,"  Error=",CMLPBase::MLPError(net,patterns,100)); 
   // vérifier le réseau sur des données entières
   string s="Test 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;
      CMLPBase::MLPProcess(net,vector,out);
      s+=(string)d1+"*"+(string)d2+"="+DoubleToString(out[0]*100,0)+" // ";
   }
   Print(s);
   // vérifier le réseau sur les données fractionnaires
   s="Test 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;
      CMLPBase::MLPProcess(net,vector,out);
      s+=DoubleToString(d1,1)+"*"+DoubleToString(d2,1)+"="+DoubleToString(out[0]*100,2)+
         "("+DoubleToString(d1*d2,2)+") // ";
   }
   Print(s);
}
2012.10.13 12:44:31     Test_MLP(Alglib) (EURUSD,M30)   Info=2  Error=0.0005349624857861839
2012.10.13 12:44:31     Test_MLP(Alglib) (EURUSD,M30)   Тест 1 >> 3*6=18 // 1*1=0 // 7*8=56 // 1*5=5 // 4*6=24 // 7*6=42 // 8*2=16 // 1*5=5 // 3*2=6 // 6*7=42 // 
2012.10.13 12:44:31     Test_MLP(Alglib) (EURUSD,M30)   Тест 2 >> 6.3*8.2=51.83(51.66) // 7.0*8.1=57.04(56.70) // 9.0*8.1=73.36(72.90) // 4.1*9.6=39.05(39.36) // 6.3*8.8=55.63(55.44) // 

Je suis effrayé de penser à ce qui arrivera au nuage lorsque les utilisateurs commenceront à utiliser activement la bibliothèque dans leurs experts.
Ce simple script pèse moins d'un mégaoctet.
Dossiers :
 
Yurich: Un exemple d'utilisation de la bibliothèque est l'apprentissage de la table de multiplication au réseau neuronal MLP.

Où avez-vous trouvé cet exemple ? ))))))))))))))

Merci, j'allais justement étudier le même exemple pour moi-même, mais pouvez-vous trouver quel code pour l'apprentissage de la table de multiplication est le plus rapide, le vôtre https://www.mql5.com/fr/code/596 ou l'ALGLIB portée ?

 
Merci pour la nouveauté.
La percée sera la mise en œuvre à l'aide d'OpenCL.

Sauf que Metaquotes mourra jeune lors de la mise en œuvre de ce projet.

Une prise en charge complète de cette bibliothèque est-elle prévue ?

Si oui, peut-elle être fournie sous forme binaire ?

Si vous la livrez sous forme binaire, il est temps d'ajouter une coche dans les paramètres du terminal "Allow MetaQuotes DLL call" :0)

 
Seuls 11 fichiers mqh sont téléchargés via MetaEditor
 

Bonjour,

J'ai besoin de trouver les valeurs propres de la matrice ci-dessous :


2 3 2

10 3 4

3 6 1


Comment puis-je appliquer cette bibliothèque à cette matrice ? (matrice non symétrique)

 

Merci beaucoup pour cet excellent article et le code joint! Ce sera certainement l'outil principal pour mes codes MQL5 prévus, et m'empêchera de suivre la voie C++-to-DLL-to-MQL5.

En ce qui concerne la question précédente : il existe une fonction nommée"NonSymmetricEVD" dans le fichier linalg.mqh, qui n'est pas référencée dans le texte. Il suffit d'utiliser cette routine.

Cordialement, David

 

J'ai une autre question : la version la plus récente de l'alglib semble être la 3.8.2, alors que selon le texte la version portée est la 3.5.0.

Est-il prévu de mettre à jour le code porté ?

Merci d'avance,

David

 
La source a pu être mise à jour vers la dernière version 3.8.2.