ตัวดึงดูดประหลาด (Strange Attractors)
(blog.shashanktomar.com)- โปรเจ็กต์ที่ใช้ Three.js เพื่อสร้างภาพ ตัวดึงดูดประหลาด (Strange Attractors) แสดงให้เห็นกระบวนการที่สมการคณิตศาสตร์อย่างง่ายสามารถสร้างรูปแบบที่ซับซ้อนและสวยงามได้
- อธิบายแนวคิดพื้นฐานของ ระบบพลวัต (Dynamical Systems) และ ทฤษฎีความโกลาหล (Chaos Theory) โดยมุ่งเน้นที่สถานะของระบบที่เปลี่ยนแปลงไปตามเวลาและกฎที่กำหนดวิวัฒนาการของมัน
- ตัวดึงดูดประหลาด ถูกนิยามด้วยคุณลักษณะ 4 ประการ ได้แก่ โครงสร้างแฟรกทัล ความไวต่อเงื่อนไขตั้งต้น วิถีไม่เป็นคาบ และระเบียบที่ซ่อนอยู่ในความโกลาหล
- แสดง ผลกระทบผีเสื้อ (Butterfly Effect) ผ่านภาพของ Thomas Attractor พร้อมนำเสนอว่าการเปลี่ยนแปลงเล็กน้อยของพารามิเตอร์
aสามารถสร้างรูปแบบที่แตกต่างกันโดยสิ้นเชิงได้อย่างไร - ใช้เทคนิค ping-pong rendering บน GPU เพื่อคำนวณและเรนเดอร์อนุภาคหลายพันตัวอย่างมีประสิทธิภาพ จนสามารถแสดงผลแบบเรียลไทม์ได้
ระบบพลวัตและทฤษฎีความโกลาหล
-
ระบบพลวัต คือวิธีการสร้างแบบจำลองทางคณิตศาสตร์ของปรากฏการณ์ที่เปลี่ยนแปลงไปตามเวลา โดยมีตัวอย่างหลากหลาย เช่น การเคลื่อนที่ของดาวเคราะห์ การเติบโตของประชากร และตลาดหุ้น
- ประกอบด้วย ปริภูมิสถานะ (Phase Space) ที่แสดงสถานะทั้งหมดที่เป็นไปได้ของระบบ และ พลวัต (Dynamics) ที่ทำให้ระบบเปลี่ยนจากสถานะหนึ่งไปสู่อีกสถานะหนึ่ง
- ตัวอย่างเช่น ในแบบจำลองการเติบโตของประชากร ขนาดประชากรและอัตราการเติบโตจะเป็นสถานะในปริภูมิสถานะ ขณะที่อัตราการเกิด อัตราการตาย และขีดความสามารถในการรองรับของสิ่งแวดล้อมจะเป็นตัวกำหนดพลวัต
-
ทฤษฎีความโกลาหล (Chaos Theory) คือสาขาที่ศึกษาระบบที่คาดการณ์ได้ยาก โดยปรากฏการณ์จำนวนมากในธรรมชาติจัดอยู่ในกลุ่ม ระบบไม่เชิงเส้นและไวต่อการเปลี่ยนแปลง เช่นนี้
- อธิบายปรากฏการณ์ที่แม้จะมีกฎอยู่ แต่กลับไม่สามารถคาดการณ์ได้เนื่องจากข้อมูลไม่สมบูรณ์
- ลักษณะเด่นที่สำคัญคือ ผลกระทบผีเสื้อ ซึ่งความแตกต่างเล็กน้อยของเงื่อนไขตั้งต้นสามารถเปลี่ยนผลลัพธ์ได้อย่างมาก
ตัวดึงดูด (Attractor) และตัวดึงดูดประหลาด (Strange Attractor)
-
ตัวดึงดูด (Attractor) คือชุดของสถานะที่ระบบจะค่อย ๆ ลู่เข้าเมื่อเวลาผ่านไป เช่น จุดหยุดนิ่งของลูกตุ้ม
- การลู่เข้าสู่ตัวดึงดูดเกิดจากปัจจัยอย่าง เสถียรภาพ, การสูญเสียพลังงาน (Dissipation) และ การหดตัว (Contraction)
-
ตัวดึงดูดประหลาด (Strange Attractor) คือตัวดึงดูดที่แสดงวิถีซึ่งคาดการณ์ได้ยากจากสมการไม่เชิงเส้นที่ซับซ้อน โดยมีลักษณะดังนี้
- โครงสร้างแฟรกทัล: รูปแบบซับซ้อนที่ซ้ำกันในหลายสเกล
- ความไวต่อเงื่อนไขตั้งต้น: การเปลี่ยนแปลงเพียงเล็กน้อยนำไปสู่ผลลัพธ์ที่แตกต่างโดยสิ้นเชิง
- วิถีไม่เป็นคาบ: ไม่วนซ้ำเส้นทางเดิม
- ระเบียบในความโกลาหล: แม้ดูเหมือนสุ่ม แต่ภายในมีโครงสร้างบางอย่างที่คงอยู่
ผลกระทบผีเสื้อและการสร้างภาพ Thomas Attractor
- ผลกระทบผีเสื้อ คือปรากฏการณ์ที่การเปลี่ยนแปลงเพียงเล็กน้อยก่อให้เกิดความแตกต่างอย่างมากในระยะยาว มักอธิบายด้วยอุปมาว่า “การกระพือปีกของผีเสื้อในจีนอาจทำให้เกิดเฮอริเคนในทะเลแคริบเบียน”
- เมื่อเปลี่ยนค่าพารามิเตอร์
aของ Thomas Attractor เป็น 0.10, 0.13, 0.19, 0.21 เป็นต้น วิถีของอนุภาคและรูปร่างโดยรวมจะเปลี่ยนไปอย่างสิ้นเชิง - หากเปลี่ยนสถานะเริ่มต้นเป็น
cubeและsphere surfaceอนุภาคจะเคลื่อนที่ตามเส้นทางที่ต่างกัน แต่สุดท้ายจะลู่เข้าสู่สถานะตัวดึงดูดเดียวกัน
รายละเอียดการพัฒนา
- การสร้างภาพใช้ Three.js เพื่อคำนวณและเรนเดอร์อนุภาคจำนวนมากบน GPU โดยตรง
- ใช้เทคนิค ping-pong rendering เพื่อลดการส่งข้อมูลระหว่าง CPU และ GPU ให้น้อยที่สุด โดยสลับใช้ frame buffer object (FBO) สองชุด
- บัฟเฟอร์
pingและpongจะเก็บสถานะปัจจุบันและสถานะถัดไปตามลำดับ - โปรแกรมเชดเดอร์จะอัปเดตตำแหน่งของอนุภาคแต่ละตัวตามสมการของตัวดึงดูด
- ในทุกเฟรมจะสลับบัฟเฟอร์และเรนเดอร์สถานะใหม่ของอนุภาค
- บัฟเฟอร์
เอกสารอ้างอิงและข้อมูลเพิ่มเติม
- มีการอ้างอิงแหล่งข้อมูลที่เกี่ยวข้อง เช่น Maxim's Attractor visualization, Wikipedia: Attractor, List of Chaotic Maps, WebGLFundamentals: Ping Pong Rendering
- ยังยกตัวอย่างเพิ่มเติมของการสร้างภาพตัวดึงดูดแบบ 3D จาก chaoticatmospheres.com, dynamicmath.xyz, Reddit r/generative
- ขณะนี้กำลังรับฟังความคิดเห็นผ่านหน้า GitHub Discussion ของบล็อก และมีแผนจะรวมเข้ากับบล็อกในอนาคต
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ภาพการแสดงผลปริภูมิเฟส 3D แบบนี้แสดงให้เห็นได้ดีว่าเราดึงข้อมูลออกมาได้มากแค่ไหน
แต่ในขณะเดียวกันก็ทำให้รู้สึกด้วยว่าเรากำลังพลาด ความอุดมสมบูรณ์ ไปมากเพียงใดในโลกที่มีมากกว่า 3 มิติ
เลยสงสัยว่าจะมีวิธีทำภาพของ 4D ขึ้นไปได้ไหม เช่น ดูภาพตัดขวางแบบ 3D หรือไล่ตามอนุภาคแบบลากรังเจียนแล้วใช้สีแสดงการเปลี่ยนแปลงของค่า D
ภาพลักษณะนี้ทำให้นึกถึงช่วงแรก ๆ ของกลศาสตร์สถิติ ตอนที่ Boltzmann และ Gibbs ถกเถียงกันเรื่องปริภูมิเฟสและแนวคิดเรื่องสมดุล
เราอาจเข้าถึงมันได้ผ่านการอนุมานหรือความเข้าใจเพียงบางส่วน แต่ไม่อาจ grasp มันได้ทั้งหมด
จริง ๆ แล้วผมคิดว่าความสามารถในการคิดแบบ 3D เองก็เป็น ความสามารถเชิงการปรับตัว ที่ยิ่งใหญ่มากของมนุษย์เมื่อเทียบกับสัตว์อื่น
เจ๋งมาก! ถ้ามีฟังก์ชันให้ปรับค่า a กับ b เพื่อค้นหารูปแบบ ตัวดึงดูดประหลาด (strange attractor) ของตัวเองก็คงดีมาก
ถ้ามีโหมดอิสระด้วยก็น่าจะสนุก
บนมือถืออยู่ที่แถบเมนูด้านล่าง และบนเดสก์ท็อปจะมองเห็นได้ทันที
ตอนเป็นวัยรุ่น เมื่อราว 25 ปีก่อน ผมเคยทำ ตัวแสดงภาพตัวดึงดูดแบบโกลาหล 2D ขึ้นมาเอง
แล้วก็เกิดความคิดขึ้นมาว่า “ถ้าแทนที่จะทำเป็นภาพ ลอง เรนเดอร์เป็นเสียง จะเป็นยังไง?”
ผมลองจับคู่ความถี่กับมุม และแอมพลิจูดกับขนาด พร้อมกับได้เรียนรู้เรื่อง เอนเดียน (endianness) เป็นครั้งแรกจากการจัดการฟอร์แมต WAV ด้วยตัวเอง
ผลลัพธ์ไม่ได้ถึงกับฟังไม่ได้เลย และให้อารมณ์เหมือนเอฟเฟกต์เสียงคอมพิวเตอร์ในหนังไซไฟเก่า ๆ
ตัวอย่างเช่น Hypster by Nonlinear Circuits และ Orbit 3 by Joranalogue ซึ่งเพิ่มการเคลื่อนไหวที่คาดเดาไม่ได้แต่ก็เป็นคาบให้กับเสียงได้อย่างสนุกมาก
ตอนมัธยม ผมเคยเล่นกับตัวดึงดูดพวกนี้ตั้งแต่สมัย ยุคจูราสสิก แทบจะได้
ตอนนั้นคอม 486 ใช้เวลาวาดหนึ่งภาพ 20–30 นาที แต่ตอนนี้กลับทำ การเรนเดอร์ 3D แบบเรียลไทม์ ได้แล้ว น่าทึ่งมาก
ประสบการณ์แบบนี้มีอิทธิพลอย่างมากต่อ การคิดเชิงระบบ ของผมเกี่ยวกับวงโคจร ความไม่เสถียร และเรื่องทำนองนั้น
https://fractint.org/
ภาพนี้ทำให้นึกถึง Phong
https://phong.com/
บังเอิญว่าสัปดาห์นี้ผมเพิ่งขุด โปรเจกต์สร้างแฟร็กทัล ที่ทำไว้ตอนอยู่ชั้น ม.5 ในปี 2002 ขึ้นมา แล้วปรับให้ทันสมัยด้วยไลบรารีกราฟิก SFML
https://github.com/gradientwolf/fractals_SFML
เห็นโพสต์นี้แล้วยินดีมาก เพราะโปรเจกต์เล็ก ๆ แบบนี้พาผมย้อนกลับไปสู่ช่วงวัยรุ่นที่เต็มไปด้วย ความอยากรู้อยากเห็นอันเรียบง่ายและบริสุทธิ์
สำหรับคำพูดที่ว่า “ไม่แน่ใจว่านี่เป็นการขยายทางคณิตศาสตร์ที่ถูกต้องหรือเปล่า” จริง ๆ แล้วการขยายไปสู่มิติที่สูงกว่านั้นไม่ได้มี คำตอบเดียว
มันอาจเป็นไปได้หลายแบบ หรืออาจไม่มีเลยก็ได้
ถึงอย่างนั้น ตัวความพยายามที่จะทำให้ “ใกล้เคียงพอ” ก็ยังน่าสนใจอยู่ดี
อย่างเช่นถ้าไปดูความพยายามของคนที่อยากสร้าง Mandelbrot แบบ 3D ก็จะพบว่าแม้ไม่มีคำตอบที่สมบูรณ์แบบ แต่ก็มี ความเป็นไปได้ที่น่าสนใจมาก อยู่ไม่น้อย
สวยงามจริง ๆ เหมือนกำลังดู ฝูงนกกิ้งโครงเต้นระบำเป็นหมู่
https://www.youtube.com/watch?v=V4f_1_r80RY
วิธีอธิบายทฤษฎีคณิตศาสตร์นั้น ตรงไปตรงมาและสดใหม่ มาก
ถ้าเขียนเรื่องหัวข้ออื่นด้วยก็น่าจะน่าสนใจมากจริง ๆ
ภาพนี้ทำให้นึกถึง โมดูล “strange” ของ xscreensaver