creatio ex nihilo

ศล
Location :
กรุงเทพ Thailand

[Profile ทั้งหมด]

ให้ทิปเจ้าของ Blog [?]
ฝากข้อความหลังไมค์
Rss Feed
Smember
ผู้ติดตามบล็อก : 85 คน [?]




Group Blog
 
All Blogs
 
Friends' blogs
[Add ศล's blog to your web]
Links
 

 
สามเหลี่ยม Sierpiński กับเกมแห่งความยุ่งเหยิง

บทความตอนนี้ จริง ๆ แล้วผมเขียนแยกไว้ก่อนหน้า 2 ตอนคือ สามเหลี่ยมไซเออพินสกี กับ เกมแห่งความยุ่งเหยิง เกิดนึกสนุกนั่งเขียนโค้ดด้วย MATLAB เล่น ๆ จึงนำมารวมมิตรพร้อมขยายแง่มุมเพิ่มเติม


สามเหลี่ยม Sierpiński ตั้งชื่อตาม Wacław Sierpiński (1882-1969) นักคณิตศาสตร์ชาวโปแลนด์ ผู้บรรยายรูปลักษณ์ของสามเหลี่ยมมหัศจรรย์นี้เป็นคนแรก เราสามารถสร้างสามเหลี่ยม Sierpiński ได้โดยเริ่มจากสามเหลี่ยมด้านเท่า

(1) เราเชื่อมจุดกึ่งกลางของสามเหลี่ยมด้านเท่าทั้ง 3 ด้านเข้าด้วยกัน เราจะได้สามเหลี่ยมด้านเท่าที่มีขนาดเล็ก 4 รูป แล้วกำจัดสามเหลี่ยมตรงกลางทิ้ง



(2) ย้อนกลับไปทำ (1) สำหรับสามเหลี่ยมสีดำทุกรูป ผลที่ได้จากการวนซ้ำครั้งที่ 2 - 4 แสดงดังนี้



กระบวนการครั้งแรกทำให้เกิดสามเหลี่ยมเล็ก 3 รูป ครั้งที่ 2 เกิด 9 รูป ครั้งที่ 3 เกิด 27 รูป ครั้งที่ n เกิด 3n รูป ถ้าสามเหลี่ยมด้านเท่าตั้งต้นยาวด้านละ 1 หน่วย ผ่านกระบวนการครั้งแรกเกิดสามเหลี่ยมเล็กยาวด้านละ 1/2 หน่วย ครั้งที่ 2 เล็กลงอีก เหลือเพียงยาวด้านละ 1/4 หน่วย ครั้งที่ 3 ด้านละ 1/8 หน่วย ครั้งที่ n จะมีรูปสามเหลี่ยมเล็ก ๆ 3n รูป แต่ละรูปมีความยาวด้านละ 1/2n หน่วย

จากความรู้สามเหลี่ยมด้านเท่ายาวด้านละ a มีพื้นที่เท่ากับ

ดังนั้นพื้นที่รวมของสามเหลี่ยมย่อยทั้งหมด (พื้นที่สีดำของสามเหลี่ยม Sierpiński) หาได้จาก



ที่ n = อนันต์ พื้นที่ของสาม Sierpiński เท่ากับ 0 รูปสามเหลี่ยม Sierpiński เป็นรูปทรงที่มีมิติประมาณ 1.58496 มิติ ยังมีอีกหนึ่งวิธีน่าทึ่งในการสร้างสามเหลี่ยม Sierpiński เป็นวิธีที่คุณสามารถสร้างได้ด้วยตัวเองเพียงใช้อุปกรณ์ ปากกา กระดาษ ไม้บรรทัด และลูกเต๋า ถ้าคุณเพิ่งเคยเล่นเกมนี้เป็นครั้งแรก ผมรับรองได้เลยครับว่าคุณจะไม่อยากเชื่อสิ่งที่คุณเห็น ตื่นตาตื่นใจแน่นอน เกมที่ผมกำลังจะแนะนำต่อไปนี้คือเกมแห่งความยุ่งเหยิง (Chaos Game)

เริ่มต้นให้เราเขียนจุดมุมของสามเหลี่ยมด้านเท่าด้วยจุด 3 จุด แต่ละจุดใช้ 1 สี สมมติว่า แดง เขียว น้ำเงิน จากนั้นสุ่มจุดใด ๆ ขึ้นมา 1 จุดที่อยู่ในขอบเขตของสามเหลี่ยมนั้น เรียกว่า ต้นตอ (Seed) ใช้เป็นจุดตั้งต้น เริ่มจากต้นตอให้เราสุ่มเลือกหนึ่งสีจาก {แดง, เขียว, น้ำเงิน} ที่มีโอกาสเท่า ๆ กัน ตรงนี้อาจใช้ลูกเต๋า แล้วระบายสีแดง เขียว น้ำเงิน สีละ 2 หน้า ทอยสุ่มเอาก็ได้ครับ ถ้าได้สีอะไร ก็ให้จุดด้วยสีนั้น 1 จุด ณ ตำแหน่งกึ่งกลางระหว่างจุดตั้งต้นกับจุดมุมสีที่สุ่มได้ จุดใหม่ที่เราจุดจะกลายเป็นจุดตั้งต้นสำหรับรอบต่อไป วนซ้ำสุ่มเลือกสี และจุดเช่นนี้เรื่อย ๆ



ถ้าให้ทายผลลัพธ์ บางคนอาจว่าเป็นจุดสีมั่ว ๆ ยุ่งเหยิง ๆ แต่สิ่งที่เราพบกลับเป็น Fractal ที่สวยงามรูปหนึ่ง สามเหลี่ยม Sierpiński!



ผลลองใช้ MATLAB จำลองเกมนี้ ถ้าเครื่องคอมพิวเตอร์ของคุณมีโปรแกรม MATLAB เปิดขึ้นมาทำพร้อม ๆ กันไปเลยครับ เริ่มจากกำหนดจุด 3 จุด x (0,0), y (50,100) และ z (100,100)

x = [0;0];
y = [50;100];
z = [100;0];


ไม่ต้องแปลกใจถ้าคุณพบว่ามันไม่ใช่จุดมุมของสามเหลี่ยมด้านเท่า สุ่มเลือกจุดต้นตอขึ้นมา 1 จุด

seed = rand(2,1)*100;

ทอยเต๋า 5,000 ครั้ง ผมใช้วิธีให้คอมพิวเตอร์สุ่มเลขจำนวนจริงในช่วง [0,1] แล้วแบ่งเป็น 3 กลุ่มคือ a อยู่ในช่วง [0,1/3), b อยู่ในช่วง (1/3,2/3) และ c อยู่ในช่วง (2/3,1] พร้อมสั่งวาดกราฟ

axis square;
hold on;
for n = 1:5000
dice = rand(1);
if dice < 1/3
dot = (x-seed)/2+seed;
elseif dice > 2/3
dot = (z-seed)/2+seed;
else dot = (y-seed)/2+seed;
end
seed = dot;
plot(dot(1),dot(2),'.');
end




มีอะไรอยู่เบื้องหลังกระบวนการสุ่มที่เหวี่ยงจุดให้ประกอบกันเป็นสามเหลี่ยม Sierpiński สมมติว่าจุดแรกถูกสุ่มให้อยู่ในพื้นที่สามเหลี่ยมสีขาวตรงกลางอันที่ใหญ่ที่สุด จุดต่อไปย่อมต้องถูกเหวี่ยงให้ตกลงในพื้นที่สีขาวของสามเหลี่ยมที่มีขนาดเล็กลงมารูปใดรูปหนึ่งในสามรูปนั้น และจุดถัดไปก็ถูกเหวี่ยงให้ตกลงในพื้นที่สีขาวของสามเหลี่ยมที่มีขนาดเล็กลงไปอีกรูปใดรูปหนึ่งใน 3 รูปจาก 9 รูปที่มีขนาดเท่ากัน กระบวนการสุ่มเหวี่ยงจุดถัดไปให้ตกในพื้นที่ว่างสีขาวเช่นนี้เรื่อย ๆ แต่ยิ่งทำซ้ำหลายครั้ง ขนาดของพื้นที่สีขาวรูปสามเหลี่ยมยิ่งเล็กลง (ในความเป็นจริง จุดไม่มีทางถูกเหวี่ยงให้โดนสามเหลี่ยม Sierpiński ได้เลย) แต่เหตุเพราะขนาดสามเหลี่ยมสีขาวที่เล็กลง ๆ นี่แหละครับ บรรดาจุดจึงดูเหมือนก่อร่างสร้างตัวขึ้นมาเป็นสามเหลี่ยม Sierpiński ไม่มีปาฏิหาริย์เบื้องหลังความงามจากน้ำมือกระบวนการสุ่ม

ถ้าเราเปลี่ยนเงื่อนไขตั้งต้น หน้าตาของ Sierpiński ก็เปลี่ยนไป เช่น

a = [50*cosd(30);0];
b = [100*cosd(30);50*sind(30)];
c = [100*cosd(30);50+50*sind(30)];
d = [50*cosd(30);50+100*sind(30)];
e = [0;50+50*sind(30)];
f = [0;50*sind(30)];
seed = rand(2,1)*100;
axis square;
hold on;
for n = 1:5000
dice = rand(1);
if dice < 1/6
dot = 2*(a-seed)/3+seed;
elseif (dice > 1/6) & (dice < 2/6)
dot = 2*(b-seed)/3+seed;
elseif (dice > 2/6) & (dice < 3/6 )
dot = 2*(c-seed)/3+seed;
elseif (dice > 3/6) & (dice < 4/6 )
dot = 2*(d-seed)/3+seed;
elseif (dice > 4/6) & (dice < 5/6 )
dot = 2*(e-seed)/3+seed;
elseif (dice > 5/6)
dot = 2*(f-seed)/3+seed;
end
seed = dot;
plot(dot(1),dot(2),'.');
end





จำนวนมิติของรูปทรงหาจาก log(number of self-similar pieces)/log(magnification factor) เช่นถ้าเราแบ่งสี่เหลี่ยมจัตุรัสออกเป็นสี่เหลี่ยมจัตุรัสย่อย 4 รูป แต่ละรูปเล็กจะมีด้านยาวเป็นครึ่งหนึ่งของรูปตั้งต้น ดังนั้น จำนวนชิ้นที่รูปร่างเหมือนเดิมเท่ากับ 4 และ magnification factor ในที่นี้คือสัดส่วนด้านของสี่เหลี่ยมจัตุรัสรูปตั้งต้นกับรูปเล็กเท่ากับ 2 ดังนั้นมิติเท่ากับ log4/log2 = 2 กรณีมิติของรูปสามเหลี่ยม Sierpiński มีจำนวนชิ้นที่รูปร่างเหมือนเดิมเท่ากับ 3 และ magnification factor คือสัดส่วนความยาวด้านสามเหลี่ยมด้านเท่ารูปตั้งต้นกับรูปเล็กเท่ากับ 2 ดังนั้นมิติเท่ากับ log3/log2 = 1.58496

รายละเอียดเพิ่มเติมดูจาก มิติที่ไม่เต็มหน่วย







Create Date : 21 สิงหาคม 2551
Last Update : 21 สิงหาคม 2551 19:14:30 น. 2 comments
Counter : 11035 Pageviews.

 
ศิลปะที่แทรกในคณิตศาสตร์


โดย: zmen วันที่: 26 สิงหาคม 2551 เวลา:21:23:43 น.  

 
555555 ข้าพเจ้ามองเห็นเป็นหมอนขวาน และลายเกล็ดหิมะ อย่างอื่นไม่เข้าขมองอิ่มเลย คริ คริ

บทขยันก็ขยันอัพจริง ๆ ตามไม่ค่อยทัน
พอว่างหาย ก็เงียบเลยยยยย

คิดถึงนะคะ


โดย: พรายทราย วันที่: 9 กันยายน 2551 เวลา:18:51:34 น.  

ชื่อ : * blog นี้ comment ได้เฉพาะสมาชิก
Comment :
  *ส่วน comment ไม่สามารถใช้ javascript และ style sheet
 
 Pantip.com | PantipMarket.com | Pantown.com | © 2004 BlogGang.com allrights reserved.