Norm cone


normcone

กิเลสผมนั้นคือเห็นใครทำอะไรได้ ผมก็อยากทำได้บ้าง อย่างรูปข้างบนนั้นเป็นฝีมือ
ของ Prof. Stephen Boyd วาดลงบนหนังสือของท่าน ด้วยความมั่นใจพอสมควรว่า
ท่านเหล่านี้วาดด้วยคอมพิวเตอร์จะด้วยวิธีการใด ๆ ก็แล้วแต่ แต่ผมว่าพวกท่านนั้น
สามารถวาดด้วย MATLAB ได้ ผมเลยใช้เวลาตลอดบ่ายนั่งทำบ้าง ซึ่งถ้าวาดด้วย
Mesh มันจะเป็นอีกแบบไม่ใช่แบบที่ต้องการ (จริง ๆ ผมค่อนข้างมั่นใจว่าเป็นการ
วาดรูปด้วย pstricks มากกว่า เพราะวงกลมดูจะเป็นวงกลมจริง ๆ มากกว่าการลาก
ต่อจุดแบบ MATLAB ถึงอย่างไรก็ตามก็เข้าใจว่าอัลกอริธึมน่าจะเป็นรูปแบบเดียวกัน
ไว้วันหลังจะวาดด้วย pstricks ให้ดูครับ)

สำหรับ MATLAB หลักการก็คือวาดรูปวงกลมไว้ที่ t = 1 ซะก่อน จากนั้น
ก็ต่อจุดจากตำแหน่ง (0,0,0) ไปยังวงกลม (ด้วยความที่ไม่คุ้นกับฟังก์ชัน plot3 ก็
เลยเสียเวลาในการคิดมาก ๆ )

ฟังก์ชันหลักก็คือ plot3(x,y,z) ซึ่งมันจะวาดรูปตามลำดับสมาชิกของ x,y,z เช่น

plot3([0,1],[0,2],[0,4])

ก็จะเป็นการเชื่อมต่อจุด (0,0,0) ไปยังจุด (1,2,4) ถ้าจะเชื่อมต่อสามจุดก็เพิ่มคู่ลำดับ
ไปก็เท่านั้นเอง จากความรู้นี้ก็สามารถวาดรูปข้างต้นได้

t = 0:2*pi/200:2*pi;
y = sin(t);
x = cos(t);
hold off
for i=1:4:size(x,2)
plot3(sin(t),cos(t),ones(1,size(t,2)));
plot3([0,x(i)],[0,y(i)],[0,1]);
hold on
end
xlabel(‘$$x_1$$’,’Interpreter’,’Latex’,’FontSize’,16);
ylabel(‘$$x_2$$’,’Interpreter’,’Latex’,’FontSize’,16);
zlabel(‘$$t$$’,’Interpreter’,’Latex’,’FontSize’,16);
set(gcf,’PaperPositionMode’,’auto’);
print -depsc conenorm.eps

คือวาดวงกลมก่อน แล้วก็เชื่อมจากจุด (0,0,0) ไปยังจุดต่าง ๆ ที่อยู่บนวงกลม เป็น
อันเสร็จเรื่อง

*รูปที่โพส แปลงจาก eps เป็น png โดยใช้ Ghostscript+GhostView และใช้
IrfanView ในการ crop รูป

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s