资料库: ALGLIB - 数值分析库 - 页 2

 
我在写文章 时使用了 ALGLIB。我甚至在论坛上向该库的作者请教了一些我当时不明白的问题。作者非常友好,详细地回答了我。我特别尊敬他。我很高兴 Bochkanov S.A. 的工作得到了 MQ Co.... 的关注。
 
非常期待这个图书馆的到来。谢谢你们!
 
MQ 美女!

使用该库的 一个例子是教 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;
   // 数据准备
   patterns.Resize(100,3);
   int m=0;     // 第一种模式
   for(int i=1; i<=10; i++)
      for(int j=1; j<=10; j++)
      {
         patterns[m].Set(0,i/10.0);       // 输入 1
         patterns[m].Set(1,j/10.0);       // 输入 2
         patterns[m].Set(2,(i*j)/100.0);  // 目标
         m++; //下一个模式
      }
   // 创建一个有一个隐藏层(5 个神经元)的网络
   CMLPBase::MLPCreate1(2,5,1,net);
   // 网络培训
   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)); 
   // 检查网络上的整数数据
   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;
      CMLPBase::MLPProcess(net,vector,out);
      s+=(string)d1+"*"+(string)d2+"="+DoubleToString(out[0]*100,0)+" // ";
   }
   Print(s);
   // 检查分数数据的网络
   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;
      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) // 


这个简单的脚本不到一兆字节。
附加的文件:
 
Yurich: 使用该库的一个例子是教 MLP 神经网络学习乘法表。

你从哪里得到这个例子的?))))))))))))))

谢谢,我正打算自己研究一下同样的例子,但你能找出谁的乘法表教学代码更快吗,是你的https://www.mql5.com/zh/code/596 还是移植的 ALGLIB?

 
使用 OpenCL 实现将是一个突破。

只不过,Metaquotes 将在实施这个项目时英年早逝。

是否计划全面支持该库?

如果是,能否以二进制形式提供?

如果以二进制形式提供,那么就应该在终端设置中添加 "允许调用 MetaQuotes DLL":0)。

 
通过 MetaEditor 上传的 mqh 文件只有 11 个
 

您好、

我需要找到下面矩阵的特征值:


2 3 2

10 3 4

3 6 1


我如何在这个矩阵上应用这个库?(非对称矩阵)

 

非常非常感谢你的这篇好文章和所附代码!这肯定会成为我计划中的 MQL5 代码的主要工具,并防止我采用从 C++ 到 DLL 再到 MQL5 的方法。

关于之前的问题: 在 linalg.mqh 文件中有 一个名为"NonSymmetricEVD "的 函数 ,但文中并未引用。只需使用该例程即可。

最佳,大卫

 

我还有一个问题:alglib 的最新版本似乎是 3.8.2,而文本中的移植版本是 3.5.0。

是否有计划更新移植代码?

在此先表示感谢、

戴维

 
源代码可以更新到最新的 3.8.2 版本。