Enterpolasyon, yaklaşıklık ve diğerleri (paket alglib)

 

F-th'i keyfi ayarlarla enterpolasyona ihtiyaç vardı, spline'ları seçtim

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

Düğüm noktalarının sayısı nedeniyle farklı enterpolantlar alacağımı doğru anlıyorum, başka ne değişebilir?

Ve ikinci soru, orijinal serinin birçok farklı enterpolasyonunu oluşturmam gerekiyorsa , listeden enterpolasyon için seçmenin daha iyi olduğu (değişkenlik önemlidir)

 
Maxim Dmitrievsky :

F-th'i keyfi ayarlarla enterpolasyona ihtiyaç vardı, spline'ları seçtim

Düğüm noktalarının sayısı nedeniyle farklı enterpolantlar alacağımı doğru anlıyorum, başka ne değişebilir?

Ve ikinci soru, orijinal serinin birçok farklı enterpolasyonunu oluşturmam gerekirse , listeden enterpolasyon için seçmenin daha iyi olduğu (değişkenlik önemlidir)

Seçmek için daha iyi olan çok zor bir sorudur. Vapnik'in "Bağımlılık Kurtarma için Algoritmalar ve Programlar" kitabında ampirik risk minimizasyonu adı verilen bir yaklaşım geliştirilmiştir. 1972'ye benziyor.

 
Vladimir :

Seçmek için daha iyi olan çok zor bir sorudur. Vapnik'in "Bağımlılık Kurtarma için Algoritmalar ve Programlar" kitabında ampirik risk minimizasyonu adı verilen bir yaklaşım geliştirilmiştir. 1972'ye benziyor.

olabilirlik maksimizasyonu/ampirik risk minimizasyonu, anladığım kadarıyla, karşılık gelen algoritmaların genel adıdır. Algoritmanın kendisine ihtiyacım yok, sadece eğrileri, tercihen hızlı ve değişken bir şekilde, yeni noktalarda interpolant değerleri bulma yeteneği ile değiştirmem gerekiyor (spline paketi ikincisine izin veriyor)

 
Başlangıç olarak, enterpolasyonun ne olduğunu anlamak faydalı olacaktır.
 
Maxim Dmitrievsky :

olabilirlik maksimizasyonu/ampirik risk minimizasyonu, anladığım kadarıyla, karşılık gelen algoritmaların genel adıdır. Algoritmanın kendisine ihtiyacım yok, sadece eğrileri, tercihen hızlı ve değişken bir şekilde, yeni noktalarda interpolant değerleri bulma yeteneği ile değiştirmem gerekiyor (spline paketi ikincisine izin veriyor)

Ve maksimum olasılık yöntemi ve en aza indirme (hatırlanan, ampirik değil, ortalama) risk - isimler algoritmalar değil, hedefler belirlerken hedef belirleme yöntemleridir. Hedef ulaşılabilir ise, hedefe mutlaka karşılık gelen, belirli durumlarda başarısının uygulanması olan bazı algoritmalar üretir. Bunları başarmak için herhangi bir hedefe veya algoritmaya ihtiyacınız yoksa, enterpolasyon işlevlerini seçme sorunu için hiçbir öneri verilemez. Kalbin söylediği gibi seçmeye devam ediyor ...

 
Açıkçası, rastgele de iyi bir şeydir. Yani kimse benzer sorunları çözmedi. Görselleştirin ve görün.
 
Maxim Dmitrievsky :

F-th'i keyfi ayarlarla enterpolasyona ihtiyaç vardı, spline'ları seçtim

Düğüm noktalarının sayısı nedeniyle farklı enterpolantlar alacağımı doğru anlıyorum, başka ne değişebilir?

Ve ikinci soru, orijinal serinin birçok farklı enterpolasyonunu oluşturmam gerekirse , listeden enterpolasyon için seçmenin daha iyi olduğu (değişkenlik önemlidir)

Bir tüccar için en değerli şey enterpolasyon veya yaklaşım değil, ekstrapolasyondur.

Spline'lar ekstrapolasyon için uygun değildir.

Polinom yaklaşımı-ekstrapolasyon konusunda çok fazla deneyimim ve anlayışım var. Daha az deneyim - Fourier.
Polinom ve Fourier yöntemleriyle yapılan ekstrapolasyonlar kesinlikle farklı bir yapıya sahiptir. Fourier ekstrapolasyonu, periyodik doğası nedeniyle yalnızca düz bir piyasada uygulanabilir (bu çizgi, farklı frekans, faz ve genliklerdeki sinüzoidlerin toplamıdır) ve her zaman geri gelecektir. Aksine, polinom ekstrapolasyonu bir eğilim için iyidir, çünkü güç yasası doğası gereği her zaman aşağı veya yukarı "uçmaya" çalışır.
Bu nedenle, ekstrapolasyonda iyi sonuçlar için bu iki yöntemi birleştirmek mantıklıdır.

Programcılar için özellikle ilgi çekici olan, bu tür bir yaklaşımın optimizasyona ve çok hızlı hesaplama olasılığına çok iyi uyması gerçeğinden dolayı polinom yaklaşımıdır. Katsayıları hesaplamak için döngülerden çıkmayı başardım.
Ayrıca tüm yaklaşım türlerinin her yeni nokta ile yeniden çizim çizgileri oluşturduğunu unutmamak gerekir. Yalnızca yaklaşma çizgisinden gelen izleyici yeniden çizilemez.

Fourier'den farklı olarak polinom yaklaşımının tek bir çözümü vardır. Bu, yeniden çizilmeyen benzersiz hareketli ortalamalar oluşturmanıza olanak tanır:

 
Maxim Dmitrievsky :
Açıkçası bu da iyi bir şey. Yani kimse benzer sorunları çözmedi. Görselleştirin ve görün.

Kimse karar vermedi - yanlış. Tüm enterpolasyon yöntemlerinin teorik gerekçeleri ve kural olarak açık bir hedefi vardır. Örneğin, kusurlu iki kübik yivler, yivin düğüm noktalarında tahtaya sürülen saplamalardan geçen bir cetvelin elastik bükülmesinin potansiyel enerjisini en aza indirir. Bu şekilde, bir geminin konturları veya bir kanat profili ile bir çizimdeki bir nokta tablosundan düzgün (3'ten az kusur) bir eğri elde edildi. Aynı yivler, mukavemet matındaki bir çoklu destek kirişinin sapmasını tasvir eder. Sıklıkla amaç, enterpolasyon düğümlerindeki koordinat sapmalarının toplamını en aza indirmektir.İnterpolasyonun sonuçlarını farklı hedeflerle karşılaştırmak için, herhangi bir enterpolasyon yöntemi için hesaplanabilen bir genelleme amacına, bir kritere ihtiyacımız var. Belirlenen katsayı sayısının dikkate alınması esasına dayanır. Kabaca söylemek gerekirse, polinomun derecesini 3'ten 7'ye yükselten bir polinom yaklaşımı, kare sapmaların toplamını %20 oranında azaltırsa, o zaman 7'den ziyade 3 derecesini seçmek daha mantıklıdır. Radyo mühendisliğinde bir analog, kafam karışmıyorsa, filtre kesme frekansıdır.

 
Nikolai Semko :

Bir tüccar için en değerli şey enterpolasyon veya yaklaşıklık değil, ekstrapolasyondur.

Spline'lar ekstrapolasyon için uygun değildir.

Polinom yaklaşımı-ekstrapolasyon konusunda geniş deneyime ve anlayışa sahibim. Daha az deneyim - Fourier.
Polinom ve Fourier yöntemleriyle yapılan ekstrapolasyonlar kesinlikle farklı bir yapıya sahiptir. Fourier ekstrapolasyonu, periyodik doğası nedeniyle yalnızca düz bir piyasada uygulanabilir (bu çizgi, farklı frekans, faz ve genliklerdeki sinüzoidlerin toplamıdır) ve her zaman geri gelecektir. Aksine, polinom ekstrapolasyonu bir eğilim için iyidir, çünkü güç yasası doğası gereği her zaman aşağı veya yukarı "uçmaya" çalışır.
Bu nedenle, ekstrapolasyonda iyi sonuçlar için bu iki yöntemi birleştirmek mantıklıdır.

Programcılar için özellikle ilgi çekici olan, bu tür bir yaklaşımın optimizasyona ve çok hızlı hesaplama olasılığına çok iyi uyması gerçeğinden dolayı polinom yaklaşımıdır. Katsayıları hesaplamak için döngülerden çıkmayı başardım.
Ayrıca tüm yaklaşım türlerinin her yeni nokta ile yeniden çizim çizgileri oluşturduğunu unutmamak gerekir. Yalnızca yaklaşma çizgisinden gelen izleyici yeniden çizilemez.

Fourier'den farklı olarak polinom yaklaşımının tek bir çözümü vardır. Bu, benzersiz yeniden çizilemeyen hareketli ortalamalar oluşturmanıza olanak tanır:

İyi. Tahmin edecek hiçbir şeyim yok, enterpolasyona ihtiyacım var. Daha sonra böyle bir ekstrapolasyona dayalı bir tahminde bulunmanın bir anlamı olmadığı anlamında. Bu Çizginin, mavi çizginiz gibi, mümkün olduğunca güçlü olması gerekir. Ve böylece yeni noktalarda bir çözüm elde etmek mümkün olacak, evet (mevcut formüle göre yeniden hesaplamadan).

Burada sadece neyin daha iyi kullanılacağını sordu - polinomlar veya spline'lar veya bir tür alt tür. Ve belki 10. derece de harika olurdu.

 
Vladimir :

Kimse karar vermedi - yanlış. Tüm enterpolasyon yöntemlerinin kendi teorik gerekçeleri ve kural olarak açık bir hedefi vardır. Örneğin, kusurlu iki kübik yivler, yivin düğüm noktalarında tahtaya sürülen saplamalardan geçen bir cetvelin elastik bükülmesinin potansiyel enerjisini en aza indirir. Bu şekilde, bir geminin konturları veya bir kanat profili ile bir çizimdeki bir nokta tablosundan düzgün (3'ten az kusur) bir eğri elde edildi. Aynı yivler, mukavemet matındaki bir çoklu destek kirişinin sapmasını tasvir eder. Sıklıkla amaç, enterpolasyon düğümlerindeki koordinat sapmalarının toplamını en aza indirmektir.İnterpolasyonun sonuçlarını farklı hedeflerle karşılaştırmak için, herhangi bir enterpolasyon yöntemi için hesaplanabilen bir genelleme amacına, bir kritere ihtiyacımız var. Belirlenen katsayı sayısının dikkate alınması esasına dayanır. Kabaca söylemek gerekirse, polinomun derecesini 3'ten 7'ye yükselten bir polinom yaklaşımı, kare sapmaların toplamını %20 oranında azaltırsa, o zaman 7'den ziyade 3 derecesini seçmek daha mantıklıdır. Radyo mühendisliğinde bir analog, kafam karışmıyorsa, filtre kesme frekansıdır.

Sadece onunla yapacağım her şeyi açıklamaya çalışırsam, o zaman yine birkaç sayfalık deneyim olur :) Değişkenliğe, farklı derecelerde polinomlara, ızgara noktalarının sayısına vb. ihtiyacımız var.

 
Maxim Dmitrievsky :

İyi. Tahmin edecek hiçbir şeyim yok, enterpolasyona ihtiyacım var. Daha sonra böyle bir ekstrapolasyona dayalı bir tahminde bulunmanın bir anlamı olmadığı anlamında. Bu Çizginin, mavi olanınız gibi, mümkün olduğunca güçlü olması gerekir. Ve böylece yeni noktalarda bir çözüm elde etmek mümkün olacak, evet (mevcut formüle göre yeniden hesaplamadan).

Burada sadece neyin daha iyi kullanılacağını sordu - polinomlar veya spline'lar veya bir tür alt tür. Ve belki 10. derece de harika olurdu.

enterpolasyon mu? Elbette? Bir yaklaşım değil mi? Peki ya yeniden çizilemez?
Her kene enterpolasyonu yapmayacaksınız.

Yeniden çizmeden ara düğümler (örneğin ZigZag düğümleri) üzerinde enterpolasyona ihtiyacınız varsa, tüm nokta bir sonraki düğümün nerede olacağıdır.

Yalnızca bir durumda yeniden çizilemeyen net bir ZigZag oluşturabilirsiniz - bir zaman makineniz varsa. Mevcut çubuğun bir ekstremum olduğunu bir zaman makinesi olmadan asla belirleyemezsiniz.

Zaman zaman forumda "kuyruk çizimleri" dediğim birileri çıkıyor.

Bütün mesele bu at kuyruğunda.

Bu türün klasiği, SMA'yı yarım periyot sola kaydırmak ve sanki şans eseri bu yarım periyotları bir dereceye kadar polinomla çizmektir. Örneğin - https://www.mql5.com/en/forum/224374 . Muhtemelen bunu zaten görmüşsünüzdür.

Spline'ları kullanarak zikzak ekstrema ile çok güzel bir enterpolasyon yapabilirsiniz, ancak son iki veya üç düğüm arasında bir yeniden çizim olacağını açıkça anlamanız gerekir. O olmadan olmaz!

Yeniden çizme olmazsa, bu artık bir enterpolasyon değil, yaklaşık bir çizgiden iz izi dediğim şeydir (enterpolasyon değil!).
Polinomlara ek olarak, henüz anlaşılır bir şey göremiyorum.
Daha yüksek dereceli bir polinom örneğini göstermek için özellikle bir gif kaydettim (10), böylece istediğimizden ne kadar daha az "güzel" olduğuna dair bir anlayış var :))

Mor-mavi çizgi yeniden çizilemez. Mor renk - polinomu "aşağıya bakar", mavi - polinomu "yukarıya bakar".
Ayrıca, çift, yüksek doğruluk derecesine sahip polinomları hesaplamak için yeterli değildir. Daha yüksek hassasiyetli türlere sahip özel kitaplıklar kullanmanız gerekecektir. GIF üzerinde "izleyici"nin küçük periyotlarda "zıplamaya" başlaması, çifte doğruluk olmamasının nedenidir.
Ancak kişisel olarak, 5'ten büyük dereceli polinomların pratik uygulamasını henüz görmüyorum.