보간, 근사 및 기타(패키지 alglib)

 

임의의 설정으로 f-th를 보간해야 할 필요가 있었고 스플라인을 선택했습니다.

This subroutine builds cubic spline interpolant.

INPUT PARAMETERS:
     X           -   spline nodes, array[ 0 ..N- 1 ].
    Y           -   function values, array[ 0 ..N- 1 ].

OPTIONAL PARAMETERS:
    N           -   points count:
                    * N>= 2
                    * if given, only first N points are used to build spline
                    * if not given, automatically detected from X/Y sizes
                      (len(X) must be equal to len(Y))
    BoundLType  -   boundary condition type for the left boundary
    BoundL      -   left boundary condition (first or second derivative,
                    depending on the BoundLType)
    BoundRType  -   boundary condition type for the right boundary
    BoundR      -   right boundary condition (first or second derivative,
                    depending on the BoundRType)

OUTPUT PARAMETERS:
    C           -   spline interpolant

ORDER OF POINTS

Subroutine automatically sorts points, so caller may pass unsorted array.

SETTING BOUNDARY VALUES:

The BoundLType/BoundRType parameters can have the following values:
    * - 1 , which corresonds to the periodic (cyclic) boundary conditions.
          In this case :
          * both BoundLType and BoundRType must be equal to - 1 .
          * BoundL/BoundR are ignored
          * Y[last] is ignored (it is assumed to be equal to Y[first]).
    *   0 , which  corresponds  to  the  parabolically   terminated  spline
          (BoundL and/or BoundR are ignored).
    *   1 , which corresponds to the first derivative boundary condition
    *   2 , which corresponds to the second derivative boundary condition
    *  by default , BoundType= 0 is used

노드 포인트의 수로 인해 다른 보간법을 얻을 수 있다는 것을 정확히 이해합니다. 그 외에 무엇이 달라질 수 있습니까?

그리고 두 번째 질문은 원본 시리즈의 다양한 보간을 구축해야 하는 경우 목록 에서 보간을 위해 선택하는 것이 더 나은 것입니다(가변성이 중요함)

 
Maxim Dmitrievsky :

임의의 설정으로 f-th를 보간해야 할 필요가 있었고 스플라인을 선택했습니다.

노드 포인트의 수로 인해 다른 보간법을 얻을 수 있다는 것을 정확히 이해합니다. 그 외에 무엇이 달라질 수 있습니까?

그리고 두 번째 질문은 원본 시리즈의 다양한 보간을 구축해야 하는 경우 목록 에서 보간을 위해 선택하는 것이 더 나은 것입니다(가변성이 중요함)

선택하는 것이 더 나은 것은 매우 어려운 질문입니다. 경험적 위험 최소화라고 하는 한 가지 접근 방식은 Vapnik의 책 "종속성 복구를 위한 알고리즘 및 프로그램"에서 개발되었습니다. 1972년 같네요.

 
Vladimir :

선택하는 것이 더 나은 것은 매우 어려운 질문입니다. 경험적 위험 최소화라고 하는 한 가지 접근 방식은 Vapnik의 책 "종속성 복구를 위한 알고리즘 및 프로그램"에서 개발되었습니다. 1972년 같네요.

내가 이해하는 가능성 최대화/경험적 위험 최소화는 해당 알고리즘의 일반적인 이름일 뿐입니다. 알고리즘 자체는 필요하지 않습니다. 새로운 점에서 보간 값을 찾을 수 있는 기능으로 곡선을 가급적 빠르고 다양하게 수정하면 됩니다(스플라인 패키지는 후자를 허용함).

 
우선 보간이 무엇인지 이해하는 것이 좋습니다.
 
Maxim Dmitrievsky :

내가 이해하는 가능성 최대화/경험적 위험 최소화는 해당 알고리즘의 일반적인 이름일 뿐입니다. 알고리즘 자체는 필요하지 않습니다. 새로운 점에서 보간 값을 찾을 수 있는 기능으로 곡선을 가급적 빠르고 다양하게 수정하면 됩니다(스플라인 패키지는 후자를 허용함).

그리고 최대 가능성 및 최소화 방법(경험적이 아닌 평균) 위험 - 이름은 알고리즘이 아니라 목표를 설정할 때 목표 설정 방법입니다. 목표가 달성 가능한 경우 목표에 반드시 일치하는 일부 알고리즘을 생성하고 특정 경우에 달성을 구현합니다. 목표 달성을 위한 알고리즘이나 목표가 필요하지 않은 경우 보간 기능 선택 문제에 대한 권장 사항이 제공되지 않습니다. 마음이 말하는 것처럼 선택해야합니다 ...

 
물론 그것도 좋은 일입니다. 그래서 아무도 비슷한 문제를 해결하지 못했습니다. 시각화하고 봅니다.
 
Maxim Dmitrievsky :

임의의 설정으로 f-th를 보간해야 할 필요가 있었고 스플라인을 선택했습니다.

노드 포인트의 수로 인해 다른 보간법을 얻을 수 있다는 것을 정확히 이해합니다. 그 외에 무엇이 달라질 수 있습니까?

그리고 두 번째 질문은 원래 시리즈의 다양한 보간을 구축해야 하는 경우 목록 에서 보간을 위해 선택하는 것이 더 나은 것입니다(변동성이 중요함)

트레이더에게 가장 소중한 것은 보간이나 근사가 아니라 외삽입니다.

스플라인은 외삽에 적합하지 않습니다.

저는 다항식 근사-외삽에 대한 많은 경험과 이해를 가지고 있습니다. 적은 경험 - 푸리에.
다항식 및 푸리에 방법에 의한 외삽은 완전히 다른 특성을 갖습니다. 푸리에 외삽법은 주기적인 특성으로 인해 평평한 시장에서만 적용할 수 있으며(이 선은 다양한 주파수, 위상 및 진폭의 정현파의 합임) 항상 돌아올 것입니다. 반대로 다항식 외삽법은 추세에 적합합니다. 거듭제곱법칙 특성으로 인해 항상 아래로 또는 위로 "날아가려고" 시도합니다.
따라서 외삽에서 좋은 결과를 얻으려면 이 두 가지 방법을 결합하는 것이 좋습니다.

프로그래머가 특히 관심을 갖는 것은 이러한 유형의 근사가 최적화 및 매우 빠른 계산 가능성에 매우 적합하기 때문에 다항식 근사입니다. 계수를 계산하기 위해 루프에서 벗어날 수 있었습니다.
모든 유형의 근사는 각각의 새로운 점으로 다시 그리기 선을 생성한다는 사실을 잊지 말아야 합니다. 근사 라인의 트레이서만 다시 그릴 수 없습니다.

다항식 근사는 푸리에와 달리 해가 하나만 있습니다. 이를 통해 다시 그릴 수 없는 고유한 이동 평균을 만들 수 있습니다.

 
Maxim Dmitrievsky :
분명히 무작위도 좋은 것입니다. 그래서 아무도 비슷한 문제를 해결하지 못했습니다. 시각화하고 보십시오.

아무도 결정하지 않았습니다. 모든 보간 방법에는 이론적 정당성이 있으며 일반적으로 명확한 목표가 있습니다. 예를 들어, 결함 2의 3차 스플라인은 스플라인의 노드에서 보드로 구동되는 스터드를 통과하는 자의 탄성 굽힘의 잠재적 에너지를 최소화합니다. 이러한 방식으로 선박의 윤곽 또는 날개 프로파일이 있는 도면의 점 표에서 부드러운(결함 3 미만) 곡선을 얻었습니다. 동일한 스플라인은 강도 매트에서 다중 지지 빔의 처짐을 나타냅니다. 매우 자주 목표는 보간 노드에서 좌표 편차의 합을 최소화하는 것입니다.보간 결과를 다른 목표와 비교하려면 모든 보간 방법에 대해 계산할 수 있는 기준인 일반화 목표가 필요합니다. 결정된 계수의 수를 고려한 것입니다. 대략적으로 말하면, 다항식의 차수가 3에서 7로 증가하는 다항식 근사가 편차 제곱합의 합을 20% 줄이면 7보다 차수 3을 선택하는 것이 더 합리적입니다. 무선 공학의 유사, 내가 혼란스럽지 않다면 필터 차단 주파수입니다.

 
Nikolai Semko :

트레이더에게 가장 소중한 것은 보간이나 근사가 아니라 외삽입니다.

스플라인은 외삽에 적합하지 않습니다.

저는 다항식 근사-외삽에 대한 많은 경험과 이해를 가지고 있습니다. 적은 경험 - 푸리에.
다항식 및 푸리에 방법에 의한 외삽은 완전히 다른 특성을 갖습니다. 푸리에 외삽법은 주기적인 특성으로 인해 평평한 시장에서만 적용할 수 있으며(이 선은 다양한 주파수, 위상 및 진폭의 정현파의 합임) 항상 돌아올 것입니다. 반대로 다항식 외삽법은 추세에 적합합니다. 거듭제곱법칙 특성으로 인해 항상 아래로 또는 위로 "날아가려고" 합니다.
따라서 외삽에서 좋은 결과를 얻으려면 이 두 가지 방법을 결합하는 것이 좋습니다.

프로그래머가 특히 관심을 갖는 것은 이러한 유형의 근사가 최적화 및 매우 빠른 계산 가능성에 매우 적합하기 때문에 다항식 근사입니다. 계수를 계산하기 위해 루프에서 벗어날 수 있었습니다.
또한 모든 유형의 근사는 새로운 점마다 다시 그리기 선을 생성한다는 사실을 잊지 말아야 합니다. 근사 라인의 트레이서만 다시 그릴 수 없습니다.

다항식 근사는 푸리에와 달리 해가 하나만 있습니다. 이를 통해 다시 그리지 않은 고유한 이동 평균을 만들 수 있습니다.

괜찮은. 외삽할 것이 없습니다. 내삽이 필요합니다. 나중에 그런 외삽을 바탕으로 예측을 한다는 것은 말이 안 된다는 의미에서. 이 선은 파란색 선처럼 좌우로 최대한 강력해야 합니다. 그리고 새로운 점에서 솔루션을 얻을 수 있도록 예(이미 기존 공식에 따라 다시 계산하지 않고).

여기서 그는 다항식이나 스플라인 또는 일종의 아종 중에서 사용하는 것이 더 나은지 묻습니다. 그리고 아마도 10도도 멋질 것입니다.

 
Vladimir :

아무도 결정하지 않았습니다. 모든 보간 방법에는 이론적 정당성이 있으며 일반적으로 명확한 목표가 있습니다. 예를 들어, 결함 2의 3차 스플라인은 스플라인의 노드에서 보드로 구동되는 스터드를 통과하는 자의 탄성 굽힘의 잠재적 에너지를 최소화합니다. 이러한 방식으로 선박의 윤곽 또는 날개 프로파일이 있는 도면의 점 표에서 부드러운(결함 3 미만) 곡선을 얻었습니다. 동일한 스플라인은 강도 매트에서 다중 지지 빔의 처짐을 나타냅니다. 매우 자주 목표는 보간 노드에서 좌표 편차의 합을 최소화하는 것입니다.보간 결과를 다른 목표와 비교하려면 모든 보간 방법에 대해 계산할 수 있는 기준인 일반화 목표가 필요합니다. 결정된 계수의 수를 고려한 것입니다. 대략적으로 말하면, 다항식의 차수가 3에서 7로 증가하는 다항식 근사가 편차 제곱합의 합을 20% 줄이면 7보다 차수 3을 선택하는 것이 더 합리적입니다. 무선 공학의 유사, 내가 혼란스럽지 않다면 필터 차단 주파수입니다.

제가 하려고 하는 모든 것을 설명하려고 하면 다시 몇 페이지의 경험이 됩니다. :) 가변성, 다양한 다항식, 그리드 포인트 수 등이 필요합니다.

 
Maxim Dmitrievsky :

괜찮은. 외삽할 것이 없습니다. 내삽이 필요합니다. 그런 외삽을 바탕으로 나중에 예측하는 것은 의미가 없다는 의미에서. 이 선은 파란색 선처럼 좌우로 최대한 강력해야 합니다. 그리고 새로운 점에서 솔루션을 얻을 수 있도록 예(이미 기존 공식에 따라 다시 계산하지 않고).

여기에서 그는 다항식이나 스플라인 또는 일종의 아종과 같이 사용하는 것이 더 나은지 물었습니다. 그리고 아마도 10도도 멋질 것입니다.

보간인가요? 확신하는? 근사치 아님? 그리고 다시 그릴 수 없는 것은 어떻습니까?
모든 틱을 보간하지 않습니다.

다시 그리지 않고 중간 노드(예: 지그재그 노드)에 대한 보간이 필요한 경우 전체 포인트는 다음 노드가 있는 위치입니다.

타임머신이 있는 경우 한 가지 경우에만 다시 그릴 수 없는 지그재그를 만들 수 있습니다. 타임머신 없이는 현재 막대가 극한값인지 결정할 수 없습니다.

때때로 누군가 포럼에 나타납니다. 저는 "꼬리 그림"이라고 부릅니다.

요점은 이 포니테일에 있습니다.

이 장르의 고전은 SMA를 마침표의 반만큼 왼쪽으로 이동하고, 마치 우연인 것처럼 이 반을 어느 정도의 다항식으로 그리는 것입니다. 예: https://www.mql5.com/ru/forum/224374 . 아마 이미 본 적이 있을 것입니다.

스플라인을 사용하여 지그재그 극값으로 매우 아름다운 보간을 만들 수 있지만 마지막 두 개 또는 세 개의 노드 사이에 다시 그리기가 있음을 분명히 이해해야 합니다. 그녀 없이는 안돼!

다시 그리지 않으면 이것은 더 이상 보간이 아니라 근사선(보간이 아님)에서 추적 추적이라고 부르는 것입니다.
다항식 외에도 아직 이해할 수 있는 것은 없습니다.
여기에 나는 더 높은 차수(10)의 다항식의 예를 보여주기 위해 특별히 gif를 기록했습니다. 그래서 우리가 원하는 것보다 얼마나 "아름답지"한지 이해할 수 있습니다. :))

보라색-파란색 선은 다시 그릴 수 없습니다. 보라색 - "아래를 내려다보는" 다항식, 파란색 - "위를 보는" 다항식.
게다가, double은 정확도가 높은 다항식을 계산하기에 충분하지 않습니다. 더 높은 정밀도 유형의 특수 라이브러리를 사용해야 합니다. GIF에서 "추적자"가 짧은 시간에 "점프"하기 시작한다는 사실이 이중 정확도가 부족한 이유입니다.
그러나 개인적으로 5차 이상의 다항식의 실제 적용은 아직 보지 못했습니다.

사유: