วันอังคารที่ 11 ตุลาคม พ.ศ. 2559

การลาก smooth line เชื่อมจุด (การทำวิทยานิพนธ์ภาคปฏิบัติ ตอนที่ ๘๔) MO Memoir : Tuesday 11 October 2559

เป็นเรื่องปรกติในการทดลองที่ผลการทดลองหรือผลการวิเคราะห์จะได้มาในรูปของจุดข้อมูล (x,y) แต่เราต้องการแสดงผลในรูปของกราฟเส้นที่เป็นเส้นโค้งที่เรียบ (smooth line) ที่ออกมาดูดี และวิธีการที่เชื่อว่าคนส่วนใหญ่ทำกันก็คือใช้โปรแกรม spreadsheet (โดยเฉพาะ Excel) ลากเส้นดังกล่าวให้ โดยใช้ค่า "default" ของโปรแกรม และบ่อยครั้งที่พบว่าเส้นกราฟที่ลากด้วยค่า default นั้น มันให้ภาพที่ผิดความจริงไป (เช่นให้เส้นกราฟที่มีการบิดโค้งกลับไปกลับมา ทั้ง ๆ ที่ค่า y ควรมีการเปลี่ยนแปลงในทิศทางใดทิศทางหนึ่งเพียงทิศทางเดียวเมื่อเทียบกับค่า x)

รูปที่ ๑ ความสัมพันธ์ระหว่างค่าความดันสัมพัทธ์ของระบบ (P/P0) และปริมาตรแก๊สไนโตรเจนที่ตัวอย่างดูดซับเอาไว้ได้ ลาก smooth line โดยใช้ค่าฟังก์ชัน default ของโปรแกรม OpenOffice 4.1.2 คือ cubic spline ความละเอียด 20 จะเห็นการบิดเบี้ยวที่ไม่ถูกต้องของเส้น desorption (สีส้ม) ตรงกรอบที่ล้อมเอาไว้
 
ตัวอย่างเช่นในการวัดพื้นที่ผิวด้วยการใช้เทคนิคการดูดซับแก๊สไนโตรเจน ความสัมพันธ์ระหว่างปริมาณแก๊สไนโตรเจนที่ตัวอย่างดูดซับไว้ได้และความดันของระบบ จะมีการเปลี่ยนแปลงในทิศทางเดียวกัน กล่าวคือที่ความดันระบบสูงขึ้น ปริมาตรแก๊สไนโตรเจนที่ตัวอย่างดูดซับเอาไว้ได้ก็จะเพิ่มมากขึ้นตามไปด้วย (รูปที่ ๑) เมื่อทดลองนำจุดข้อมูลที่ได้จากการวัดมาทำการเขียนกราฟด้วยการใช้โปรแกรม spreadsheet ของ OpenOffice 4.1.2 โดยสั่งให้ลาก smooth line และใช้ค่า default ของโปรแกรม (รูปที่ ๒) พบว่าเส้นที่ลากเชื่อมต่อจุดข้อมูลของ desorption line มีการบิดเบี้ยวที่ไม่ถูกต้อง (กรอบสี่เหลี่ยมบน) และมีความโค้งที่ไม่เหมาะสม (กรอบสี่เหลี่ยมล่าง) ดังแสดงในรูปที่ ๑


รูปที่ ๒ คำสั่งวาดกราฟชนิด xy(กระจัดกระจาย) (หรือ xy(scatter)) ของโปรแกรม OpenOffiece 4.1.2 ถ้ากำหนดให้ลากเส้นแบบเส้นเรียบ (1) ค่า default ของโปรแกรมจะใช้ฟังก์ชัน cubic spline (2) ความละเอียด 20 (3)

เมื่อทดลองทำกราฟใหม่โดยเปลี่ยนจาก cubic spline เป็น B-spline โดยใช้ระดับขั้นของพหุนามเป็น 3 (ค่า default ของเครื่อง) พบว่าพฤติกรรมการบิดเบี้ยวของเส้นสีส้มนั้นหายไป แต่ถ้าสังเกตระยะห่างในแนวนอนระหว่างกราฟเส้นสีส้มและเส้นสีน้ำเงินช่วงที่เส้นกราฟไต่ชึ้นอย่างรวดเร็ว (กรอบสี่เหลี่ยมในรูปที่ ๓) จะเห็นว่ากราฟที่ได้ยังมีรูปร่างที่ไม่เหมาะสมเท่าใด คือตรงกลางจะคอด ในขณะที่ส่วนบนและส่วนล่างโป่งออก
 
แต่เมื่อเปลี่ยนระดับขั้นของพนุนามเป็น 2 พบว่าภาพโดยรวมของเส้นกราฟดูดีขึ้นมาก แต่ทั้งนี้ไม่ได้หมายความว่าเวลาจะวาดกราฟเมื่อใดต้องใช้ B-spline และระดับขั้นของพหุนามเป็น 2 เสมอไปนะ สิ่งที่ต้องทำก็คือพิจารณารูปร่างที่ควรจะเป็นของกราฟโดยอิงจากทฤษฎีความสัมพันธ์ระหว่างตัวแปร x และ y ก่อน จากนั้นจึงทดลองเลือกฟังก์ชันมาทำการลากเส้นเชื่อมต่อจุด แล้วดูว่าเส้นกราฟที่ได้นั้นให้แนวโน้มแบบเดียวกับทฤษฎีหรือไม่ (ทฤษฎีในที่นี้คือทฤษฎีที่เป็นที่ยึดถือกันอยู่ทั่วไปนะ ไม่เช่นทฤษฎีที่ตั้งขึ้นมาเอง แล้วพยายามลากกราฟให้เส้นเชื่อมต่อจุดข้อมูลนั้นมีการบิดไปบิดมา หรือออกมาเป็นเส้นตรง ตามแบบที่ตัวเองต้องการ)
 
อันที่จริงปัญหาแบบนี้คงไม่เกิดถ้าใช้จุดข้อมูลที่ถี่มากพอ แต่ในทางปฏิบัตินั้นบ่อยครั้งที่เราไม่สามารถทำการวัดอย่างละเอียดได้ (จะเนื่องด้วยข้อจำกัดด้านเวลาหรือความสามารถของอุปกรณ์ก็ตามแต่) ทำให้เราได้ข้อมูลออกมาเป็นจุดที่อยู่ห่างกัน โดยในบางช่วงข้อมูลอาจมีการเปลี่ยนแปลงอย่างช้า ๆ แต่บางช่วงก็เปลี่ยนแปลงอย่างรวดเร็ว

รูปที่ ๓ ความสัมพันธ์ระหว่างค่าความดันสัมพัทธ์ของระบบ (P/P0) และปริมาตรแก๊สไนโตรเจนที่ตัวอย่างดูดซับเอาไว้ได้ ลาก smooth line โดยใช้ค่าฟังก์ชัน B-spline ระดับขั้นของพหุนาม 3 (ค่า default ของ B-spline ในโปรแกรม) พบว่ากราฟที่ได้นั้นดูดีกว่าในรูปที่ ๑ แต่ช่วงที่กราฟไต่ขึ้น (ในกรอบสี่เหลี่ยม) นั้นออกมาไม่ดีเท่าใดนัก เห็นได้จากระยะห่างในแนวนอนระหว่างเส้นสีส้มกับเส้นสีน้ำเงิน

spline interpolation เป็นเทคนิคที่พัฒนามาจากการลากเส้นโค้งเชื่อมจุดด้วยมือ โดยแต่เดิมเวลาที่มีข้อมูลเป็นจุด (x,y) แล้วต้องการลากเส้นโค้งเชื่อม ก็จะใช้ไม้บรรทัดที่ภาษาไทยเรียกว่า "กระดูกงู" (หรือ eleasti ruler) มาบิดโค้งไปตามจุดข้อมูลให้ความโค้งนั้นออกมาดูดีตามสายตาผู้วาด แล้วก็ลากเส้นไปตามกระดูกงูนั้น (สมัยผมเรียนเขียนแบบก็ยังได้ใช้กันอยู่ แต่ไม่รู้ว่าวิศวกรยุคใหม่นี้จะรู้จักหรือเปล่า) ที่นี้พอจะเอาสมการคณิตศาสตร์เข้ามาจับ ก็เลยมีการคิดค้นวิธีการสร้างฟังก์ชันรูปแบบต่าง ๆ เพื่อให้เส้นโค้งที่ออกมานั้นดูดี spline interpolation ไม่เหมือน polynomial interpolation ตรงนี้ในกรณีของ polynomial interpolation นั้น ระดับขั้น (degree หรือยกกำลังสูงสุด) ของ polynomial จะเท่ากับ n - 1 เมื่อ n คือจำนวนจุดที่นำมาทำ curve fitting ส่วน spline interpolation นั้นเราอาจใช้ข้อมูลเพียงแค่ 2 จุด แต่นำมาสร้างสมการกำลัง 3 ได้ (เช่นด้วยการบังคับให้ฟังก์ชันที่เชื่อมต่อระหว่าง 2 จุดนั้นมีความต่อเนื่องทั้งค่า y ค่าอนุพันธ์อันดับ 1 และ 2 กับฟังก์ชันที่เชื่อมต่อระหว่างจุดข้างซ้ายและข้างขวา)

รูปที่ ๔ ความสัมพันธ์ระหว่างค่าความดันสัมพัทธ์ของระบบ (P/P0) และปริมาตรแก๊สไนโตรเจนที่ตัวอย่างดูดซับเอาไว้ได้ ลาก smooth line โดยใช้ค่าฟังก์ชัน B-spline แต่ปรับระดับขั้นของพหุนามเป็น 2 จะเห็นว่าได้เส้นโค้งที่ราบเรียบและดูดีขึ้น

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

ไม่มีความคิดเห็น: