ฟังก์ชันพื้นและฟังก์ชันเพดาน

ในทางคณิตศาสตร์และวิทยาการคอมพิวเตอร์ ฟังก์ชันพื้น () คือฟังก์ชันที่จับคู่จำนวนจริงไปยังจำนวนเต็มที่อยู่ก่อนหน้า นั่นคือ floor ("x") เป็นจำนวนเต็มมากที่สุดที่ไม่มากกว่า "x"

ส่วน ฟังก์ชันเพดาน () คือฟังก์ชันที่จับคู่จำนวนจริงไปยังจำนวนเต็มที่อยู่ถัดจากจำนวนนั้น นั่นคือ ceiling ("x") คือจำนวนเต็มน้อยที่สุดที่ไม่น้อยกว่า "x"

กราฟของฟังก์ชันพื้นและเพดานทั้งหมด มีลักษณะคล้ายฟังก์ชันขั้นบันได แต่ไม่ใช่ฟังก์ชันขั้นบันได เนื่องจากมีช่วงบนแกน "x" เป็นจำนวนอนันต์

เกาส์ได้แนะนำสัญกรณ์วงเล็บเหลี่ยม ["x"] สำหรับแทนฟังก์ชันพื้น ในการพิสูจน์การแลกเปลี่ยนกำลังสอง (quadratic reciprocity) ของเขาเมื่อ ค.ศ. 1808 สิ่งนี้เป็นบรรทัดฐานในคณิตศาสตร์เรื่อยมา จนกระทั่งอิเวอร์สัน (Kenneth E. Iverson) ได้แนะนำให้ใช้ชื่อ "floor" และ "ceiling" พร้อมกับทั้งแนะนำสัญกรณ์ ⌊"x"⌋ และ ⌈"x"⌉ สำหรับฟังก์ชันทั้งสองตามลำดับ เพื่อเขียนโปรแกรมภาษาเอพีแอลเมื่อ ค.ศ. 1962 ปัจจุบันสัญกรณ์ทั้งสองแบบก็ยังมีการใช้กันอยู่ในคณิตศาสตร์ สำหรับบทความนี้จะอธิบายด้วยสัญกรณ์ของอิเวอร์สัน

ฟังก์ชันพื้นอาจเรียกว่าเป็น ฟังก์ชันจำนวนเต็มมากสุด (greatest integer function) หรือ "อองเทียร์" (entier หมายถึงจำนวนเต็มในภาษาฝรั่งเศส) และสำหรับฟังก์ชันพื้นของจำนวนที่ไม่เป็นลบ "x" อาจเรียกว่าเป็น ภาคจำนวนเต็ม (integral part) ของ "x" ในภาษาโปรแกรมอื่นที่นอกเหนือจากภาษาเอพีแอล มักจะใช้สัญกรณ์ว่า codice_1 (ภาษาอัลกอล), codice_2, หรือไม่ก็ codice_3 (ภาษาซี/ซีพลัสพลัส) ในทางคณิตศาสตร์ สัญกรณ์สำหรับฟังก์ชันนี้สามารถเขียนเป็นวงเล็บเหลี่ยมตัวหนาหรือซ้อนสองก็ได้ formula_1

ส่วนฟังก์ชันเพดานอาจเรียกว่าเป็น ฟังก์ชันจำนวนเต็มน้อยสุด (least integer function) ในภาษาโปรแกรมอื่นมักจะใช้แทนด้วย codice_4 หรือ codice_5 ในทางคณิตศาสตร์ มีสัญกรณ์อีกแบบหนึ่งคือวงเล็บเหลี่ยมตัวหนาหรือซ้อนสองที่หันออก formula_2 หรือใช้เพียงแค่วงเล็บเหลี่ยมธรรมดาหันออกก็ได้ ]"x"[

สำหรับนิยามของภาคเศษส่วน ดูในหัวข้อถัดไป

ในสูตรคณิตศาสตร์ต่อไปนี้ สมมติให้ "x", "y" เป็นจำนวนจริง "k", "m", "n" เป็นจำนวนเต็ม และ formula_3 คือเซตของจำนวนเต็ม (อันประกอบด้วยจำนวนเต็มบวก จำนวนเต็มลบ และศูนย์)

ฟังก์ชันพื้นและเพดานสามารถนิยามได้ด้วยเซตดังนี้

เนื่องจากช่วงครึ่งเปิดความยาวหนึ่งหน่วย จะมีจำนวนเต็มเพียงหนึ่งตัวในช่วงนั้น ดังนั้นสำหรับจำนวนจริง "x" ใด ๆ จะมีจำนวนเต็ม "m" และ "n" ที่ทำให้
เราจะได้ formula_7 และ formula_8 ซึ่งก็ถือว่าเป็นนิยามอย่างหนึ่งเช่นกัน

นอกจากนี้ก็ยังมี formula_9 และ formula_10

สูตรเหล่านี้สามารถใช้ถอดฟังก์ชันพื้นและฟังก์ชันเพดานออกจากนิพจน์

และสำหรับอสมการ

สูตรเหล่านี้แสดงให้เห็นถึงผลจากการบวกด้วยจำนวนเต็ม "n" ภายในฟังก์ชัน

อย่างไรก็ตาม สูตรด้านบนอาจไม่เป็นจริงเสมอไปถ้า "n" ไม่ใช่จำนวนเต็ม แต่จะได้ผลดังนี้แทน

จากนิยามเราสามารถสรุปได้ว่า

สำหรับจำนวนเต็ม "n" ประโยคนี้จะเป็นจริง

สลับเครื่องหมายในอาร์กิวเมนต์ของฟังก์ชันพื้นและเพดาน

สลับเครื่องหมายในอาร์กิวเมนต์ของภาคเศษส่วน

ฟังก์ชันพื้น ฟังก์ชันเพดาน และภาคเศษส่วน เป็นฟังก์ชันนิจพล

ใช้ฟังก์ชันพื้นและเพดานซ้อนกัน ผลลัพธ์ที่ได้คือฟังก์ชันที่อยู่ในสุด

กำหนดให้ "y" มีค่าคงตัว "x" mod "y" จะเป็นนิจพล

และจากนิยาม

ถ้า "n" ≠ 0 แล้ว

ถ้า "n" เป็นจำนวนเต็มบวก

ถ้า "m" เป็นจำนวนเต็มบวก

ซึ่งเมื่อ "m" = 2 จะทำให้เกิดสมบัตินี้

กรณีทั่วไปสำหรับจำนวนเต็มบวก "m"

สูตรต่อไปนี้สามารถเปลี่ยนระหว่างฟังก์ชันพื้นกับฟังก์ชันเพดาน เมื่อ "m" เป็นจำนวนเต็มบวก

ถ้า "m" และ "n" เป็นจำนวนเต็มบวกและเป็นจำนวนเฉพาะสัมพัทธ์ จะได้

เนื่องจากสูตรข้างต้น "m" และ "n" มีความสมมาตรต่อกัน จึงสามารถกระจายฝั่งซ้ายของเครื่องหมายเท่ากับได้ดังนี้

และสำหรับกรณีทั่วไป เมื่อ "m" และ "n" เป็นจำนวนเต็มบวก

สิ่งนี้เรียกว่า กฎการแลกเปลี่ยน

สำหรับจำนวนเต็มบวก "m" และ "n" และจำนวนจริง "x"

ฟังก์ชันทั้งหมดที่กล่าวมาไม่เป็นฟังก์ชันต่อเนื่อง แต่เป็นฟังก์ชันเชิงเส้นเป็นช่วง ซึ่ง ⌊"x"⌋ กับ ⌈"x"⌉ เป็นฟังก์ชันคงตัวในแต่ละช่วง และไม่ต่อเนื่องที่จำนวนเต็ม {"x"} ก็ไม่ต่อเนื่องที่จำนวนเต็มเช่นกัน แต่ไม่ได้เป็นฟังก์ชันคงตัว ส่วน "x" mod "y" เป็นฟังก์ชันที่ไม่ต่อเนื่องที่พหุคูณของ "y" ถ้าให้ "y" มีค่าคงตัว

⌊"x"⌋ ถือได้ว่าเป็นฟังก์ชันกึ่งต่อเนื่องบน (upper semi-continuous function) และ ⌈"x"⌉ กับ {"x"} เป็นฟังก์ชันกึ่งต่อเนื่องล่าง (lower semi-continuous function) ส่วน "x" mod "y" จะเป็นฟังก์ชันกึ่งต่อเนื่องล่างเมื่อ "y" เป็นจำนวนบวก และเป็นฟังก์ชันกึ่งต่อเนื่องบนเมื่อ "y" เป็นจำนวนลบ

เนื่องจากฟังก์ชันทั้งหมดที่กล่าวมาไม่ต่อเนื่อง จึงไม่มีฟังก์ชันใดที่เขียนแทนด้วยการกระจายอนุกรมกำลังได้ และเนื่องจากฟังก์ชันพื้นและเพดานไม่เป็นคาบ (periodic) สองฟังก์ชันนี้จึงไม่มีการกระจายอนุกรมฟูรีเย

สำหรับ "x" mod "y" โดยที่ "y" มีค่าคงตัว มีการกระจายฟูรีเยดังนี้

ด้วยสมบัติที่ว่า {"x"} = "x" mod 1 ดังนั้นจะได้

ในจุดที่เกิดความไม่ต่อเนื่อง อนุกรมฟูรีเยจะลู่เข้าค่าใดค่าหนึ่งที่เป็นค่าเฉลี่ยของลิมิตทางซ้ายและทางขวา สำหรับ "x" mod "y" ซึ่ง "y" มีค่าคงตัว อนุกรมฟูรีเยจะลู่เข้า "y" / 2 ที่ตำแหน่งพหุคูณของ "y" ส่วนในจุดอื่น ๆ ที่มีความต่อเนื่อง อนุกรมจะลู่เข้าค่าจริง

จากสูตรที่ว่า {"x"} = "x" − ⌊"x"⌋ จึงสรุปได้ว่า

ภาคเศษส่วน (fractional part) เป็นฟังก์ชันฟันเลื่อย เขียนแทนด้วย {"x"} สำหรับทุกจำนวนจริง "x" ซึ่งนิยามโดยสูตรนี้

ภาคเศษส่วนของ "x" จะมีค่าอยู่ระหว่าง 0 กับ 1 นั่นคือ

ถ้า "x" เป็นจำนวนบวก ฟังก์ชันพื้นของ "x" สามารถสรุปได้อย่างง่ายว่า เป็นค่า "x" ที่ตัดตัวเลขหลังจุดทศนิยมออกไป ดังนั้นภาคเศษส่วนของ "x" ก็คือค่า "x" ที่ตัดตัวเลขหน้าจุดทศนิยมออกไป

การดำเนินการมอดุโล (modulo) เขียนแทนด้วย "x" mod "y" สำหรับจำนวนจริง "x" และ "y" โดยที่ "y" ≠ 0 นิยามโดยสูตรนี้

ผลลัพธ์ของ "x" mod "y" จะมีค่าอยู่ระหว่าง 0 ถึง "y" นั่นคือ

ถ้า "x" เป็นจำนวนเต็มและ "y" เป็นจำนวนเต็มบวก

ฟังก์ชัน "x" mod "y" โดยที่ "y" เป็นค่าคงตัว จะเป็นฟังก์ชันฟันเลื่อยเช่นกัน

การพิสูจน์การแลกเปลี่ยนกำลังสอง (quadratic reciprocity) ของเกาส์ครั้งที่สาม ซึ่งปรับปรุงแก้ไขโดยไอเซนสไตน์ (Ferdinand Eisenstein) มีสองขั้นตอนพื้นฐานดังนี้

กำหนดให้ "p" และ "q" เป็นจำนวนเฉพาะที่เป็นจำนวนคี่คนละตัวกัน และกำหนดให้

ขั้นตอนแรก สัญลักษณ์เลอช็องดร์ถูกนำมาเขียนอธิบายด้วยบทตั้งของเกาส์

ขั้นตอนที่สองคือใช้การให้เหตุผลทางเรขาคณิตเพื่อที่จะแสดงว่า

จากนั้นจึงเอาสูตรทั้งสองมารวมกัน ทำให้เกิดการแลกเปลี่ยนกำลังสอง

สูตรต่อไปนี้เป็นการใช้ฟังก์ชันพื้นเพื่อแสดงลักษณะกำลังสองของจำนวนขนาดเล็ก มอดุโลกับจำนวนเฉพาะ "p"

การปัดเศษจำนวนบวก "x" ไปยังจำนวนเต็มที่อยู่ใกล้ที่สุด จะใช้วิธีการปัดเศษโดยครึ่งหนึ่งให้ปัดขึ้นโดยปกติ สามารถเขียนได้เป็น formula_58

จำนวนหลักของจำนวนเต็มบวก "k" ในฐาน "b" คำนวณได้จาก formula_59

กำหนดให้ "n" เป็นจำนวนเต็มบวกและ "p" เป็นจำนวนเฉพาะ (ซึ่งเป็นบวกเช่นกัน) กำลังสูงสุดของ "p" ที่สามารถหาร "n"! (แฟกทอเรียลของ "n") ได้ลงตัว คำนวณได้จากสูตรนี้ 
ผลรวมของอนุกรมนี้จำกัด เนื่องจากฟังก์ชันพื้นจะให้ผลลัพธ์เป็นศูนย์เมื่อ "p" > "n"

ลำดับบีตตี (Beatty sequence) ได้แสดงไว้ว่าจำนวนอตรรกยะที่เป็นบวกทุกจำนวน เมื่อผ่านฟังก์ชันพื้นแล้วจะเป็นส่วนหนึ่งของจำนวนธรรมชาติซึ่งเป็นสมาชิกของลำดับสองลำดับคู่กัน

สูตรที่ใช้แสดงค่าคงตัวออยเลอร์-แมสเชโรนี γ = 0.57721 56649 … ที่เกี่ยวกับฟังก์ชันพื้นและเพดาน ตัวอย่างเช่น

ฟังก์ชันภาคเศษส่วนปรากฏในการแจกแจงปริพันธ์ของฟังก์ชันซีตาของรีมันน์ ซึ่งสามารถพิสูจน์ได้อย่างตรงไปตรงมาด้วยการหาปริพันธ์โดยการแยกส่วน โดยสมมติว่า φ ("x") คือฟังก์ชันใด ๆ ที่มีความต่อเนื่องและหาอนุพันธ์ได้ในช่วงปิด ["a", "b"]

กำหนดให้ φ ("n") = "n" สำหรับส่วนจริงของ "s" ที่มากกว่า 1 และกำหนดให้ "a", "b" เป็นจำนวนเต็ม ซึ่ง "b" มีค่าเข้าใกล้อนันต์ จะได้

สูตรนี้สามารถใช้ได้กับทุกค่าของ "s" ที่มีส่วนจริงมากกว่า −1 (ยกเว้นเมื่อ "s" = 1 เพราะจุดนั้นเป็นโพล) และเมื่อรวมเข้ากับการกระจายฟูรีเยของ {"x"} จะทำให้สามารถใช้ฟังก์ชันซีตาได้กับทั้งระนาบเชิงซ้อน และใช้สำหรับพิสูจน์สมการเชิงฟังก์ชัน

สำหรับ "s" = σ + "i t" ภายในแถบวิกฤต (critical strip) เช่น 0 < σ < 1 Balthasar van der Pol ได้ใช้สูตรนี้เพื่อสร้างคอมพิวเตอร์แอนะล็อกสำหรับคำนวณรากของฟังก์ชันซีตาเมื่อ ค.ศ. 1974

"n" จะเป็นจำนวนเฉพาะ ก็ต่อเมื่อ

กำหนดให้ "r" > 1 เป็นจำนวนเต็ม, "p" คือจำนวนเฉพาะตัวที่ "n" และ α ซึ่งนิยามโดย

เราจะได้ว่า

มีจำนวน θ = 1.3064… ซึ่งมีสมบัติว่า จำนวนทั้งหมดในลำดับ formula_70 เป็นจำนวนเฉพาะ

และมีจำนวน ω = 1.9287800… ซึ่งมีสมบัติว่า จำนวนทั้งหมดในลำดับ formula_71 เป็นจำนวนเฉพาะ

π ("x") เป็นฟังก์ชันนับจำนวนเฉพาะ คือนับว่ามีจำนวนเฉพาะอยู่เท่าไรที่มีค่าน้อยกว่าหรือเท่ากับ "x" ซึ่งเป็นการลดทอนมาจากทฤษฎีบทของวิลสันที่ว่า

และถ้าหาก "n" ≥ 2 จะได้

แต่สูตรในส่วนนี้ที่กล่าวมาทั้งหมด ไม่มีการนำไปใช้จริงในทางปฏิบัติ

รามานุจันได้ส่งข้อปัญหาที่เกี่ยวกับฟังก์ชันพื้นเหล่านี้ลงใน "Journal of the Indian Mathematical Society"

ถ้า "n" เป็นจำนวนเต็มบวก จงพิสูจน์ว่า

จากการศึกษาข้อปัญหาของวาริง ได้นำไปสู่ปัญหาที่ยังไม่สามารถแก้ได้จนปัจจุบัน นั่นคือ

จริงหรือไม่ที่จำนวนเต็มบวก "k" ใด ๆ โดยที่ "k" ≥ 6 ทำให้เงื่อนไขนี้เป็นจริง

เคิร์ต มาห์เลอร์ เคยพิสูจน์และสรุปว่า มีเพียงจำนวนจำกัดจำนวนหนึ่งเท่านั้นสำหรับ "k" ที่ตรงตามเงื่อนไขข้างต้น นอกเหนือจากนั้นยังไม่สามารถสรุปได้

ภาษาซี ภาษาซีพลัสพลัส และภาษาอื่น ๆ ที่เกี่ยวข้อง (เช่นภาษาซีชาร์ป ภาษาจาวา) มีฟังก์ชันมาตรฐาน codice_6 สำหรับฟังก์ชันพื้น และ codice_7 สำหรับฟังก์ชันเพดาน

นอกจากนี้ยังมีอีกวิธีการหนึ่งคือการแปลงจำนวนจุดลอยตัว (floating point) ไปเป็นจำนวนเต็มโดยการกำกับชนิดข้อมูล codice_8 ซึ่งจะทำให้ตัวเลขที่อยู่หลังจุดทศนิยมถูกตัดออกไปทั้งหมด ไม่ว่าจำนวนนั้นจะเป็นบวกหรือลบ หรือกล่าวอีกนัยหนึ่งคือ ถูกปัดเศษไปยังค่าศูนย์