Upload
raymond-abbott
View
95
Download
0
Embed Size (px)
DESCRIPTION
การเขียนโปรแกรมภาษาคอมพิวเตอร์ 1 Lec07 : [ ข้อมูลชนิด Array การทำงานกับ เมตริกซ์ ] Last Update :: 06/11/2551. โดย อ. นัฐพงศ์ ส่งเนียม http://www.siam2dev.com [email protected] [email protected]. อาเรย์ (Array). คือกลุ่มของจำนวนที่ถูกเก็บอย่างมีโครงสร้าง. - PowerPoint PPT Presentation
Citation preview
1
การเขี�ยนโปรแกรมภาษาการเขี�ยนโปรแกรมภาษา คอมพิ�วเตอร� คอมพิ�วเตอร�11
Lec07Lec07 : : [[ ขี�อม�ลชน�ด Array การทำ�างานก�บ เมตร�กซ์� ]Last Update :: 06/11/2551
โดย อ . น�ฐพิงศ์� ส่%งเน�ยมhttp://[email protected]@yahoo.com
2
อาเรย์� (Array)• คื�อกลุ่��มของจำ�านวนที่��ถู�กเก�บอย์�างม�โคืรงสร�าง
321 aaa 321 aaa
3
2
1
a
a
a
3
2
1
a
a
a
333231
232221
131211
aaa
aaa
aaa
333231
232221
131211
aaa
aaa
aaa
เวกเตอร�แถว (Row Vector)
เวกเตอร�แถว (Row Vector)
เวกเตอร�คอล�มน� (Column Vector)
เวกเตอร�คอล�มน� (Column Vector)
อาเรย�ส่องม�ต� หร(อ เมตร�กซ์� (Matrix)
อาเรย�ส่องม�ต� หร(อ เมตร�กซ์� (Matrix)
3
การคื�านวณระหว�างอาเรย์�ก"บอาเรย์�
• การคื�านวณระหว�างอาเรย์�ก"บอาเรย์� ไม�ว�าจำะเป็%นการ บวก ลุ่บ คื�ณหร�อหาร
– จำ�านวน Element ขีองอาเรย�จำะต�องม�ขีนาด เทำ%าก�น
– การค�านวณระหว%างอาเรย�จำะกระทำ�าระหว%าง Element ต%อ Element
• การคื�ณ การหาร การย์กก�าลุ่"ง แบบอาเรย์�น"'นจำะน�าเอา Element ณ ตำ�าแหน�งเดี�ย์วก"นของสองอาเรย์�มาที่�าการคื�ณ หาร หร�อ ย์กก�าลุ่"งก"น
• ตำ�องใช้� *. ./ .\ .^ เพื่��อให�ตำ�างไป็จำากการคื�ณหารแบบเมตำร-กซ์�
4
เมตำร-กซ์�• คื�ออาเรย์�ข�อม�ลุ่สองม-ตำ-• การบวกแลุ่ะการลุ่บเมตำร-กซ์�ม�ลุ่"กษณะเช้�น
เดี�ย์วก"นก"บการบวกแลุ่ะลุ่บของอาเรย์�• เมตำร-กซ์�ที่��น�ามาบวกหร�อลุ่บก"นตำ�องเป็%นเมตำร-
กซ์�ที่��ม�ขนาดีเที่�าก"น• การคื�ณแลุ่ะการหารของเมตำร-กซ์�แตำกตำ�างจำาก
การคื�ณแลุ่ะหารของอาเรย์�
5
การคื�ณเมตำร-กซ์�• ใช้�เคืร��องหมาย์* • การคื�ณก"นของเมตำร-กซ์� A แลุ่ะ เมตำร-กซ์� B
จำ�านวนคือลุ่"มน�ของ A จำะตำ�องเที่�าก"บจำ�านวน แถูวของ B
• ถู�าเมตำร-กซ์� A ม�ขนาดี m p แลุ่ะเมตำร-กซ์� B ม�ขนาดี p n ผลุ่ลุ่"พื่ธ์�ของการคื�ณระหว�างเม
ตำร-กซ์� A แลุ่ะ B จำะม�ขนาดี m n• โดีย์ป็กตำ- AB จำะม�คื�าไม�เที่�าก"บ BA
6
เมทำร�กซ์� (matrix) (pl. matrices)
เมที่ร-กซ์�เป็%นร�ป็แบบหน2�งของคืณ-ตำศาสตำร� ซ์2�งม"นถู�กเข�ย์นอย์��ในร�ป็
11 12 1
21 22 2
1 2
n
n
m m mn
a a a
a a a
a a a
11 12 1
21 22 2
1 2
n
n
m m mn
a a a
a a a
a a a
หร�อ
7
11 12 1
21 22 2
1 2
n
n
m m mn
a a a
a a a
a a a
เราใช้�ส"ญลุ่"กษณ� aij แที่นส�วนป็ระกอบ (component) ในหลุ่"ก i แถูว j โดีย์ aij อาจำจำะเป็%นจำ�านวนน"บ จำ�านวนเตำ�ม
หร�อจำ�านวนจำร-ง ก�ไดี�
m แถูว (row)
n หลุ่"ก(หร�อสดีมภ์� ) (column)
8
เราเร�ย์กเมที่ร-กซ์�ที่��ม�จำ�านวนหลุ่"ก m หลุ่"กแลุ่ะแถูว n แถูว ว�าเมที่ร-กซ์�ขนาดี mxn (m by n matrix)
aเป็%นเมที่ร-กซ์�ขนาดี a bเป็%นเมที่ร-กซ์�ขนาดีa
b
เป็%นเมที่ร-กซ์�ขนาดี
a b c d
e f g h
i j k l
เป็%นเมที่ร-กซ์�ขนาดี
9
การเทำ%าก�นขีองเมทำร�กซ์�11 12 111 12 1
21 22 221 22 2
1 21 2
qn
qn
p p pqm m mn
b b ba a a
b b ba a a
b b ba a a
เมที่ร-กซ์� 2 เมที่ร-กซ์�จำะเที่�าก"นไดี�ก�ตำ�อเม��อ1. เมที่ร-กซ์�ที่"'งสองม�ขนาดีเที่�าก"น ,m p n q
2. แตำ�ลุ่ะส�วนป็ระกอบที่��ป็ระจำ�าหลุ่"กแลุ่ะแถูวเดี�ย์วก"น ตำ�องม�คื�าเที่�าก"น ij ija b
10
2
1
x
y
1 2
3 4 3 4
x y
0 2 0 1
3 5 4
p r
q s t
11
การบวกและลบก�นขีองเมทำร�กซ์� การบวกแลุ่ะลุ่บก"นของเมที่ร-กซ์� 2 เมที่ร-กซ์�จำะที่�าไดี�
ก�ตำ�อเม��อ เมทำร�กซ์�ทำ�,ง 2 ม�ขีนาดเด�ยวก�นแลุ่ะผลุ่ลุ่"พื่ที่�ที่��ไดี�เป็%นเมที่ร-กซ์�ที่��ม�ขีนาดเทำ%าเด�ม แลุ่ะ
แตำ�ลุ่ะส�วนป็ระกอบม�คื�าเที่�าก"นก"บ ผลุ่รวม (หร�อผลุ่ตำ�าง)ของส�วนป็ระกอบของเมที่ร-กซ์�ที่"'งสองที่��อย์��แถูวแลุ่ะหลุ่"กเดี�ย์วก"น
12
11 12 111 12 1
21 22 221 22 2
1 21 2
qn
qn
p p pqm m mn
b b ba a a
b b ba a a
b b ba a a
11 11 12 12 1 1
21 21 22 22 2 2
1 1 2 2
n n
n n
m m m m mn mn
a b a b a b
a b a b a b
a b a b a b
13
11 12 111 12 1
21 22 221 22 2
1 21 2
qn
qn
p p pqm m mn
b b ba a a
b b ba a a
b b ba a a
11 11 12 12 1 1
21 21 22 22 2 2
1 1 2 2
n n
n n
m m m m mn mn
a b a b a b
a b a b a b
a b a b a b
14
ค-ณส่มบ�ต�บางประการขีองเมทำร�กซ์� ถู�าให� A,B แลุ่ะ C แที่นเมที่ร-กซ์�ที่��ม�ขนาดี mxn แลุ่�ว
1.A B B A (สลุ่"บที่��การบวก)
2. A B C A B C (เป็ลุ่��ย์นกลุ่��มการบวก)
3. A A A (เอกลุ่"กษณ�การบวก)
เม��อ0 0 0
0 0 0
0 0 0
m แถูว
n หลุ่"ก
15
4. ( )A A (ผกผ"นการบวก)
น"'นคื�อถู�า
แลุ่�ว
11 12 1
21 22 2
1 2
n
n
m m mn
a a a
a a aA
a a a
11 12 1
21 22 2
1 2
n
n
m m mn
a a a
a a aA
a a a
16
5.การคื�ณเมที่ร-กซ์�ดี�วย์จำ�านวนจำร-งน"'นคื�อถู�า
แลุ่�ว
11 12 1
21 22 2
1 2
n
n
m m mn
a a a
a a aA
a a a
11 12 1
21 22 2
1 2
n
n
m m mn
a a a
a a aA
a a a
17
การค�ณเมทำร�กซ์� ถู�า A เป็%นเมที่ร-กซ์�ขนาดี mxnB เป็%นเมที่ร-กซ์�ขนาดี pxq
เราจำะหาผลุ่คื�ณของเมที่ร-กซ์� A แลุ่ะ B ไดี�โดีย์AB
BA
18
ข�อส"งเกตำ
m n p qA B C
19
ส"งเกตำว�าในการคื�ณเมที่ร-กซ์�ไม%สามารถูสลุ่"บที่��ไดี�AB BA
แตำ�ว�าในการคื�ณ เมที่ร-กซ์�ย์"งคืงสามารถูเป็ลุ่��ย์นกลุ่��มไดี� A BC AB C
20
ส่ร-ปการค�ณเมทำร�กซ์�m n n p m pA B C 1.
2. AB BA
3. A BC AB C
A(B+C) = AB+AC(B+C)A = BA+CA
4. แลุ่ะ
21
เมทำร�กซ์�จำ�ต-ร�ส่ (square matrix)
เมที่ร-กซ์�คื�อเมที่ร-กซ์�ที่��ม�จำ�านวนของหลุ่"ก เที่�าก"นก"บจำ�านวนแถูว
เมที่ร-กซ์�ดี"งกลุ่�าวน�' จำะม�บที่บาที่มากในการหาผลุ่เฉลุ่ย์ของสมการ
n nA
22
เมทำร�กซ์�ทำแยงม-ม (diagonal matrix)
เมที่ร-กซ์�คื�อเมทำร�กซ์�จำ�ต-ร�ส่ ที่��ม�สมาช้-กในแถูวที่�� i หลุ่"กที่�� j หร�อ aij ม�คื�าเป็%น 0 เม��อi j
11
22
0 0
0 0
0 0 nn
a
a
a
23
พื่-จำารณาว�าเมที่ร-กซ์�ใดีตำ�อไป็น�'เป็%นเมที่ร-กซ์�จำ"ตำ�ร"ส หร�อเมที่ร-กซ์�ที่แย์งม�ม
2 0
0 5
2 3
4 5
2 0
0 1
0 0
24
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 1
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
25
เราเร�ย์กเมที่ร-กซ์�ที่แย์งม�ม ที่��ม�สมาช้-กในแนวที่แย์งเป็%น 1 ที่"'งหมดีว�าเมที่ร-กซ์�เอกลุ่"กษณ� (identity matrix)
1 0 0
0 1 0
0 0 1
I
26
ส"งเกตำว�าเมที่ร-กซ์�เอกลุ่"กษณ�ขนาดี nxn คื�ณก"บเมที่ร-กซ์� ขนาดี nxn ใดีๆ จำะไดี�เมที่ร-กซ์�น"'นเสมอ
AI IA A
ที่�าไม?
27
2 3
4 5A
จำงหาคื�า A2 เม��อ แลุ่ะ A2 =AA
28
หมาย์เหตำ�n
n times
A AA A
29
2 0
0 5A
จำงหาคื�า A4 เม��อ
30
ทำฤษฎี�บทำ ถู�า A เป็%นเมที่ร-กซ์�ที่แย์งม�ม11
22
0 0
0 0
0 0 nn
a
aA
a
แลุ่�ว
11
22
0 0
0 0
0 0
n
n
n
n
nn
a
aA
a
31
2 0
0 5A
จำงหาคื�า A10 เม��อ
32
เราพื่บว�าสามารถูบวก ลุ่บ เมที่ร-กซ์�ไดี� ซ์2�งม�ร�ป็แบบคืลุ่�าย์ คืลุ่2งก"บการบวก แลุ่ะ ลุ่บ ของจำ�านวนจำร-ง
ส�าหร"บการคื�ณเมที่ร-กซ์� ม�คืวามแตำกตำ�างก"นก"บการคื�ณ จำ�านวนจำร-ง ซ์12งไม%จำ�านวนว%าเมทำร�กซ์� 2 ค%าจำะค�ณก�นได�
เส่มอไป แลุ่ะการคื�ณเมที่ร-กซ์�ไม�สามารถูสลุ่"บที่��ไดี�
แลุ่ะเราไม%ม�การหารเมทำร�กซ์�
33
ผกผ�นการค�ณขีองเมทำร�กซ์� ส"งเกตำไดี�ว�าส�าหร"บเมที่ร-กซ์�จำ"ตำ�ร"ส เม��อน�าไป็คื�ณก"บเมที่ร-กซ์�
เอกลุ่"กษณ�ก�จำะไดี�เมที่ร-กซ์�น"'นเสมอAI IA A
แลุ่ะส�าหร"บเมที่ร-กซ์� A ใดีๆ น"'น เราตำ�องการหาเมที่ร-กซ์�ซ์2�งAB BA I
ถู�าเราหาเมที่ร-กซ์�น"'นเจำอ เราจำะเร�ย์กเมที่ร-กซ์�ดี"งกลุ่�าวว�า ผกผ�นการค�ณขีองเมทำร�กซ์� A หร(อ A-1
34
การที่��จำะบอกว�าจำะสามารถูหาผกผ"นการคื�ณของเมที่ร-กซ์� ไดี�หร�อไม�น"'น เราจำะพื่-จำารณาผ�านตำ"วก�าหนดีของเมที่ร-กซ์�
(determinant of a matrix) แลุ่ะเราใช้�ส"ญลุ่"กษณ�
det( )A หร�อ11 12 1
21 22 2
1 2
n
n
m m mn
a a a
a a a
a a a
แที่นตำ"วก�าหนดีของเมที่ร-กซ์�น"'น
35
ตำ"วก�าหนดีของเมที่ร-กซ์�ขนาดี 2x2
a bad bc
c d
1 2
3 4
36
2 0
0 5A
จำงหาคื�า det(A) เม��อ
37
ส"งเกตำว�าเมที่ร-กซ์�ที่แย์งม�มม�คื�าก�าหนดี (determinant) คื�อผลุ่คื�ณของสมาช้-กในแนวที่แย์งม�ม
11
2211 22
0 0
0 0
0 0
nn
nn
a
aa a a
a
38
ทำฤษฎี�บทำ เมที่ร-กซ์�จำ"ตำ�ร"สใดีๆ จำะม�เมที่ร-กซ์�ผกผ"น ก�ตำ�อเม��อ เมที่ร-กซ์�น"'น ม�คื�าก�าหนดี (determinant) ไม�เป็%นศ�นย์�
39
ผกผ�นการค�ณขีองเมทำร�กซ์� 2x2a b
Ac d
ผกผ"นการคื�ณของเมที่ร-กซ์�
คื�อ 1 1
det( )
d bA
c aA
หร�อ 1 1 d bA
c aad bc
40
จำงหาผกผ"นการคื�ณของเมที่ร-กซ์�1 2
3 4
ผกผ"นการคื�ณของเมที่ร-กซ์�คื�อ
41
จำงหาผกผ"นการคื�ณของเมที่ร-กซ์�1 1
2 2
42
การหาผลุ่เฉลุ่ย์ของระบบสมการโดีย์ผกผ"นการคื�ณของเมที่ร-กซ์�
ระบบสมการ 1 1 1
2 2 2
a x b y c
a x b y c
สามารถูถู�กเข�ย์น
ในร�ป็เมที่ร-กซ์�ไดี�เป็%น 1 1 1
2 2 2
a b cx
a b cy
43
1 1 1
2 2 2
a b cx
a b cy
เราสามารถูพื่-จำารณาระบบสมการในร�ป็เมที่ร-กซ์�ไดี�เป็%นAX B
1 1 1
2 2 2
a b cx
A X Ba b cy
44
1 1A AX A B
เราพื่บว�า AX B
1 1A A X IX X A B
45
2x y
0x y
จำงหาผลุ่เฉลุ่ย์ของระบบสมการ
46
2 3 7x y
1x y
จำงหาผลุ่เฉลุ่ย์ของระบบสมการ
47
กฎีขีองเครเมอร� (Cramer’s rule)
เคืรเมอร�ไดี�น�าเสนอว-ธ์�การหาผลุ่เฉลุ่ย์ของระบบสมการอย์�างม�ระบบคื�อส�าหร"บระบบสมการเช้-งเส�น
a b x
c d y
48
a b x
c c y
b
dx
a b
c d
a
by
a b
c d
49
2 3 7x y 1y x
จำงหาผลุ่เฉลุ่ย์ของระบบสมการ
50
โป็รแกรม TestArray ออกแบบหน�าจำอ ด�งร�ป ออกแบบหน�าจำอ ด�งร�ป
LbRow
LbCol
LbArray
TxtRow
TxtCol
BtnOK
BtnCancel
51
If TxtRow.Text = "" Or TxtCol.Text = "" Then MsgBox("กร-ณาป4อนต�วเลขีด�วย") Exit Sub Else Dim row As Int16 = TxtRow.Text Dim col As Int16 = TxtCol.Text Dim k(row - 1, col - 1) As Int16 For i As Int16 = 0 To row - 1 For j As Int16 = 0 To col - 1 Randomize() k(i, j) = Int(Rnd() * 9 + 1) LbArray.Text &= k(i, j) & " " Next j LbArray.Text &= vbCrLf Next i End If
โป็รแกรม TestArrayด�ลเบ�,ลคล�กทำ�2ป-5ม ด�ลเบ�,ลคล�กทำ�2ป-5ม OK OK แล�วเขี�ยนค�าส่�2งด�งน�,แล�วเขี�ยนค�าส่�2งด�งน�,
Private Sub Private Sub BtnOK_Click(ByVBtnOK_Click(ByVal sender As al sender As System.Object, System.Object, ByVal e As ByVal e As System.EventArSystem.EventArgs) Handles gs) Handles BtnOK.ClickBtnOK.Click
........End subEnd sub
52
If TxtRow.Text = "" Or TxtCol.Text = "" Then MsgBox("กร-ณาป4อนต�วเลขีด�วย") Exit Sub Else Dim row As Int16 = TxtRow.Text Dim col As Int16 = TxtCol.Text Dim k(row - 1, col - 1) As Int16 For i As Int16 = 0 To row - 1 For j As Int16 = 0 To col - 1 Randomize() k(i, j) = Int(Rnd() * 9 + 1) LbArray.Text &= k(i, j) & " " Next j LbArray.Text &= vbCrLf Next i End If
53
ผลุ่การ RUN โป็รแกรม TestArray
54
Array ใน VB.NET2005
• การป็ระกาศ Array 1 ม-ตำ-– Dim A() as Int16– Dim A(10) AS INT16– Dim B(2) as string
• การป็ระกาศ Array 2 ม-ตำ-– Dim A(2,2) as int16– Dim B(3,3) as String– Dim MyArr(4,4) as int32
55
44 88 22 1010 2525
Arr1(1) = 4 Arr1(2) = 8 Arr1(3) = 2 Arr1(4) = 10 Arr1(5) = 25
Arr(0)Arr(0)
Array 1 Array 1 dimensiondimension
56
A =
57
1 5 16Dim Arr ( ) As Int 1 5 16Dim Arr ( ) As Int 4 11 4 4 11 4 : : 1 2 8Arr ( ) = 1 2 8Arr ( ) = : : 1 3 2Arr ( ) = 1 3 2Arr ( ) =
: : 14 10 14 10 : : 1 5 25Arr ( ) = 1 5 25Arr ( ) = 4444444. = 4444444. =
- 16 1 1Dim ArrSize As Int = Arr .Length - 16 1 1Dim ArrSize As Int = Arr .Length 4 4 44 44444441 6= 1 4 4 44 44444441 6= 1 LbArray.Text &= Arr1(i) & " " LbArray.Text &= Arr1(i) & " " 4 444 44 444 4 233 16DimArr ( , )AsInt 233 16DimArr ( , )AsInt 2 1 1 5 2 1 2 10 2 1 3Arr ( , ) = : Arr ( , ) = : Arr ( , ) = 2 1 1 5 2 1 2 10 2 1 3Arr ( , ) = : Arr ( , ) = : Arr ( , ) =1515
2 2 1 1 2 2 2 2 2 2 3 3Arr ( , ) = : Arr ( , ) = : Arr ( , ) = 2 2 1 1 2 2 2 2 2 2 3 3Arr ( , ) = : Arr ( , ) = : Arr ( , ) = 2 3 1 2 2 3 2 2 2 3 3 2Arr ( , ) = : Arr ( , ) = : Arr ( , ) = 2 3 1 2 2 3 2 2 2 3 3 2Arr ( , ) = : Arr ( , ) = : Arr ( , ) = LbArray2.Text = Nothing LbArray2.Text = Nothing 16 1 3For row As Int = To 16 1 3For row As Int = To 16 1 3For col As Int = To 16 1 3For col As Int = To LbArray2.Text &= Arr2(row, col) & " " LbArray2.Text &= Arr2(row, col) & " " Next col Next col LbArray2.Text &= vbCrLf LbArray2.Text &= vbCrLf 4 444 4444 444 444
58
•5A•2A