라이브러리: ALGLIB - 수치 분석 라이브러리 - 페이지 5 1234567 새 코멘트 Arthur Albano 2021.10.07 17:28 #41 안녕하세요! 저는 ALGLIB을 완전히 처음 사용합니다. 그래서 스크립트를 사용하여 k²를 계산하는 다음 작업을 수행하려고합니다. Excel에서는 쉽게 할 수 있지만 상자형 제약 조건이 하나 있는 비선형 방정식 모델을 사용하는 방법을 모르겠습니다. 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}; //weights const double x0 = 37.74; //중심값 정리 //model 방정식 //y = (1/2)*((x^2-2x0x+x0^2+4k^2)^(1/2) + x+x0) - x //k^2는 Excel에서 솔버를 사용한 후 총 오차가 w(y-y0)^2의 최소 합계인 0.582018800686398로 계산되었습니다. //상자 제약 조건 k^2>0; }; 미리 읽어 주셔서 감사합니다! Arthur Albano 2021.10.09 22:36 #42 Arthur Albano #:안녕하세요! 저는 ALGLIB을 완전히 처음 사용합니다. 그래서 스크립트를 사용하여 k²를 계산하는 다음 작업을 수행하려고합니다. Excel에서는 쉽게 할 수 있지만 상자형 제약 조건이 하나 있는 비선형 방정식 모델을 사용하는 방법을 모르겠습니다. 미리 읽어 주셔서 감사합니다! 지금까지는 못생겨 보이지만... //+------------------------------------------------------------------+ //|AlgLibExample.mq5 | //|아서 알바노 | //| https://www.mql5.com/ko/users/arthuralbano | //+------------------------------------------------------------------+ #property copyright "Arthur Albano" #property link "https://www.mql5.com/ko/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; //중심값 정리 //model 방정식 //f(x,k²,x0) = (1/2)*((x^2-2x0x+x0^2+4k^2)^(1/2) + x+x0) - x //k^2는 Excel에서 솔버를 사용한 후 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}; //weights 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; //CAlglib::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는 |입니다. 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를 사용하나요? 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' - 예상되는 클래스 타입 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,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
안녕하세요!
저는 ALGLIB을 완전히 처음 사용합니다. 그래서 스크립트를 사용하여 k²를 계산하는 다음 작업을 수행하려고합니다. Excel에서는 쉽게 할 수 있지만 상자형 제약 조건이 하나 있는 비선형 방정식 모델을 사용하는 방법을 모르겠습니다.
미리 읽어 주셔서 감사합니다!
안녕하세요!
저는 ALGLIB을 완전히 처음 사용합니다. 그래서 스크립트를 사용하여 k²를 계산하는 다음 작업을 수행하려고합니다. Excel에서는 쉽게 할 수 있지만 상자형 제약 조건이 하나 있는 비선형 방정식 모델을 사용하는 방법을 모르겠습니다.
미리 읽어 주셔서 감사합니다!
지금까지는 못생겨 보이지만...
완료되었습니다.
기본적으로 AlgLib TestInterface.mqh에서 복사하여 붙여넣기합니다.
컴파일이 되지 않으니 최신 버전으로 재설정하세요!(
오랫동안 단말기와 함께 제공되어 온 표준 버전의 Alglib을 사용하세요. 복소수 클래스가 적용되어 있습니다:
두 행렬을 곱하려면 어떻게 라이브러리 알글립을 사용하나요?
두 행렬을 곱하려면 어떻게 라이브러리 ALGLIB를 사용하나요?
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' - 예상되는 클래스 타입 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 코드에서 직접 사용하는 것이 더 낫지 않을까요?