ライブラリ: ALGLIB - 数値分析ライブラリ - ページ 2

 
私が記事を 書いたとき、ALGLIBを使った。その時わからなかったことを、フォーラムでライブラリの作者に質問することもできました。作者はとても親切で、詳しく答えてくれた。彼には特別な尊敬と敬意を表します。Bochkanov S.A.の仕事が株式会社MQによって注目されたことをうれしく思います。
 
このライブラリーの到着にとても興奮している。ありがとう!
 
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++; //次のパターン
      }
   // 1つの隠れ層(5ニューロン)を持つネットワークを作る
   CMLPBase::MLPCreate1(2,5,1,net);
   // ネットワーク・トレーニング
   CMLPTrain::MLPTrainLM(net,patterns,100,1 e-3,5,info,rep);     //レーベンベルク・マルカート
   //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) // 


このシンプルなスクリプトの重さは1メガバイト以下です。
ファイル:
 
Yurich: ライブラリの使用例として、MLPニューラルネットワークに掛け算表を教えることができます。

この例はどこで手に入れたのですか?))))))))))))))

ありがとうございます。ちょうど同じ例を自分で勉強しようと思っていたところなのですが、乗法表を教えるコードがあなたのコードhttps://www.mql5.com/ja/code/596 と移植された ALGLIB のどちらが速いかわかりますか?

 
画期的なのは、OpenCLを使った 実装だろう。

ただし、Metaquotesはこのプロジェクトを実装するときに早死にするだろう。

このライブラリのフルサポートは予定されていますか?

もしそうなら、バイナリで提供できますか?

もしバイナリで提供するのであれば、ターミナルの設定で "Allow MetaQuotes DLL call "にチェックを入れる時です :0)

 
MetaEditor経由でアップロードされるのは11個のmqhファイルのみ
 

こんにちは、

以下の行列の固有値を求める必要があります:


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に更新された。