요구 사항에 맞는 가장 일반적인 솔루션을 제공하겠습니다. 그러면 가장 유연하게 선택하고 최적화 할 수 있습니다.
"S 자형" 은 위쪽으로 오목한 부분과 아래쪽으로 오목한 부분으로 구성된 단조 증가 곡선 (변환이 일대일이어야하므로) 으로 해석 할 수 있습니다. 우리는 왼쪽 반을 오목하게 만드는 데 집중할 수 있습니다. 왜냐하면 다른 유형 (왼쪽 반을 오목하게)은 그러한 변형을 뒤집어서 얻었 기 때문입니다.
변형 이후 에프 차별화 할 수 있어야하므로 감소하는 파생물이 있어야합니다 에프'왼쪽 절반에, 오른쪽 절반에 미분이 증가합니다. 그럼에도 불구하고 미분은 음이 아니어야하며 격리 된 지점에서만 0이 될 수 있습니다. (만약 : 미분의 최소값은 변형의 기울기를 최소화합니다.)
미분은 미분 할 필요는 없지만, 실질적인 문제로 우리는 미분이 거의 모든 곳에서 미분 가능하다고 가정 할 수있다 에프′ ′.
이 이차 미분은 실제로 무엇이든 할 수 있습니다 . 우리가 필요한 것은
그것은 통합 가능합니다.
왼쪽 간격의 모든 값에 대해 0보다 작거나 같습니다. [ 0 , k ),
오른쪽 간격의 모든 값에 대해 0보다 크거나 같습니다. ( k , 1 ].
이러한 기능 에프′ ′(및 그 역수)는 모든 솔루션 세트를 매개 변수화합니다. (일부 중복성이 있습니다. 아래 설명 된 최종 정규화 단계로 처리됩니다.)
미적분학의 기본 정리를 통해 회복 할 수 있습니다 에프에서 어떤 같은 사양입니다. 그건,
에프'( x ) =∫엑스0에프′ ′( t ) d티
과
에프( x ) =∫엑스0에프'( t ) dt .
조건 에프′ ′ 보장하다 에프 최소에서 단조롭게 상승 에프( 0 ) 최대로 에프( 1 ) = C. 마지막으로 정규화에프 이전 적분의 값을 씨.
다음은 2 차 도함수의 랜덤 워크 버전으로 시작하는 그림입니다. 그것에서 파생 상품은 정규화되지 않았지만 변환은에프 되었습니다.
이 접근 방식을 적용하려면 다음에 대한 분석 식으로 시작할 수 있습니다. 에프′ ′유한 한 수의 매개 변수에 따라 달라질 수 있습니다. 보간 기가 값의 부정성을 존중하는 경우 그래프를 따라 일부 점을 제공하고 그 사이에 보간하여이를 지정할 수도 있습니다.[ 0 , k ) 그리고 양성 ( k , 1 ]. 후자는 그림을 생성하는 데 사용되는 방법입니다. 해당 R
코드 (아래)는 계산 세부 정보를 제공합니다.
이 방법을 사용하면 원하는 변환을 디자인 할 수 있습니다. S- 곡선을 스케치하고 (상대) 기울기를 추정하여 시작할 수 있습니다.에프', 그리고 그것의 기울기를 추정합니다. 일부를 지정하십시오에프′ ′ 그 후자의 그림과 일치시키고 계산을 진행하십시오. 에프' 그리고 에프.
참고 에프 먼저 오목한 다음 오목한 부분은 부정함으로써 얻을 수 있습니다. 에프′ ′처음에. S 자 곡선을 만들기위한 중요한 조건은 다음과 같습니다.에프′ ′실제로 최대 한 번 0을 교차 할 수 있습니다 .
덧붙여서, 해결책 에프( x ) = x 설정으로 발생 에프′ ′( x ) = 0 거의 모든 곳에서 에프' 일정하고 긍정적 인 에프선형이다; 정규화로 기울기가 보장됩니다1 요격은 0. (만들기에프' 상수와 음수가 솔루션을 생성합니다 에프( 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")