วันอาทิตย์ที่ 9 กุมภาพันธ์ พ.ศ. 2563

ไซแลบ ติวเตอร์ 3 การดำเนินการเมทริกซ์

ไซแลบติวเตอร์ 3

การดำเนินการเมทริกซ์
การสร้างเมทริกซ์และการดำเนินการเมทริกซ์อย่างง่าย

การดำเนินการเมทริกซ์ สร้างผนึกรวมไว้ในตัวไซแลบ  คือ การบวก การลบ การคูณ ทรานสโพส อินเวิร์สชั่น     ดีเตอร์มีแนนท์ ฟังก์ชันตรีโกณ ล็อก ฟังก์ชันเอ็กโพเนนเชี่ยล และ อื่นๆ อีกมาก  ให้ศึกษาตัวอย่างต่อไปนี้
-->a=[1 2 3]                               สร้างเว็คเตอร์แถวหนึ่ง
-->a=[1; 2; 3]                             สร้างเว็คเตอร์คอลัมน์หนึ่ง
-->a=[1 2 3]'                               สร้างเว็คเตอร์คอลัมน์เหมือนกับทีกล่าวถึงมาแล้วข้างบน
-->x=[1 2 3]; y=[4 5 6 7];           สร้างเมทริกซ์ a ซึ่งเกิดจากการรวมของ x และ y เทียบได้เหมือนกัน
-->a=[x y]                                     (จำนวนแถวเท่ากัน)
-->a=[1 2 3; 4 5 6; 7 8 9];           กำหนด 3x3 เมทริกซ์เซมิโคลอนแสดงให้เห็นการจบแถวหนึ่งๆ
-->b=a';                                       ทรานสโพส a และเก็บไว้ใน b. เครื่องหมาย Apostrophe(‘) คือตัวกระทำ
                                                      ทรานสโพส

-->c=a+b                                   บวก a กับ bและเก็บผลไว้ใน c.   a และ b จะต้องมีขนาดเท่ากัน
  
ans   =                                    ถ้าเป็นอย่างอื่นไซแลบจะรายงานข้อผิดพลาด
      2     6    10
     6    10    14
    10    14   18
-->d=a-b                                   ลบ b ออกจาก a และเก็บผลใน d.

-->e=a*b                                   คูณ a ด้วย b และเก็บผลไว้ใน e.   a และ b ต้องเทียบได้ตรงกันสำหรับการคูณ
 
  ans   =                                    เมทริกซ์
       14     32     50      
        6      10     14
        50    122   194
-->f=[3 1 2; 1 5 3; 2 3 6];            กำหนด 3x3 เมทริกซ์ด้วชื่อ f.
-->g=inv(f)
0.4285714    0.               -0.1428571   อินเวิร์ทเมทริกซ์ f และเก็บผลไว้ใน g.  fจะต้องเป็น square และมีค่าบวก
0.                  0.2857143 -0.1428571  แน่นอน(square and positive definite)  การเตือนจะปรากฏขึ้นถ้าไม่ถูกต้อง
-0.1428571 -0.1428571   0.2857143      ตามงื่อนไข
-->f*g                                              คำตอบต้องเป็น identity matrix
-->det(f)                                           Determinant ของ f.
ans  =
      49
-->log(a)                                          เมทริกซ์ของ log ของแต่ละองค์ประกอบของ a.
           
การดำเนินการเมทริกซ์บางอย่างเช่นการคูณ เอ็กโพเนนเชียล สามารถดำเนนการตามลำดับ
องค์ประกอบเป็นหลัก
  
-->a .* b                                    คูณกันแต่ละองค์ประกอบ (Element by element multiplication)
ans =
  30   36    42
  66    81    96
 102  126  150
-->a^2                                      ให้ผลเหมือนกันกับ a*a.
ans =
   30    36    42
   66    81    96
   102  126   150
-->a .^2                                     แต่ละองค์ประกอบยกกำลังสอง
ans =
   1     4     9
  16   25   36
  49   64   81

การบวกเมทริก และการลบเมทริกซ์ เป็นการดำเนินการตามองค์ประกอบ ส่วนการบวกและการลบตามองค์ประกอบจะให้ผลเป็นข้อผิดพลาด ดังเช่น
a. + b                                        จะให้ข้อผิดพลาด  error
a. - b

มีฟังก์ชันที่อำนวยความสะดวกบางอย่าง เพื่อใช้ในเมทริกซ์ที่ใช้กันทั่วไป เล่น เมทริกซ์ศูนย์ (zero matrices) เมทริกซ์ไอเดนติตี (identity matrices) และอื่นๆ
-->a=zeros(5,8)                          สร้าง 5x8 matrix  ด้วยทุกองค์ประกอบเป็นศูนย์
-->b=ones(4,6)                          สร้าง 4x6 matrix ด้วยทุกองค์ประกอบเป็น 1
-->c=eye(3,3)                             สร้าง 3x3 identity matrix
-->d=eye(3,3)*10                       สร้าง 3x3 diagonal matrix
-->x = rand(3,5)                         สร้างเมทริกซ์ มี3แถว 5 คอลัมน์ องค์ประกอบเมทริกซ์จากการสุ่ม
                                                   ตัวเลขมีค่า
0 – 1
-->y = int(rand(3,5)*100);           สร้างเมทริกซ์ 3 แถว 5 คอลัมน์องค์ประกอบเป็นเลขจำนวนเต็มสุ่ม
                                                    ระหว่าง 
0 และ 100

เป็นไปได้ที่จะหาขนาด(size) ความยาว (length) และชนิด(type) ของตัวแปรไซแลบ  เช่น
-->y=[1:5; 6:10;11:15];                size คืนกลับค่าจำนวนแถวและคอลัมน์
-->size(y)                                  ในเมทริกซ์ y
ans =
     3.     5.
-->length(y)                               จำนวนองค์ประกอบใน y
ans =
      15
 
สร้างช่วงของตัวเลขที่ที่ทำเป็นเว็คเตอร์  ให้ศึกษาคำสั่งต่อไปนี้
-->a=[1:5]                                 สร้างเว็คเตอร์ มี 5 องค์ประกอบดังนี้ [1, 2, 3, 4, 5]
-->b=[0:0.5:5]                           สร้างเวคเตอร์หนึ่งมี 11 องค์ประกอบดังนี้
                                                    
 [0, 0.5, 1.0,1.5, ... 4.5, 5.0]

 ช่วงที่ต้องการเริ่มจากค่าเริ่มต้น ค่าที่เพิ่ม และ ค่าสุดท้าย แยกด้วยโคลอน (:). ถ้ากำหนดเพียงสองค่า (ให้แยกด้วยเพียงโคลอนเดียว  ด้วยค่าเริ่มต้นและค่าสุดท้าย และคิดให้มีการเพิ่มค่าทีละ 1(a:b เป็นรูปแบบย่อของ a:1:b ซึ่ง a และ b เป็นสเกลล่า)   การเพิ่มจะเป็นค่าลบ หากค่าเริ่มต้นมากกว่าค่าท้าย
ช่วง(range) มีบทบาทสำคัญในการดำเนินการ sub-matrics จะเห็นได้ในในติวเตอเรียลต่อไป


ในการสร้างเมทริกซ์ว่างด้วยคำสั่ง  
-->a=[]
-->size(a)
ans =
     0      0
-->whos - name a
Name                     Type           Size           Bytes       

a                           constant        0x0            0           
ans                        constant       1x2             0         

แบบฝึกหัด 3  creating matric and some simple matric operations
1. สามารถใช้ตัวดำเนินการ .+  เหมือนกับที่ใช้ตัวดำเนินการ .* หรือไม่ ? (Ans: ไม่ได้ จริงแล้วก็ไม่จำเป็นต้องใช้ แทนกัน ).
2. ขนาดของเมทริกซ์ว่างเป็นเท่่าใด  a = []? (Ans: Size 0 x 0)
3. ขณะที่สร้างช่วง สามารถที่จะกำหนดการเพิ่มช่วงแบบลบได้หรือไม่? (Ans: ได้ ถ้าค่าเริ่มต้นมากกว่าค่าท้าย)
4. ใช้คำสั่งใดในการสร้างค่า 0-2pi ที่การเพิ่มขึ้นทีละ p/16? (Ans: 0:%pi/16:2*%pi).
5. คำสั่งใดที่แยกองค์ประกอบทางแนวทะแยง ของเมทริกซ์จรุรัส ให้อยู่ในรูปของเว็คเตอร์? (Ans: a = diag(x) สร้างเวคเตอร์หนึ่งที่มีองค์ประกอบตามแนวทะแยงของเมทริกซ์ x ).
6. กำหนด square matrix a, แล้วสร้างเป็น matrix b ที่องค์ประกอบตามแนวทะแยงที่เหมือนกับใน เมทริกซ์ a แต่องค์ประกอบอื่นทั้งหมดเป็น 0 ? (Ans: b = eye(a) .* a).
7. ให้สกัดเทอม off-diagonal (ที่ offset of 1) ของเมทริกซ์จตุรัส(square matrix)ให้อยู่ในรูปเวคเตอร์
(Ans: b = diag(x, 1)  เพื่อที่จะสะกัดเทอมดังกล่าว ตามแนวทะแยงและ b = diag(x, -1)  เพื่อสะกัด เทอมด้านล่าง ตามแนวทะแยง b = diag(x) คือทางลัดสำหรับ b = diag(x, 0).  ค่าปริยาย offset เป็น zero
8. Create a matrix of size 5x5 having the required elements on the diagonal, above the diagonal and below the diagonal. (Ans: b = diag([1:5]) creates a 5x5 matrix whose diagonal elements are the elements of the vector [1 2 3 4 5]).
9. Create a matrix of size 5x5 having the required elements on the diagonal above the main diagonal. (Ans: b = diag([1:4], 1) creates a 5x5 matrix of zeros and puts the elements of the vector [1 2 3 4] on the diagonal above the main diagonal. To place the vector on the diagonal below the main diagonal use b = diag([1:4], -1)).
10. Create a tri-diagonal matrix of size 5x5 with the specified elements on the main diagonal, above and below the main diagonal. (Ans: b = diag([1:5]) + diag([6:9], 1) + diag([10:13], -1) will put the vector [1 2 3 4 5] on the main diagonal, [6 7 8 9] on the diagonal above the main diagon           

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

แสดงความคิดเห็น