ไซแลบติวเตอร์ 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=[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.-->b=a'; ทรานสโพส a และเก็บไว้ใน b. เครื่องหมาย Apostrophe(‘) คือตัวกระทำ
ทรานสโพส
-->c=a+b บวก a กับ bและเก็บผลไว้ใน c. a และ b จะต้องมีขนาดเท่ากัน
ans = ถ้าเป็นอย่างอื่นไซแลบจะรายงานข้อผิดพลาด
2 6 10
6 10 14
10 14 18
-->e=a*b คูณ a ด้วย b และเก็บผลไว้ใน e. a และ b ต้องเทียบได้ตรงกันสำหรับการคูณ
ans = เมทริกซ์
14 32 50
6 10 14
50 122 194
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.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
ans =
49
-->log(a) เมทริกซ์ของ log ของแต่ละองค์ประกอบของ a.
การดำเนินการเมทริกซ์บางอย่างเช่นการคูณ เอ็กโพเนนเชียล
สามารถดำเนนการตามลำดับ
องค์ประกอบเป็นหลัก
-->a .* b คูณกันแต่ละองค์ประกอบ
(Element by element multiplication)
ans =
30 36 42
66 81 96
102 126 150
ans =
30 36 42
66 81 96
102 126 150
-->a^2 ให้ผลเหมือนกันกับ a*a.
ans =
30 36 42
66 81 96
102 126 150
ans =
30 36 42
66 81 96
102 126 150
-->a .^2 แต่ละองค์ประกอบยกกำลังสอง
ans =
1 4 9
16 25 36
49 64 81
ans =
1 4 9
16 25 36
49 64 81
การบวกเมทริก และการลบเมทริกซ์ เป็นการดำเนินการตามองค์ประกอบ
ส่วนการบวกและการลบตามองค์ประกอบจะให้ผลเป็นข้อผิดพลาด ดังเช่น
a. + b จะให้ข้อผิดพลาด error
a. - b
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
-->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
-->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]
[0, 0.5, 1.0,1.5, ... 4.5, 5.0]
ช่วงที่ต้องการเริ่มจากค่าเริ่มต้น
ค่าที่เพิ่ม และ ค่าสุดท้าย แยกด้วยโคลอน (:). ถ้ากำหนดเพียงสองค่า (ให้แยกด้วยเพียงโคลอนเดียว ด้วยค่าเริ่มต้นและค่าสุดท้าย
และคิดให้มีการเพิ่มค่าทีละ 1(a:b เป็นรูปแบบย่อของ a:1:b ซึ่ง a และ b เป็นสเกลล่า) การเพิ่มจะเป็นค่าลบ หากค่าเริ่มต้นมากกว่าค่าท้าย
ในการสร้างเมทริกซ์ว่างด้วยคำสั่ง
-->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
(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