ให้ฉันเสนอวิธีแก้ปัญหาทั่วไปส่วนใหญ่สอดคล้องกับข้อกำหนด:ที่จะให้ความยืดหยุ่นมากที่สุดในการเลือกและปรับให้เหมาะสม
เราอาจตีความ "รูปตัว S" เป็นเส้นโค้งที่เพิ่มขึ้นแบบ monotonically (เพราะการแปลงควรเป็นแบบหนึ่งต่อหนึ่ง) ประกอบด้วยส่วนหนึ่งที่เว้าขึ้นด้านบนและอีกส่วนที่เว้าลง เราอาจจะมุ่งเน้นไปที่การทำให้เว้าครึ่งซ้ายลงเพราะประเภทอื่น (ที่มีเว้าครึ่งซ้าย) นั้นได้รับจากการแปลงการแปลงเช่นนั้น
เนื่องจากการแปลงควรจะหาอนุพันธ์ได้ดังนั้นจึงต้องมีอนุพันธ์ที่ลดลงในครึ่งซ้ายและอนุพันธ์เพิ่มขึ้นในครึ่งขวา โดยไม่คำนึงถึงอนุพันธ์ต้องไม่เป็นลบและสามารถเป็นศูนย์ได้ที่จุดแยกเท่านั้น (ถ้าเลย: ค่าต่ำสุดของอนุพันธ์จะให้ความชันน้อยที่สุดของการแปลง)ฉฉ'
มันไม่จำเป็นต้องที่จะอนุพันธ์อนุพันธ์ได้ แต่เป็นเรื่องจริงที่เราอาจจะคิดว่ามันเป็นอนุพันธ์ได้เกือบทุกที่ที่มีอนุพันธ์นายก} ฉ′ ′
อนุพันธ์อันดับสองนี้สามารถทำสิ่งใดก็ได้ :สิ่งที่เราต้องการคือ
มันเป็น integrable
น้อยกว่าหรือเท่ากับศูนย์สำหรับค่าทั้งหมดในบางช่วงซ้ายมือและ[ 0 , k )
มากกว่าหรือเท่ากับศูนย์สำหรับค่าทั้งหมดในช่วงเวลาที่มือข้างขวา1]( k , 1 ]
ฟังก์ชั่นดังกล่าว (และผู้รุกราน) พารามิเตอร์ชุดของการแก้ปัญหาทั้งหมด ฉ′ ′ (มีความซ้ำซ้อนบางอย่าง: ได้รับการดูแลโดยขั้นตอนการทำให้เป็นมาตรฐานสุดท้ายตามที่อธิบายไว้ด้านล่าง)
ทฤษฎีบทมูลฐานของแคลคูลัสช่วยให้เราสามารถกู้คืนจากใด ๆสเปคดังกล่าว นั่นคือ,ฉ
ฉ'( x ) =∫x0ฉ′ ′( t ) dเสื้อ
และ
ฉ( x ) =∫x0ฉ'( t ) dt .
เงื่อนไขในรับประกันว่าเพิ่มขึ้นจาก monotonically minimim ของบางสูงสุดC สุดท้ายปกติโดยการหารค่าของหนึ่งก่อนหน้านี้โดยCฉ′ ′ฉฉ( 0 )ฉ( 1 ) = Cฉค
นี่คือภาพประกอบที่เริ่มต้นด้วยการเดินสุ่มสำหรับอนุพันธ์อันดับสอง ในนั้นอนุพันธ์ยังไม่ได้รับการปรับมาตรฐาน แต่การเปลี่ยนแปลงฉ ได้รับการ.
หากต้องการใช้วิธีนี้คุณอาจเริ่มต้นด้วยนิพจน์การวิเคราะห์สำหรับ ฉ′ ′อาจแตกต่างกันไปตามพารามิเตอร์จำนวน จำกัด นอกจากนี้คุณยังสามารถระบุได้โดยให้บางจุดตามกราฟของมันและทำการสอดแทรกระหว่างกัน - โดยที่ผู้สอดแทรกเคารพการปฏิเสธของค่าบน[ 0 , k ) และ positivity บน ( k , 1 ]. หลังเป็นวิธีที่ใช้ในการสร้างภาพประกอบ R
รหัสที่สอดคล้องกัน(ด้านล่าง) ให้รายละเอียดของการคำนวณ
วิธีนี้ช่วยให้คุณสามารถออกแบบการเปลี่ยนแปลงที่คุณต้องการ คุณสามารถเริ่มต้นด้วยการร่าง S-curve โดยประมาณความลาดเอียงฉ'และจากการประเมินความลาดชัน ระบุบางอย่างฉ′ ′ เพื่อให้ตรงกับภาพหลังนั้นแล้วดำเนินการคำนวณ ฉ' แล้ว ฉ.
สังเกตได้ว่า ฉ ที่เป็นเว้าก่อนแล้วจึงสามารถเว้าได้ด้วยการปฏิเสธ f′′ตอนแรก เงื่อนไขที่สำคัญสำหรับการสร้างเส้นโค้งรูปตัว S คือ (นอกเหนือจากการทัศนศึกษาที่เป็นไปได้ในชุดของศูนย์การวัด)f′′จริง ๆ แล้วอาจข้ามศูนย์อย่างมากในครั้งเดียว
อนึ่งการแก้ปัญหา f(x)=x เกิดขึ้นโดยการตั้งค่า f′′(x)=0 เกือบทุกที่ทำให้ f′ อย่างต่อเนื่องและบวกจากไหน fเป็นเส้นตรง การทำให้เป็นมาตรฐานมั่นใจความชันคือ1 และการสกัดกั้นคือ 0. (ทำf′ ค่าคงที่และค่าลบสร้างโซลูชัน 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")