차이 미적분, 예. - 페이지 4

 
Yousufkhodja 술토노프 :

샘플이 N=100으로 증가하면 4차 방정식은 다음 결과를 제공합니다.



수학적 관점에서 검색의 경계는 매우 모호합니다. 어떻게 생겼는지 자세히 설명해 주시겠습니까?

 
니콜라이 셈코 :

네, 제가 틀렸습니다. 근사치를 실제로 사용하고 있다고 생각했습니다. 나는 당신의 코드를 자세히 살펴보았고 이것이 근사치가 아니라 아주 특이한 것이긴 하지만 평범한 평균이라는 것을 깨달았습니다. 그 후 보라색 선과 빨간색 선을 왼쪽으로 72바씩 이동하여 92막대의 빨간색 꼬리를 그리면 새 막대마다 그냥 다시 그려집니다. 파란색 선은 이동된 보라색 선에서 형성됩니다. 그리고 참고로 시가가 아닌 종가를 사용하는 것이 더 정확합니다. 닫기로 변경하면 틱마다 92개 막대의 빨간 꼬리가 점프하는 것을 즉시 확인할 수 있습니다.

이동 평균 을 왼쪽으로 이동하는 것은 유용성과 실제 적용을 가져오지 않습니다. 그리고 아름다움, 적합 및 속임수에만 사용됩니다.

근사화와 평활화(평균화)의 차이점을 이해해야 합니다. 근사하는 동안 일부 함수(다항식, 푸리에, 베지어, 스플라인 등)의 계수는 주어진 데이터 간격에서 계산되며 이러한 계수는 일반적으로 적어도 하나의 데이터 값이 변경되면 모두 변경되므로 함수는 관찰된 데이터의 전체 간격에 대해 다시 그려집니다. 그러나 평균화할 때 이전 데이터를 기준으로 현재 하나의 지점만 고려하므로 평균화(평활화)는 다시 그려지지 않지만 근사치와 달리 항상 데이터에 뒤쳐집니다.
그리고 코드에 차수가 없더라도 어느 정도 다항식과 뉴턴의 이항식이 무엇과 관련이 있는지 이해하지 못했습니다.

))

어, 그리고 이제 명시적인 Sin 함수가 없는 정현파도 있습니다.

사인에 대한 미분 방정식: https://dxdy.ru/post1247421.html#p1247421

      a1_Buffer[i]=((open[i] - Znach)    + 5061600 *a1_Buffer[i+ 1 ]- 7489800    *a1_Buffer[i+ 2 ]+ 4926624 *a1_Buffer[i+ 3 ]- 1215450 *a1_Buffer[i+ 4 ])/ 1282975 ;

      a2_Buffer[i]=   2701 *a1_Buffer[i]   - 5328    *a1_Buffer[i+ 1 ]    +   2628 *a1_Buffer[i+ 2 ];

      a4_Buffer[i+ 92 ]=a1_Buffer[i];   if (i<= 1 ) { for (z= 92 - 1 ;z>= 0 ;z--){        a4_Buffer[i+ 0 +z]=   5 *a4_Buffer[i+ 1 +z]  -   10 *a4_Buffer[i+ 2 +z]   +   10 *a4_Buffer[i+ 3 +z]  -   5 *a4_Buffer[i+ 4 +z]  +   1 *a4_Buffer[i+ 5 +z];  }}

       a3_Buffer[i+ 292 ]=a1_Buffer[i];   if (i<= 1 ) { for (z= 292 - 1 ;z>= 0 ;z--){         a3_Buffer[i+ 0 +z]=   2.998096443 *a3_Buffer[i+ 1 +z]  -   2.998096443 *a3_Buffer[i+ 2 +z]   +   1 *a3_Buffer[i+ 3 +z]   ;  }}

      a5_Buffer[i+ 92 ]=a1_Buffer[i];   if (i<= 1 ) { for (z= 92 - 1 ;z>= 0 ;z--){        a5_Buffer[i+ 0 +z]=   3 *a5_Buffer[i+ 1 +z]  -   3 *a5_Buffer[i+ 2 +z]   +   1 *a5_Buffer[i+ 3 +z]   ;  }}

       a6_Buffer[i+ 292 ]=a1_Buffer[i];   if (i<= 1 ) { for (z= 292 - 1 ;z>= 0 ;z--){         a6_Buffer[i+ 0 +z]=   3.998096443 *a6_Buffer[i+ 1 +z]  -   5.996192886 *a6_Buffer[i+ 2 +z]   +   3.998096443 *a6_Buffer[i+ 3 +z]  -   1 *a6_Buffer[i+ 4 +z] ;  }}

주기가 144인 정현파 계산이 강조 표시됩니다.첫 번째는 상수에 가깝고(그림에서 녹색) 두 번째는 기울어진 직선 근처(그림에서 빨간색)입니다.

Рекуррентная формула для синуса : Дискуссионные темы (М) - Страница 7
  • dxdy.ru
В принципе, используется и рекуррентное вычисление через возвратное уравнение второго порядка, и через комплексную экспоненту. Первое менее расходно по ресурсам (умножение и два сложения и две ячейки памяти) по сравнению со вторым (два умножения, четыре сложения, две ячейки памяти при постоянной частоте), но накапливается погрешность быстрее...
 

아마도 지점에 "참조 목록"을 즉시 첨부해야했을 것입니다. ))

이 주제에 대한 많은 문헌이 있으므로 취향에 맞는 몇 권의 얇은 책을 제공하겠습니다.

유한 차분의 미적분 Leonid Kuzmich Lakhtin

Markushevich A.I. 반환 시퀀스

 
알렉세이 판필로프 :

))

어, 그리고 이제 명시적인 Sin 함수가 없는 정현파도 있습니다.

사인에 대한 미분 방정식: https://dxdy.ru/post1247421.html#p1247421

주기가 144인 정현파 계산이 강조 표시됩니다.첫 번째는 상수에 가깝고(그림에서 녹색) 두 번째는 기울어진 직선 근처(그림에서 빨간색)입니다.


문헌에 대해 Alexey에게 감사드립니다. 재귀는 주의를 기울일 가치가 있으며 일부 기능이나 알고리즘의 속도를 높이는 데 성공적으로 적용될 수 있음을 완전히 인정하지만 사실을 말하자면 이에 대해 잘 모르겠습니다.
나는 단지 사물의 고유명사와 일반적으로 통용되는 용어를 사용하여 혼동이 없도록 해야 한다고 주장합니다. 제 생각에는 이 스레드의 시작 부분에서 재귀를 언급하는 것이 더 논리적일 것이며 보간, 근사 및 다항식은 말할 것도 없습니다. 그들은 귀하의 예에 표시되지 않습니다. 그리고 형식의 과도한 정확성으로 다른 사람들을 오도하지 않도록 표시기를 왼쪽으로 이동하는 데 중점을 두는 것이 더 정확할 것입니다. 모든 사람이 다른 사람의 코드를 이해하는 것을 좋아하지는 않지만 저도 그 코드에 빠졌습니다.

Alexey, 내가 이해하는 한 당신은 재귀 문제의 전문가입니다. 개인적으로 저는 이 참나무에 있습니다. 질문, 요청 및 제안이 있습니다. 푸리에 방법으로 근사 속도를 높이는 방법을 사용할 수 있습니까? 뭔가 가능하다고 합니다. 성공하면 그냥 와우!!! 실질적인 이점은 엄청날 것입니다. 저는 MT5에서 푸리에 외삽법을 사용한 근사의 예를 첨부하고 있습니다(훨씬 빠르고 단순히 더 좋습니다). 여기에서 이 예를 가져오고 마우스와 Ctrl 키(시작 위치 변경) 및 Shift(관찰 기간 변경과 동시에 고조파 수 변경)로 제어를 추가하여 명확성을 위해 약간 개선했습니다. 너 시도 할 수있어?

이 표시기의 제어는 다음과 같습니다. 마우스로 차트를 클릭한 후(창을 활성화하기 위해) Ctrl 키(및 떼기)를 누르고 마우스를 움직여 시작 위치를 변경하고 프로세스를 완료하려면 아무 키나 누르십시오(예외 Ctrl 및 Shift). 기간(근사 함수 계산을 위한 막대 범위)을 변경하는 Shift 키와 동일합니다.

파일:
Fourier.mq5  16 kb
 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

차이 미적분, 예.

니콜라이 셈코 , 2018.01.12 00:43


나는 단지 사물의 고유명사와 일반적으로 통용되는 용어를 사용하여 혼동이 없도록 해야 한다고 주장합니다. 제 생각에는 이 스레드의 시작 부분에서 재귀를 언급하는 것이 더 논리적일 것이며 보간, 근사 및 다항식은 말할 것도 없습니다. 그들은 귀하의 예에 표시되지 않습니다. 그리고 형식의 과도한 정확성으로 다른 사람들을 오도하지 않도록 표시기를 왼쪽으로 이동하는 데 중점을 두는 것이 더 정확할 것입니다. 모든 사람이 다른 사람의 코드를 이해하는 것을 좋아하지는 않지만 저도 그 코드에 빠졌습니다.


Nikolai, 메시지와 첨부된 표시기에 감사드립니다.

그리고 무엇보다도 용어와 이름에 대한 명확한 이해가 필요하다는 데 전적으로 동의합니다.

제 입장을 설명하겠습니다.

두 점에서 직선을 그리는 것이 가능합니다. 즉, 점 사이의 간격 내부(보간) 또는 점 사이의 간격 외부(외삽)에서 이 직선의 임의의 점을 찾는 것을 의미합니다.

3개의 점을 사용 하여 선형 이차 방정식으로 데카르트 좌표계로 표현되는 정사각형 포물선에 해당하는 단일 값 곡선을 그릴 수 있습니다. 즉, 극점 사이의 간격 내부(보간)와 이 간격 외부(외삽) 모두에서 이 곡선의 모든 점을 찾을 수도 있습니다. 동시에 이러한 점을 구성하는 법칙은 다항식으로 유지됩니다. 나는 또한 최소한 세 가지 점에서 우리가 사인파 발전 법칙을 가정한다면 명확한 사인파를 그리는 것이 가능하고, 그것이 존재한다고 가정하면 원을 그리는 것이 가능하다는 것을 덧붙일 것입니다.

따라서 3점에 대한 2차 다항식에 의한 보간 (우리의 경우 2개는 이전 기록을 축적하고 3개는 새로운 정보를 전달함) 4번째는 필수 (다른 법칙이 있을 수 있음) 및 충분 행동이나 과정의 정의.

물론 이에 대한 다른 조건을 제시하지 않는 경우입니다.

동시에 필요한 최소 수를 초과하는 값의 수에 대한 곡선을 작성해야 하는 경우 회귀를 포함하여 값에 가중치를 부여하는 통계적으로(또는 그렇지 않은 경우) 합리적인 방법은 다음과 같아야 한다는 데 전적으로 동의합니다. 사용된.
 
알렉세이 판필로프 :


Nikolai, 메시지와 첨부된 표시기에 감사드립니다.

그리고 무엇보다도 용어와 이름에 대한 명확한 이해가 필요하다는 데 전적으로 동의합니다.

제 입장을 설명하겠습니다.

두 점에서 직선을 그리는 것이 가능합니다. 즉, 점 사이의 간격 내부(보간) 또는 점 사이의 간격 외부(외삽)에서 이 직선의 임의의 점을 찾는 것을 의미합니다.

3개의 점을 사용하여 선형 2차 방정식으로 데카르트 좌표계로 표현되는 정사각형 포물선에 해당하는 단일 값 곡선을 그릴 수 있습니다. 즉, 극점 사이의 간격 내부(보간)와 이 간격 외부(외삽) 모두에서 이 곡선의 모든 점을 찾을 수도 있습니다. 동시에 이러한 점을 구성하는 법칙은 다항식으로 유지됩니다. 나는 또한 최소한 세 가지 점에서 우리가 사인파 발전 법칙을 가정한다면 명확한 사인파를 그리는 것이 가능하고, 그것이 존재한다고 가정하면 원을 그리는 것이 가능하다는 것을 덧붙일 것입니다.

따라서 3점에 대한 2차 다항식에 의한 보간 (우리의 경우 2개는 이전 기록을 축적하고 3개는 새로운 정보를 전달함) 4번째는 필수 (다른 법칙이 있을 수 있음) 및 충분 행동이나 과정의 정의.

물론 이에 대한 다른 조건을 제시하지 않는 경우입니다.

동시에 필요한 최소 수를 초과하는 값의 수에 대한 곡선을 작성해야 하는 경우 회귀를 포함하여 값에 가중치를 부여하는 통계적으로(또는 그렇지 않은 경우) 합리적인 방법은 다음과 같아야 한다는 데 전적으로 동의합니다. 사용된.

세 점에서 다항식 곡선을 만드는 방법은 최근에 이 코드 에서 구현했습니다. 숙지하는 것이 좋습니다.

그러나 코드에는 세 점에 대한 다항식 계산이 없습니다.

알렉세이 판필로프 :

차트에는 다음과 같이 표시됩니다.

숄더가 72인 4차 다항식에 의한 청-적색 선 보간(구간 내부의 점 찾기).

a1_Buffer[i]=((open[i] - Znach)    + 5061600 *a1_Buffer[i+ 1 ]- 7489800    *a1_Buffer[i+ 2 ]+ 4926624 *a1_Buffer[i+ 3 ]- 1215450 *a1_Buffer[i+ 4 ])/ 1282975 ;

가는 파란색 선은 숄더가 78인 2차 다항식에 의한 외삽(구간 외부의 점 찾기)입니다.

a2_Buffer[i]=   3160 *a1_Buffer[i]   - 6240    *a1_Buffer[i+ 1 ]    +   3081 *a1_Buffer[i+ 2 ];

빨간색, 이것은 4차 다항식을 구성하기 위한 선입니다. 마지막 막대의 시작점을 기준으로 다시 그려집니다.

a4_Buffer[i+ 92 ]=a1_Buffer[i];   if (i<= 10 ) { for (z= 92 - 1 ;z>= 0 ;z--){        a4_Buffer[i+ 0 +z]=   5 *a4_Buffer[i+ 1 +z]  -   10 *a4_Buffer[i+ 2 +z]   +   10 *a4_Buffer[i+ 3 +z]  -   5 *a4_Buffer[i+ 4 +z]  +   1 *a4_Buffer[i+ 5 +z];  }}


당신이 2차 다항식과 4차 다항식이라고 부르는 것은 그런 다항식이 아닙니다.

2차 다항식의 공식 이후:

Price = a+b*i+c*i²

4차 다항식의 공식:

Price = a+b*i+c*i²+d*i³+f*i⁴

어디

a,b,c,d,f - 계산할 계수

나는 - 막대 번호.

그리고 (예를 들어 2차 다항식이라고 부르는 것을 사용하여) 한 라인의 현재 포인트가 다른 라인의 마지막 세 포인트(i,i+1 및 i+2)에서 계산되는 곳에서 평균을 내는 멋진 방법이 있습니다. 다른 무게를 가진 선. 이것을 평균화(또는 평활화)라고 합니다. 평균화로 인해 발생하는 차트 지연을 숨기기 위해 차트를 왼쪽으로 72바 이동시킨 이유입니다.

예에서 세 점에 대한 다항식 계산이 명확하고 명확하게 보입니다.

 
니콜라이 셈코 :

예에서 세 점에 대한 다항식 계산이 명확하고 명확하게 보입니다.

당신의 지표는 매우 좋습니다.

4개에 대해 동일한 것이 있는 경우 이 스레드의 메시지 23에 있는 표시기의 회색 선의 3개 점에 부착하십시오.

이 라인(회색)은 버퍼에서 계산됩니다.

 a5_Buffer[i+ 92 ]=a1_Buffer[i];   if (i<= 1 ) { for (z= 92 - 1 ;z>= 0 ;z--){        a5_Buffer[i+ 0 +z]=   3 *a5_Buffer[i+ 1 +z]  -   3 *a5_Buffer[i+ 2 +z]   +   1 *a5_Buffer[i+ 3 +z]   ;  }}
1 *Y1- 3 *Y2+ 3 *Y3- 1 *Y4 =0 - 2차 포물선의 미분 방정식. 등거리 포인트용.
 
알렉세이 판필로프 :

당신의 지표는 매우 좋습니다.

4개에 대해 동일한 것이 있는 경우 이 스레드의 메시지 23에 있는 표시기의 회색 선의 3개 점에 부착하십시오.

이 라인(회색)은 버퍼에서 계산됩니다.

1 *Y1- 3 *Y2+ 3 *Y3- 1 *Y4 =0 - 2차 포물선의 미분 방정식. 등거리 포인트용.

댓글 에 MT4 코드 가 있습니다.

예, 회색 선은 다항식입니다. 그리고 이동 평균으로 그리는 메시지 2 의 92개 막대의 빨간색 꼬리도 다항식이며 다시 그려집니다. 그러나 당신은 또한 다른 모든 것을 다항식이라고 부르며 동시에 당신의 다항식이 다시 그려지지 않는다고 주장했습니다. 그리고 이것은 그렇지 않습니다. 그래서 스페이드를 스페이드라고 불러달라고 요청하는 것입니다.

그런데 제 예 에서 다항식에서 다음 점의 형성은 계수 계산을 통해 발생하며 이 알고리즘은 이전 값과의 차이도 적용하지만 "차이 계산"보다 빠릅니다.

 for (i= 1 ; i<=Bar[ 0 ]; i++) { ArcDownBuffer[i]=ArcDownBuffer[i- 1 ]+D2; D2+= 2 *C2;}

당신의 선택:

 for (z= 92 - 1 ;z>= 0 ;z--){        a5_Buffer[i+ 0 +z]=   3 *a5_Buffer[i+ 1 +z]  -   3 *a5_Buffer[i+ 2 +z]   +   1 *a5_Buffer[i+ 3 +z]   ;  }
 
니콜라이 셈코 :

댓글 에 MT4 코드 가 있습니다.

예, 회색 선은 다항식입니다. 그리고 이동 평균으로 그리는 메시지 2 의 92개 막대의 빨간색 꼬리도 다항식이며 다시 그려집니다. 그러나 당신은 또한 다른 모든 것을 다항식이라고 부르며 동시에 당신의 다항식이 다시 그려지지 않는다고 주장했습니다. 그리고 이것은 그렇지 않습니다. 그래서 스페이드를 스페이드라고 불러달라고 요청하는 것입니다.


예, 나는 2차 다항식에 동의합니다. 구성에 참여하는 4점만 연결되거나 4차 다항식의 경우 6점이 연결됩니다. 얻어지고 다시 그려지지 않은 전체 선은 물론 다항식이 아니며, 일정 정도의 다항식을 사용하여 고려되는 경우에만 구축됩니다.

가는 선은 다음 점이 구축되는 다항식만 시각화합니다.

조건에 합의한 것 같습니다. :)


그런데 제 예 에서 다항식에서 다음 점의 형성은 계수 계산을 통해 발생하며 이 알고리즘은 이전 값과의 차이도 적용하지만 "차이 계산"보다 빠릅니다.

 for (i= 1 ; i<=Bar[ 0 ]; i++) { ArcDownBuffer[i]=ArcDownBuffer[i- 1 ]+D2; D2+= 2 *C2;}

당신의 선택:

 for (z= 92 - 1 ;z>= 0 ;z--){        a5_Buffer[i+ 0 +z]=   3 *a5_Buffer[i+ 1 +z]  -   3 *a5_Buffer[i+ 2 +z]   +   1 *a5_Buffer[i+ 3 +z]   ;  }

당신은 속도에 대해 옳습니다.

당분간은 중요하지 않은 경우 성능 문제와 코드 작성 시 태만(주로 제 것입니다 :))에 대해 언급하지 않는 것이 좋습니다.

 
니콜라이 셈코 :

푸리에 방법으로 근사 속도를 높이는 방법을 사용할 수 있습니까? 뭔가 가능하다고 합니다. 성공하면 그냥 와우!!! 실질적인 이점은 엄청날 것입니다. 저는 MT5에서 푸리에 외삽법을 사용한 근사의 예를 첨부하고 있습니다(훨씬 빠르고 단순히 더 좋습니다). 여기에서 이 예를 가져오고 마우스와 Ctrl 키(시작 위치 변경) 및 Shift(관찰 기간 변경과 동시에 고조파 수 변경)로 제어를 추가하여 명확성을 위해 약간 개선했습니다. 너 시도 할 수있어?

이 표시기의 제어는 다음과 같습니다. 마우스로 차트를 클릭한 후(창을 활성화하기 위해) Ctrl 키(및 떼기)를 누르고 마우스를 움직여 시작 위치를 변경하고 프로세스를 완료하려면 아무 키나 누르십시오(예외 Ctrl 및 Shift). 기간(근사 함수 계산을 위한 막대 범위)을 변경하는 Shift 키와 동일합니다.


푸리에에 관해서는 주제가 풍부합니다. 관심이 있으면 주기적으로 터치하겠습니다.

대부분의 경우 주요 질문은 문제를 공식화할 때 발생합니다(다른 방법으로 인해). 이제 내가 이해하는 한 표시기는 푸리에 스펙트럼에서 가장 큰 진폭 주파수를 선택합니다.

이미 다항식으로 평균을 낸 선에 푸리에 표시기를 고정하는 아이디어가 있었습니다. 그의 외삽 판독 값이 더 천천히 변할 것이라는 의심이 있습니다.