ผลต่างระหว่างรุ่นของ "01204472/การทดลองเกี่ยวกับเมตริกซ์"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
แถว 28: แถว 28:
  
 
* เวกเตอร์ <tt>u2a</tt> และ <tt>u2b</tt> ที่ <tt>u2 = u2a + u2b</tt> และ <tt>u2a</tt> นั้นตั้งฉากกับ <tt>v1</tt>
 
* เวกเตอร์ <tt>u2a</tt> และ <tt>u2b</tt> ที่ <tt>u2 = u2a + u2b</tt> และ <tt>u2a</tt> นั้นตั้งฉากกับ <tt>v1</tt>
 +
* ให้เวกเตอร์ <tt>v2</tt> เท่ากับเวกเตอร์ที่มีทิศทางเดียวกับ <tt>u2a</tt> แต่มีขนาด 1 หน่วย
  
 
== Matrix norm ==
 
== Matrix norm ==

รุ่นแก้ไขเมื่อ 06:43, 28 มิถุนายน 2555

หน้านี้เป็นส่วนหนึ่งของวิชา 01204472

Orthogonal matrices

เราจะทดลองสร้าง orthogonal matrices โดยการหาเวกเตอร์ที่ตั้งฉากกัน

สุ่มเวกเตอร์

ใน pylab เราสามารถสุ่มเวกเตอร์ได้โดยใช้คำสั่ง rand [1] ซึ่งจะสามารถสร้าง array ตามมิติที่เราระบุได้ เช่น

>>> rand(5)
array([ 0.46074869,  0.45697852,  0.72675971,  0.87655621,  0.59247653])

เราสามารถสร้างเมตริกซ์จาก array ดังกล่าวได้โดยสั่ง matrix แต่เมตริกซ์ที่ได้จะเป็นเมตริกซ์ที่มี 1 แถว ไม่ใช่คอลัมน์เวกเตอร์ที่เราต้องการ แต่เราสามารถ transpose ได้โดยเรียก attribute T ของผลลัพธ์ดังกล่าว เช่น

>>> matrix(rand(5)).T
matrix([[ 0.50004005],
        [ 0.41567827],
        [ 0.56018141],
        [ 0.37370744],
        [ 0.29102686]])

จงเขียนฟังก์ชัน runit(n) ที่สุ่มเวกเตอร์ที่มีขนาด 1 หน่วยที่มีขนาด n

เวกเตอร์ที่ตั้งฉากกัน

ในส่วนนี้ เราจะสนใจกรณีของเวกเตอร์ขนาด 5 เท่านั้น ใช้ฟังก์ชัน runit() สุ่มเวกเตอร์ v1 จากนั้นสุ่มเวกเตอร์ u2 ให้ทดสอบว่าเวกเตอร์ u2 นั้นขนานกับ v1 หรือไม่ (มีโอกาสน้อยมากที่จะเกิดขึ้น) จากนั้นให้คำนวณหา

  • เวกเตอร์ u2a และ u2b ที่ u2 = u2a + u2b และ u2a นั้นตั้งฉากกับ v1
  • ให้เวกเตอร์ v2 เท่ากับเวกเตอร์ที่มีทิศทางเดียวกับ u2a แต่มีขนาด 1 หน่วย

Matrix norm

การแก้ Linear equations

ทดลองการแก้สมการ

ทดลองเขียน gaussian elimination