Gereksinimlerle tutarlı en genel çözümü sunmama izin verin: bu size en iyi seçim ve optimizasyonu sağlayacak esnekliği sağlayacaktır.
"S-şeklini" yukarı doğru içbükey bir parçadan ve aşağı doğru içbükey bir parçadan oluşan monoton olarak artan bir eğri olarak yorumlayabiliriz (çünkü dönüşüm bire bir olmalıdır). Diğer yarısı (sol yarısı içbükey yukarıdayken) bu tür dönüşümleri tersine çevirerek elde edildiğinden, sol yarıyı içbükey hale getirmeye odaklanabiliriz.
Dönüşümden bu yana f ayırt edilebilir olması gerekiyordu, bu nedenle azalan bir türevi olmalı f'sol yarısında ve artan bir türev sağ yarısında. Ne olursa olsun, türev negatif olmamalıdır ve sadece izole bir noktada sıfır olabilir (eğer varsa: türevin minimum değeri dönüşümün en az eğimini verir).
Türevin ayırt edilebilir olması gerekli değildir, ancak pratik bir konu olarak türev ile hemen hemen her yerde farklılaştırılabileceğini varsayabiliriz. f′ ′.
Bu ikinci türev pratik olarak her şeyi yapabilir : tek ihtiyacımız olan
entegre edilebilir,
bazı sol aralıktaki tüm değerler için sıfıra eşit veya sıfır [ 0 , k ), ve
sağdaki aralıktaki tüm değerler için sıfırdan büyük veya ona eşittir ( k , 1 ].
Bu tür işlevler f′ ′(ve tersleri) tüm çözümlerin kümesini parametrelendirir. (Bir miktar fazlalık vardır: aşağıda açıklanan son bir normalleştirme adımı ile halledilir.)
Analizin Temel Teoremi iyileşmemizi sağlar fgelen bir tür tarifname. Yani,
f'( x ) =∫x0f′ ′( t ) dt
ve
f( x ) =∫x0f'( t ) dt .
Üzerindeki koşullar f′ ′ bunu garanti et f minimiminden monoton olarak yükseliyor f( 0 ) maksimum seviyeye f( 1 ) = C. Son olarak, normalleştirf önceki integralin değerlerini C.
İşte ikinci türev için rastgele bir yürüyüşün bir versiyonuyla başlayan bir örnek. İçinde, türevler normalleştirilmedi, ancak dönüşümf olmuştur.
Bu yaklaşımı uygulamak için, f′ ′, belki de sonlu sayıda parametre ile değişiyordu. Ayrıca, grafik boyunca bazı noktalar vererek ve aralarında enterpolasyon yaparak belirtebilirsiniz - enterpolatörün değerlerin olumsuzluğuna saygı göstermesi şartıyla[ 0 , k ) ve pozitifliği ( k , 1 ]. İkincisi, illüstrasyonu oluşturmak için kullanılan yöntemdir. Karşılık gelen R
kod (aşağıda) hesaplama detaylarını verir.
Bu yaklaşım, istediğiniz herhangi bir dönüşümü tasarlamanızı sağlar. S-eğrisini çizerek (göreli) eğimlerini tahmin ederek başlayabilirsinizf've eğimlerini tahmin eden bundan. Bazılarını belirtinf′ ′ sonraki resmi eşleştirmek için hesaplamaya devam edin f' ve sonra f.
Bunu not et f önce içbükey sonra da içbükey aşağı itilerek elde edilebilir f′ ′başta. S-şekilli bir eğri oluşturmak için kritik koşul (sıfır ölçü kümesinde olası geziler dışında)f′ ′aslında en fazla bir kez sıfırı geçebilir .
Bu arada, çözüm f( x ) = x ayarlayarak ortaya çıkar f′ ′( x ) = 0 neredeyse her yerde f' sabit ve pozitif, nereden flineer; normalleştirme eğimin1 ve kesişme noktası 0. (Yapımıf' sabit ve negatif çözüm üretir f( x ) = 1 - x.)
n <- 51 # Number of interpolation points
k.1 <- floor(n * 2/3) # Width of the left-hand interval
k.2 <- n - k.1 # ............ right-hand interval
x <- seq(0, 1, length.out=n) # x coordinates
set.seed(17)
# Generate random values of the second derivative that are first negative,
# then positive. Modify to suit.
y.2 <- (c(runif(k.1, -1, 0), 0.5*runif(k.2, 0, 1))) * abs(cos(3*pi * x)) +
c(rep(-.1, k.1), rep(.5,k.2))
# Recover the first derivative and then the transformation. Control the
# minimum slope of the transformation.
y.1 <- cumsum(y.2)
y.1 <- y.1 - min(y.1) + 0.005 * diff(range(y.1))
y <- cumsum(y.1)
y <- (y - y[1]) / (y[n] - y[1]) # Normalize the transformation
#
# Plot the graphs.
par(mfrow=c(1,3))
plot(x, y.2, type="l", bty="n", main="Second derivative")
points(x, y.2, pch=20, cex=0.5)
abline(h=0, col="Red", lty=3)
plot(x, y.1, type="l", bty="n", lwd=2, main="First derivative")
abline(h=0, col="Red", lty=3)
plot(x, y, type="l", lwd=2, main="Transformation")