ライブラリ: ALGLIB - 数値分析ライブラリ - ページ 5 1234567 新しいコメント Arthur Albano 2021.10.07 17:28 #41 こんにちは! 私はALGLIBの全くの初心者です。スクリプトを使用してk²を計算することです。エクセルでは簡単にできるのですが,1つのボックス制約を持つ非線形方程式モデルをどのように使えばよいのかわかりません. void OnStart() { const double x[22] = {28.98, 30.48, 30.98, 31.48, 31.98, 32.48, 32.98, 33.48, 33.98, 34.48, 34.98, 35.48, 35.98, 36.48, 36.98, 37.48, 37.98, 38.48, 38.98, 39.98, 40.98, 41.98}; const double y[22] = {8.26, 7.26, 5.71, 6.15, 5.90, 5.15, 5.03, 4.30, 4.15, 3.30, 2.90, 2.71, 1.96, 1.57, 1.27, 0.90, 0.70, 0.47, 0.33, 0.20, 0.09, 0.06}; const double w[22] = {2, 8, 2, 2, 2, 1, 11, 12, 24, 12, 6, 12, 21, 7, 74, 51, 159, 385, 171, 109, 18, 18}; //ウェイト const double x0 = 37.74; //中心値の定理 //モデル方程式 //y = (1/2)*((x^2-2x0x+x0^2+4k^2)^(1/2) + x+x0) - x //k^2は0.582018800686398と計算された。エクセルのソルバーを使用した結果、誤差はw(y-y0)^2の最小化和となった。 //ボックスの制約 k^2>0; }; お読みいただきありがとうございました! Arthur Albano 2021.10.09 22:36 #42 Arthur Albano #:こんにちは!私はALGLIBの全くの初心者です。スクリプトを使用してk²を計算することです。Excelでは簡単にできるのですが,1つのボックス制約を持つ非線形方程式モデルを使用する方法がわかりません.読んでくれてありがとう! 今のところ、不細工に見える...。 //+------------------------------------------------------------------+ //|AlgLibExample.mq5 //|アーサー・アルバノ //|https://www.mql5.com/ja/users/arthuralbano //+------------------------------------------------------------------+ #property copyright "Arthur Albano" #property link "https://www.mql5.com/ja/users/arthuralbano" #property version "1.00" //+------------------------------------------------------------------+ //| スクリプト・プログラム開始機能| //+------------------------------------------------------------------+ #include <Math\Alglib\alglib.mqh> #include <Math\Alglib\interpolation.mqh> #include <Arrays\ArrayDouble.mqh> //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ void OnStart() { const double x0 = 37.74; //中心値の定理 //モデル方程式 //f(x,k²,x0) = (1/2)*((x^2-2x0x+x0^2+4k^2)^(1/2) + x+x0) - x エクセルのソルバーを使って、//k^2は0.582018800686398と計算された。 //ボックスの制約 k^2>0; // https://www.alglib.net/translator/man/manual.cpp.html#example_lsfit_d_nlfb const double x[22] = {28.98, 30.48, 30.98, 31.48, 31.98, 32.48, 32.98, 33.48, 33.98, 34.48, 34.98, 35.48, 35.98, 36.48, 36.98, 37.48, 37.98, 38.48, 38.98, 39.98, 40.98, 41.98}; double w[22] = {2, 8, 2, 2, 2, 1, 11, 12, 24, 12, 6, 12, 21, 7, 74, 51, 159, 385, 171, 109, 18, 18}; //ウェイト double y[22] = {8.26, 7.26, 5.71, 6.15, 5.90, 5.15, 5.03, 4.30, 4.15, 3.30, 2.90, 2.71, 1.96, 1.57, 1.27, 0.90, 0.70, 0.47, 0.33, 0.20, 0.09, 0.06}; const int n = ArraySize(x); double c[1] = {x0 / 100.}; CLSFitState state; CMatrixDouble xx(n, 1); for(int i = 0; i < n; i++) { xx[i].Set(0,x[i]); }; CLSFit::LSFitCreateWFGH(xx, y, w, c, n,1,1,state); const double epsf = 0.000001; const double epsx = 0.000001; const int maxits = 0; CLSFit::LSFitSetCond(state,epsf,epsx,maxits); double bndl[1] = {0.}; double bndu[1] = {x0 / 100.}; CLSFit::LSFitSetBC(state,bndl,bndu); CNDimensional_PFunc *Pfunc = new CNDimensional_PFunc; //Alglib::LSFitFit(state,Pfunc,,,rep,state); int info; CLSFitReport rep; CLSFit::LSFitResults(state,info,c,rep); }; //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ double func(const double _x, const double _k, const double _x0) { return((1. / 2.) * (pow(pow(_x, 2.) - 2 * _x0 * _x + pow(_x0, 2.) + 4 * pow(_k, 2.), 1. / 2.) + _x + _x0) - _x); }; //+------------------------------------------------------------------+ Arthur Albano 2022.01.11 02:23 #43 できました。 基本的にはAlgLib TestInterface.mqhからコピー&ペースト。 //+------------------------------------------------------------------+ //|AlgLibTest.mq5 //|著作権 2022, MetaQuotes Ltd.| //|https://www.mql5.com //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| スクリプト・プログラム開始機能| //+------------------------------------------------------------------+ #include <Math\Alglib\alglib.mqh> //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ void OnStart() { Print(TEST_LSFit_D_NLF()); }; //+------------------------------------------------------------------+ //| CNDimensional_PFuncからの派生クラス| //+------------------------------------------------------------------+ class CNDimensional_CX_1_Func : public CNDimensional_PFunc { public: //--- コンストラクタ、デストラクタ CNDimensional_CX_1_Func(void); ~CNDimensional_CX_1_Func(void); //--- メソッド virtual void PFunc(double &c[], double &x[], double &func, CObject &obj); }; //+------------------------------------------------------------------+ //| パラメータなしのコンストラクタ| //+------------------------------------------------------------------+ CNDimensional_CX_1_Func::CNDimensional_CX_1_Func(void) { } //+------------------------------------------------------------------+ //| デストラクタ| //+------------------------------------------------------------------+ CNDimensional_CX_1_Func::~CNDimensional_CX_1_Func(void) { } //+------------------------------------------------------------------+ //| このコールバックはf(c,x)を計算する。 //| X軸上の位置とcは調整可能なパラメータである。 //+------------------------------------------------------------------+ void CNDimensional_CX_1_Func::PFunc(double &c[], double &x[], double &func, CObject &obj) { double x0 = 37.74; func = (1.0/2.0)*(sqrt(x[0]*x[0] - 2.0*x[0]*x0 + x0*x0 + 4*c[0]) + x[0] + x0) - x[0]; } //+------------------------------------------------------------------+ //| 関数値のみを用いた非線形フィッティング //+------------------------------------------------------------------+ double TEST_LSFit_D_NLF() { //--- 変数の作成 CMatrixDouble x; double y[]; double c[]; double w[]; CObject obj; CNDimensional_CX_1_Func fcx1func; CNDimensional_Rep frep; x.Resize(22,1); //--- 初期化 x[0].Set(0,28.98); x[1].Set(0,30.48); x[2].Set(0,30.98); x[3].Set(0,31.48); x[4].Set(0,31.98); x[5].Set(0,32.48); x[6].Set(0,32.98); x[7].Set(0,33.48); x[8].Set(0,33.98); x[9].Set(0,34.48); x[10].Set(0,34.98); x[11].Set(0,35.48); x[12].Set(0,35.98); x[13].Set(0,36.48); x[14].Set(0,36.98); x[15].Set(0,37.48); x[16].Set(0,37.98); x[17].Set(0,38.48); x[18].Set(0,38.98); x[19].Set(0,39.98); x[20].Set(0,40.98); x[21].Set(0,41.98); //--- アロケーション ArrayResize(y,22); //--- 初期化 y[0]=8.26; y[1]=7.26; y[2]=5.71; y[3]=6.15; y[4]=5.90; y[5]=5.15; y[6]=5.03; y[7]=4.30; y[8]=4.15; y[9]=3.30; y[10]=2.90; y[11]=2.71; y[12]=1.96; y[13]=1.57; y[14]=1.27; y[15]=0.90; y[16]=0.70; y[17]=0.47; y[18]=0.33; y[19]=0.20; y[20]=0.09; y[21]=0.06; //--- アロケーション ArrayResize(c,1); //--- 初期化 c[0] = 0.5; //--- 変数の作成 int maxits=0; int info; CLSFitStateShell state; double diffstep=0.0001; //--- ウェイト・フィッティング CAlglib::LSFitCreateF(x,y,c,diffstep,state); //--- 関数呼び出し double epsf = 0.0000001; double epsx = 0.0000001; CAlglib::LSFitSetCond(state,epsf,epsx,maxits); //--- 関数呼び出し CAlglib::LSFitFit(state,fcx1func,frep,0,obj); //--- 関数呼び出し CLSFitReportShell rep; CAlglib::LSFitResults(state,info,c,rep); //--- ウェイトを使ったフィッティング //--- (重みを変えて、結果がどう変わるかを見ることができる) ArrayResize(w,22); //--- 初期化 w[0]=2; w[1]=8; w[2]=2; w[3]=2; w[4]=2; w[5]=1; w[6]=11; w[7]=12; w[8]=24; w[9]=12; w[10]=6; w[11]=12; w[12]=21; w[13]=7; w[14]=74; w[15]=51; w[16]=159; w[17]=385; w[18]=171; w[19]=109; w[20]=18; w[21]=18; //--- ウェイトをクリアする // ArrayFill(w,0,ArraySize(w),1); //--- 関数呼び出し CAlglib::LSFitCreateWF(x,y,w,c,diffstep,state); //--- 関数呼び出し CAlglib::LSFitSetCond(state,epsf,epsx,maxits); //--- 関数呼び出し CAlglib::LSFitFit(state,fcx1func,frep,0,obj); //--- 関数呼び出し CAlglib::LSFitResults(state,info,c,rep); return(c[0]); } //+------------------------------------------------------------------+ Yevgeniy Koshtenko 2022.06.03 23:00 #44 コンパイルできないので、新しいバージョンに戻してください!( Renat Fatkhullin 2022.06.05 10:25 #45 Koshtenko #: 最新バージョンに戻してください、コンパイルできません!( 標準バージョンのAlglibを使ってください。複素数のクラスが適応されています: Daying Cao 2022.10.14 16:51 #46 qingyouwei #: alglibライブラリを使用して2つの行列を乗算するには? alglibライブラリを使用して2つの行列を乗算するには? ALGLIBをコンパイルして渡すことはできますか? 私のコンパイルは、次のエラー: 'complex' - 予期しないトークンcomplex.mqh 37 8 'complex' - 予期しないトークン complex.mqh 37 8 '{' - 予想される名前 complex.mqh 38 3 'complex' - 予期しないトークン、おそらく型が見つからない? complex.mqh 79 1 'im' - 予期しないトークン、おそらく型が不明か complex.mqh 79 31 'im' - class type expected complex.mqh 79 31 '}' - セミコロンが予想されます complex.mqh 82 3 '}' - グローバル・スコープでは式は使用できません complex.mqh 82 3 'complex' - 予期しないトークン、おそらく型が見つからない? complex.mqh 86 1 'im' - 予期しないトークン、おそらく型が見つかりませんか? complex.mqh 86 41 'im' - 変数がすでに定義されている complex.mqh 86 41 以前の変数'im'の宣言を参照 complex.mqh 79 31 'im' - 期待されるクラス型 complex.mqh 86 Libraries: ALGLIB - Numerical Off-topic MT4/mql4 questions. 記事"ドンチャンチャネルを使った取引"についてのディスカッション Ivan Shishikin 2023.04.03 15:32 #47 SSA? ALGLIBにはあるが、MTにはまだない。 https://www.alglib.net/translator/man/manual.cpp.html#example_ssa_d_basic Stanislav Korotky 2023.04.03 20:59 #48 Ivan Shishikin #: SSA? ALGLIBにはあるが、MTにはまだない。 https://www.alglib.net/translator/man/manual.cpp.html#example_ssa_d_basic 標準ライブラリが追加されないうちは(すぐには追加されないかもしれないが)、既存のソース(1,2)でよいのでは? Ivan Shishikin 2023.04.04 10:03 #49 。しかし、それだけでは十分ではない。 Denis Kirichenko 2023.04.04 10:22 #50 Ivan Shishikin #: SSA? ALGLIBにはあるが、MTにはまだない。 https://www.alglib.net/translator/man/manual.cpp.html#example_ssa_d_basic 私の考えでは、それが登場する保証はまったくない.待つより、Cコードで直接使った方がいいのでは? 1234567 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
こんにちは!
私はALGLIBの全くの初心者です。スクリプトを使用してk²を計算することです。エクセルでは簡単にできるのですが,1つのボックス制約を持つ非線形方程式モデルをどのように使えばよいのかわかりません.
お読みいただきありがとうございました!
こんにちは!
私はALGLIBの全くの初心者です。スクリプトを使用してk²を計算することです。Excelでは簡単にできるのですが,1つのボックス制約を持つ非線形方程式モデルを使用する方法がわかりません.
読んでくれてありがとう!
今のところ、不細工に見える...。
できました。
基本的にはAlgLib TestInterface.mqhからコピー&ペースト。
最新バージョンに戻してください、コンパイルできません!(
標準バージョンのAlglibを使ってください。複素数のクラスが適応されています:
alglibライブラリを使用して2つの行列を乗算するには?
alglibライブラリを使用して2つの行列を乗算するには?
ALGLIBをコンパイルして渡すことはできますか?
私のコンパイルは、次のエラー: 'complex' - 予期しないトークンcomplex.mqh 37 8
'complex' - 予期しないトークン complex.mqh 37 8
'{' - 予想される名前 complex.mqh 38 3
'complex' - 予期しないトークン、おそらく型が見つからない? complex.mqh 79 1
'im' - 予期しないトークン、おそらく型が不明か complex.mqh 79 31
'im' - class type expected complex.mqh 79 31
'}' - セミコロンが予想されます complex.mqh 82 3
'}' - グローバル・スコープでは式は使用できません complex.mqh 82 3
'complex' - 予期しないトークン、おそらく型が見つからない? complex.mqh 86 1
'im' - 予期しないトークン、おそらく型が見つかりませんか? complex.mqh 86 41
'im' - 変数がすでに定義されている complex.mqh 86 41
以前の変数'im'の宣言を参照 complex.mqh 79 31
'im' - 期待されるクラス型 complex.mqh 86
SSA?
ALGLIBにはあるが、MTにはまだない。
https://www.alglib.net/translator/man/manual.cpp.html#example_ssa_d_basic
SSA?
ALGLIBにはあるが、MTにはまだない。
https://www.alglib.net/translator/man/manual.cpp.html#example_ssa_d_basic
標準ライブラリが追加されないうちは(すぐには追加されないかもしれないが)、既存のソース(1,2)でよいのでは?
SSA?
ALGLIBにはあるが、MTにはまだない。
https://www.alglib.net/translator/man/manual.cpp.html#example_ssa_d_basic
私の考えでは、それが登場する保証はまったくない.待つより、Cコードで直接使った方がいいのでは?