23
Ch.2 System of Linear Equations 02212471 Semester I - 2011 22 บทที2 ระบบสมการเชิงเสน [10nov2010 rev.1] 2.1 รูปแบบของระบบสมการเชิงเสน (System of Linear Equations) ในหัวขอนีเรากําลังพูดถึงระบบสมการ (System of Equations) ซึ่งบอกเปนนัยวา มีมากกวา 1 สมการ และสิ่งที่ตามมาก็คือ มีตัวแปรไมทราบคา (Unknowns) มากกวา 1 ตัวเชนกัน ตัวอยางเชน เมื่อมี 2 unknowns อาจเปน (x,y) หรือ (x 1 ,x 2 ) เราก็ตองการ 2 สมการ เพื่อให (โดยทั่วไป) สามารถหาคา unknowns ดังกลาวได สมการเชิงเสนที่มีตัวแปร ไมทราบคา n ตัว จํานวน n สมการ เขียนไดดังนีa 11 x 1 + a 12 x 2 + + a 1n x n = b 1 a 21 x 1 + a 22 x 2 + + a 2n x n = b 2 M a n1 x 1 + a n2 x 2 + + a nn x n = b n หรือในเชิงสัญลักษณ ระบบสมการขางบนสามารถเขียนแทนสั้นๆ ไดดวย i n j j ij b x a = =1 for i=1,2,3,…, n (eqn. 2.1) ในที่นีa ij ’s (known) เปนสมาชิกของเมตริกซจตุรัส A มีขนาด n x n สวน b i (known) และ x j (unknown) เปน เวกเตอรแบบคอลัมนที่มีขนาด n ถากําหนดให n = 3 ระบบสมการขางบน นํามาเขียนในรูปเมตริกซไดวา = 3 2 1 3 2 1 33 32 31 23 22 21 13 12 11 b b b x x x a a a a a a a a a (eqn. 2.2) หรือ [A]{x} = {b} หรือสั้นๆ Ax = b (eqn. 2.3) ผลเฉลยหรือ solutions ของสมการเมตริกซ (eqn. 2.3) ไดกลาวถึงและอธิบายแลวในบทที1 หัวขอ (1.7.5) เรื่องการหารเมตริกซ เราไดวาผลเฉลย ดังสมการ (eqn. 1.2) x = A -1 b ซึ่งดูเรียบงาย แตในทางปฏิบัติ เวลาคํานวณคา A -1 (ดวยมือ) กระทําไดยาก โปรแกรม Matlab ไดอํานวยความ สะดวกในการนี้ดวย การหารซายหรือ left division โดยเปลี่ยนการคูณ A -1 หนาเวกเตอร b, inv(A)*b เปน A\b จํานวน n สมการ

รูปแบบของระบบสมการเช ิงเส น (System ...pirun.ku.ac.th/~fengslj/02212471/doc54a/chap02.pdfCh.2 System of Linear Equations 02212471

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: รูปแบบของระบบสมการเช ิงเส น (System ...pirun.ku.ac.th/~fengslj/02212471/doc54a/chap02.pdfCh.2 System of Linear Equations 02212471

Ch.2 System of Linear Equations 02212471 Semester I - 2011

22

บทท่ี 2 ระบบสมการเชิงเสน [10nov2010 rev.1]

2.1 รูปแบบของระบบสมการเชิงเสน (System of Linear Equations) ในหัวขอน้ี เรากําลังพูดถึงระบบสมการ (System of Equations) ซึ่งบอกเปนนัยวา มีมากกวา 1 สมการ

และสิ่งที่ตามมาก็คือ มีตัวแปรไมทราบคา (Unknowns) มากกวา 1 ตัวเชนกัน ตัวอยางเชน เม่ือมี 2 unknowns อาจเปน (x,y) หรือ (x1,x2) เราก็ตองการ 2 สมการ เพื่อให (โดยทั่วไป) สามารถหาคา unknowns ดังกลาวได สมการเชิงเสนที่มีตัวแปร ไมทราบคา n ตัว จํานวน n สมการ เขียนไดดังนี้

a11x1 + a12x2 + … + a1nxn = b1 a21x1 + a22x2 + … + a2nxn = b2 M an1x1 + an2x2 + … + annxn = bn

หรือในเชิงสัญลักษณ ระบบสมการขางบนสามารถเขียนแทนสั้นๆ ไดดวย i

n

jjij bxa =∑

=1 for i=1,2,3,…, n (eqn. 2.1)

ในที่น้ี aij’s (known) เปนสมาชิกของเมตริกซจตุรัส A มีขนาด n x n สวน bi (known) และ xj (unknown) เปนเวกเตอรแบบคอลัมนที่มีขนาด n ถากําหนดให n = 3 ระบบสมการขางบน นํามาเขียนในรูปเมตริกซไดวา

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎧=

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎥⎥⎥

⎢⎢⎢

3

2

1

3

2

1

333231

232221

131211

bbb

xxx

aaaaaaaaa

(eqn. 2.2)

หรือ [A]{x} = {b}

หรือสั้นๆ Ax = b (eqn. 2.3)

ผลเฉลยหรือ solutions ของสมการเมตริกซ (eqn. 2.3) ไดกลาวถึงและอธิบายแลวในบทที่ 1 หัวขอ (1.7.5) เร่ืองการหารเมตริกซ เราไดวาผลเฉลย ดังสมการ (eqn. 1.2)

x = A-1b ซึ่งดูเรียบงาย แตในทางปฏิบัติ เวลาคํานวณคา A-1 (ดวยมือ) กระทําไดยาก โปรแกรม Matlab ไดอํานวยความสะดวกในการนี้ดวย “การหารซาย” หรือ left division โดยเปล่ียนการคูณ A-1 หนาเวกเตอร b, inv(A)*b เปน A\b

จํานวน n สมการ

Page 2: รูปแบบของระบบสมการเช ิงเส น (System ...pirun.ku.ac.th/~fengslj/02212471/doc54a/chap02.pdfCh.2 System of Linear Equations 02212471

Ch.2 System of Linear Equations 02212471 Semester I - 2011

23

เม่ือไดผลเฉลย หรือคําตอบของระบบสมการเชิงเสนมาแลว คําถามที่ควรถาม ก็คือ มันหมายถึงอะไร? คําตอบอยางงาย ก็คือ จะยกตัวอยางในกรณี n = 2 ผลเฉลยที่ได คือ คา x1, x2 หรือ คา x, y หรือมองเปนคูลําดับ (x,y) ของจุดในระนาบ (2 มิติ) และจุดน้ันเปนจุดตัดของสมการเสนตรง 2 เสน ในกรณีท่ี n = 3 คําอธิบายเชิงกราฟก็ยังใชได ซึ่งในกรณีนี้เราก็จะไดกราฟเสนตรงในปริภูมิ (space, 3 มิติ) ตัดกันที่จุดเดียว แตในกรณีท่ี n > 3 จะเปนการยากที่จะอธิบายเชิงกราฟ คําอธิบายอีกแบบหนึ่ง เม่ือเราแทนผลเฉลยที่ไดในสมการทุกสมการในระบบ สมการก็จะเปนจริง ซึ่งโดยทั่วไป คําตอบของระบบสมการเชิงเสน แบงออกไดเปน 3 กรณี คือ

1. มีผลเฉลยเดียวและ unique (Unique Solution) กลาวคือแตละ x1,x2, …, xn มีคาเดียว หรือเปนไปไดแบบเดียว อธิบายไดดวยกราฟ คือ กราฟเสนตรงจะตัดกันที่จุดเดียว ดังรูปที่ 2.1

2. มีผลเฉลยมากมาย หรืออนันต (Infinite Solutions) คือ x1,x2, …, xn เปนไดหลายคา คําอธิบายก็คือ กราฟเสนตรงในระบบจะทับกันพอดี ดังรูปที่ 2.2

3. ไมมีผลเฉลย (No Solution) คือ ไมสามารถหาคา x1,x2, …, xn ได เพราะไมเกิดจุดตัดของกราฟ หรือ เสนกราฟในระบบขนานกัน นั่นเอง ดังแสดงในรูปที่ 2.3

รูปที่ 2.1 กรณี Unique solution - กราฟของระบบสมการ x1 + x2 = 2

x1 - x2 = 2

Page 3: รูปแบบของระบบสมการเช ิงเส น (System ...pirun.ku.ac.th/~fengslj/02212471/doc54a/chap02.pdfCh.2 System of Linear Equations 02212471

Ch.2 System of Linear Equations 02212471 Semester I - 2011

24

รูปที่ 2.2 กรณี Infinite solutions - กราฟของระบบสมการ x1 + x2 = 2

-x1 - x2 = -2

รูปที่ 2.3 กรณี No solution - กราฟของระบบสมการ x1 + x2 = 2

x1 + x2 = 1

Page 4: รูปแบบของระบบสมการเช ิงเส น (System ...pirun.ku.ac.th/~fengslj/02212471/doc54a/chap02.pdfCh.2 System of Linear Equations 02212471

Ch.2 System of Linear Equations 02212471 Semester I - 2011

25

2.2 การใช Matlab ในการหาผลเฉลยของระบบสมการเชิงเสน

ตัวอยางของระบบสมการเชิงเสน n = 4 r + s + t + w = 4 2r – s + w = 2 3r + s – t – w = 2 r – 2s - 3t + w = -3

ในที่น้ี [A] = ⎥⎥⎥⎥

⎢⎢⎢⎢

−−−−

13211113

10121111

, {x} = ⎪⎪⎭

⎪⎪⎬

⎪⎪⎩

⎪⎪⎨

wtsr

และ {b} = ⎪⎪⎭

⎪⎪⎬

⎪⎪⎩

⎪⎪⎨

− 3224

เราตองการหาคา r, s, t และ w ซึ่งในที่น้ีก็คือ {x} จากสมการ (eqn. 1.2) เราสามารถหาคา {x} โดยการนําคา อินเวอรสของเมตริกซ A มาคูณเขาที่ขางหนาเวกเตอร {b} ก็จะไดผลลัพธตามตองการ เชน >> A=[1 1 1 1; 2 -1 0 1; 3 1 -1 -1; 1 -2 -3 1] A = 1 1 1 1 2 -1 0 1 3 1 -1 -1 1 -2 -3 1 >> b=[4; 2; 2; -3] b = 4 2 2 -3 >> inv(A)*b ans = 1.0000 1.0000 1.0000 1.0000

หรืออีกวิธีที่ Matlab อํานวยความสะดวกให โดยการใช การหารซาย หรือ left division, “ \ ” ก็จะไดผลลัพธเชนเดียวกัน คือ r = 1, s = 1, t = 1 และ w = 1 ดังตัวอยาง >> A\b ans = 1.0000 1.0000 1.0000 1.0000

Page 5: รูปแบบของระบบสมการเช ิงเส น (System ...pirun.ku.ac.th/~fengslj/02212471/doc54a/chap02.pdfCh.2 System of Linear Equations 02212471

Ch.2 System of Linear Equations 02212471 Semester I - 2011

26

2.3 วิธีการกําจัดแบบเกาส (Gaussian Elimination method) การแกระบบสมการเชิงเสนดวยวิธี Gauss Elimination (ใหเรียกยอๆ วาวิธี GE) จะแบงออกเปน

2 ข้ันตอนใหญๆ ไดแก (ก) การกําจัดไปขางหนา (forward elimination) ในข้ันตอนน้ีเปาหมายก็คือ การเปลี่ยนสมาชิกของ [A]

ท่ีอยูใตแนวแทยงหลัก ทุกตัวใหเปนศูนย ระบบสมการเชิงเสน n = 3

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎧=

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎥⎥⎥

⎢⎢⎢

3

2

1

3

2

1

333231

232221

131211

bbb

xxx

aaaaaaaaa

เม่ือผานการกําจัดไปขางหนา จะไดเปน

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎧=

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎥⎥⎥

⎢⎢⎢

"3

'2

1

3

2

1

"33

'23

'22

131211

000

bbb

xxx

aaaaaa

(eqn. 2.4)

หมายเหตุ เราจะสังเกตเห็นวาคาสัมประสิทธ์ิ a’s และสมาชิก b’s บางตัวมีเคร่ืองหมาย prime (’) และ double prime (”) อยูที่ตําแหนง superscript หมายความวาคาเหลาน้ันไดมีการเปล่ียนแปลงไป 1 คร้ัง และ 2 คร้ัง ตามลําดับ กอนที่จะกลาวตอไป ขอใหคําจํากัดความของเมตริกซชนิดพิเศษอีก 1 ชนิด คือ triangular matrix ซึ่งแบงยอยออกเปน 2 แบบ คือ

- เมตริกซชนิดสามเหลี่ยมบน (Upper triangular matrix, U) จะมีสมาชิกที่อยูต่ํากวาแนวแทยงหลัก เปนศูนยทุกตัว

⎥⎥⎥⎥

⎢⎢⎢⎢

44

3433

242322

14131211

00000

0

aaaaaaaaaa

- เมตริกซชนิดสามเหลี่ยมลาง (Lower triangular matrix, L) จะมีสมาชิกที่อยูเหนือแนวแทยงหลัก เปนศูนยทุกตัว

⎥⎥⎥⎥

⎢⎢⎢⎢

44434241

333231

2221

11

000000

aaaaaaa

aaa

Page 6: รูปแบบของระบบสมการเช ิงเส น (System ...pirun.ku.ac.th/~fengslj/02212471/doc54a/chap02.pdfCh.2 System of Linear Equations 02212471

Ch.2 System of Linear Equations 02212471 Semester I - 2011

27

(ข) การแทนคายอนกลับ (back substitution) เม่ือไดสมการ (eqn. 2.4) ซึ่งอยูในรูปเมตริกซ แลวทําการจัดใหอยูในรูปสมการปกติ เราไดวา

a11x1 + a12 x2 + a13 x3 = b1 a’22x2 + a’23x3 = b’2 (eqn. 2.5)

a”33x3 = b”3 จากสมการ (eqn. 2.5) เปนการงายท่ีจะคํานวณคา {x1, x2, x3} โดยเริ่มจากสมการสุดทายกอน แลวยอนข้ึนมา จะไดคาดังนี้

x3 = b”3 / a”33 x2 = (b’2 - a’23x3) / a’22 (eqn. 2.6) x1 = (b1 - a12 x2 - a13 x3) / a11

เพื่อใหเกิดความเขาใจในวิธีกําจัดแบบเกาส จะทําการศึกษาจากตัวอยางตอไปน้ี

ตัวอยาง 2.1 จงแกระบบสมการตอไปน้ี ดวยวิธีการกําจัดแบบเกาส x1 + 2x2 + x3 = 3 3x1 - x2 - 3x3 = -1 2x1 + 3x2 + x3 = 4

วิธีทํา ทําการ forward elimination มีข้ันตอนดังนี้ 1.

⎥⎥⎥

⎤−

⎢⎢⎢

⎡−−

41

3

132313

121

)0(~A

- สราง Augmented matrix, A~ โดยนํา {b} มาใสใน [A] ไดเปน [A | b]

2.

⎥⎥⎥

⎤−

⎢⎢⎢

⎡−−

41

3

132313

121

)1()0( ~~ AA →

- ทํา a11 ใหเปน 1, Row1 : 11)0(

1)1(

1 / aEE = เม่ือเปน 1 แลว นําไปกําจัด สมาชิกในคอลัมน 1 ท่ีเหลือ คือ ในแถว 2-3 โดย

3.

⎥⎥⎥

−−

⎢⎢⎢

−−−−

2103

110670

121

)2()1( ~~ AA →

Row1 : )1(1

)2(1 EE = , คงเดิม

Row2 : )1(121

)1(2

)2(2 EaEE −=

Row3 : )1(131

)1(3

)2(3 EaEE −=

4.

⎥⎥⎥

−⎢⎢⎢

−− 27/10

3

1107/610

121

)3()2( ~~ AA →

- ทํา a22 ใหเปน 1, โดย Row2 : 22

)2(2

)3(2 / aEE =

แลวนําไปกําจัดสมาชิกในคอลัมน 1 ท่ีเหลือ

Page 7: รูปแบบของระบบสมการเช ิงเส น (System ...pirun.ku.ac.th/~fengslj/02212471/doc54a/chap02.pdfCh.2 System of Linear Equations 02212471

Ch.2 System of Linear Equations 02212471 Semester I - 2011

28

5.

⎥⎥⎥

−⎢⎢⎢

− 7/47/10

3

7/1007/610

121

)4()3( ~~ AA →

Row1 : )3(1

)4(1 EE = , คงเดิม

Row2 : )3(2

)4(2 EE = , คงเดิม

Row3 : )3(232

)3(3

)4(3 EaEE −=

หลังจากที่ไดเมตริกซสามเหล่ียมบนแลว เราก็สามารถหา xi แตละตัวไดดวยการแทนคายอนกลับ (back substitution) จากสมการ (eqn. 2.6) ไดดังน้ี

x3 = b”3 / a”33 = 7/17/4

−− = 4

x2 = (b’2 - a’23x3) / a’22 = 1

)4)(7/6(7/10 − = -2

x1 = (b1 - a12 x2 - a13 x3) / a11 = 1

)4)(1()2)(2(3 −−− = 3

Ans. ขอสังเกต (1) คําตอบที่ไดจากกระบวนการ back substitution จะได xn ออกมากอนแลวคอยๆ ยอนไปขางหนา …, x2, x1 ฉะน้ันตองระวังเร่ืองลําดับของคําตอบ เวลาจะตอบในรูปฟอรมมาตรฐาน x1 = … x2 = … M xn = … (2) ในข้ันตอนที่ 2 และ 4 ของกระบวนการ forward elimination เปนการทําใหสปส. aii มีคาเปน 1 โดยการหารดวยตัว aii เอง แลวจึงนําไปกําจัดสมาชิกตัวท่ีอยูใตมันดวยวิธีพีชคณิต (บวก-ลบ) ในข้ันตอนถัดมา การทําใหเปน 1 เพื่อใหดูงายเวลากระทําการคํานวณดวยมือ แตเวลานําไปเขียนเปนโปรแกรมคอมพิวเตอร เราสามารถรวมขั้นตอนการทําใหเปน 1 ในข้ันตอนการกําจัดไดเลย เชน

ข้ันตอนที่ 3 Row2 : )1(1

11

21)1(2

)2(2 E

aaEE −=

Row3 : )1(1

11

31)1(3

)2(3 E

aaEE −= , และ

ข้ันตอนที่ 5 Row3 : )3(2

22

32)3(3

)4(3 E

aaEE −=

การรวบข้ันตอนลักษณะนี้ จะใชไดในกรณีที่ระบบสมการมีขนาดใหญกวาน้ีดวย (กรณี n > 3 หรือ n ท่ีเปนจํานวนเต็มใดๆ) ประโยชนก็คือจะทําให code ท่ีเขียนข้ึนกระชับ ดูงายเปนระบบ (แตอาจจะเขาใจยาก เวลาอานทําความเขาใจ algorithm)

Page 8: รูปแบบของระบบสมการเช ิงเส น (System ...pirun.ku.ac.th/~fengslj/02212471/doc54a/chap02.pdfCh.2 System of Linear Equations 02212471

Ch.2 System of Linear Equations 02212471 Semester I - 2011

29

2.3.1 ปญหาที่อาจจะเกิดจากวิธีการกําจัดแบบเกาส กรณีที่ 1 – ปญหาจากการหารดวยศูนย (หรืออาจใชช่ือหัวขอวา Pivoting in GE) ในวิธิเกาสนี้ หากเกิดกรณีท่ีสปส.ตัวแรกที่ใชในการกําจัดแถวอ่ืนๆ เปนศูนย เชน ในข้ันตอนที่ 2 และ 4 ใน forward elimination โปรแกรมก็ไมสามารถ run ได จึงตองทําการสลับเอาแถวอื่นที่สปส.ไมเปนศูนยข้ึนมากําจัดแทน เราเรียกการสลับแถว (อยางเดียว) วา “Partial Pivoting” ซึ่งวิธีการนี้จะไมมีผลตอลําดับของผลเฉลยที่ได (x1, x2, x3, …) มีบางกรณีที่อาจตองทําการสลับคอลัมน (column switching) ดวย ซึ่งถามีการสลับทั้งแถวและคอลัมนจะเรียก “Full Pivoting” ซึ่งจะซับซอนกวาการสลับแถวเพียงอยางเดียว เพราะหากสลับคอลัมน ลําดับของผลเฉลยก็จะเปลี่ยนไป เชน (x1, x3, x2) เวลาเขียนโปรแกรม ก็จะตองมีการสลับคา b’s ตามไปดวย และตองบันทึกประวัติการสลับคอลัมน เพื่อจะไดทราบลําดับที่ถูกตองของผลเฉลยที่ไดออกมา จะเห็นไดวาเปนข้ันตอนที่ยุงยากมาก ฉะน้ันการสลับคอลัมนจึงไมนิยมในวิธีเกาส

ตัวอยาง 2.2 จงแกระบบสมการตอไปน้ี ดวยวิธีการกําจัดแบบเกาส 2x2 + 3x3 = -1 4x1 + 5x2 + 6x3 = 8 7x1 + 8x2 + 9x3 = 14

กรณีที่ 2 – ปญหาจากการปดเศษ (หรืออาจใชช่ือหัวขอวา Scaling in GE) ในกรณีท่ีสปส.ในแถวมีความแตกตางกันมาก มีขอแนะนําวาใหทําการปรับคาของสปส.ตัวท่ีใหญท่ีสุดใหเปน 1 โดยการหารตลอดดวยคาใหญสุดนั้นทั้งแถว คาสปส.ตัวอื่นที่มีคานอยก็อาจมีคาเขาใกลศูนย โดยเฉพาะถาเปนตัวแรกของแถวที่ใชกําจัด ก็จะทําใหเขากรณีท่ี 1 เราก็จะใช Partial Pivoting รวมดวย กรณีที่ 3 – ปญหาที่สปส.ใน [A] ของระบบสมการมีสภาวะไมเหมาะสม (Ill-conditioned [A]) ในการที่จะอธิบายสภาวะ (ขอเรียกสั้นๆ วา) “Ill-conditioned” นี้ จะตองยอนไปที่วิธีการหาผลเฉลยของระบบสมการดวย Cramer’s Rule ซึ่งเหมาะสําหรับระบบสมการเล็กๆ (คือ n นอยๆ)

Cramer’s Rule เราสามารถเขียนผลเฉลย xi ของระบบสมการเชิงเสน [A]{x}={b} ดวยอัตราสวนของ determinants 2 ตัว โดยที่ determinant ของ ตัวเศษ (nominator) จะแทนคอลัมน i ใน [A] ดวย {b} และตัวสวน (denominator) คือ det[A] หรือ |A| ฉะน้ัน ในระบบสมการ n = 3

Page 9: รูปแบบของระบบสมการเช ิงเส น (System ...pirun.ku.ac.th/~fengslj/02212471/doc54a/chap02.pdfCh.2 System of Linear Equations 02212471

Ch.2 System of Linear Equations 02212471 Semester I - 2011

30

x1 =

333231

232221

121211

33323

23222

12121

aaaaaaaaaaabaabaab

= A...

x2 = A

abaabaaba

33331

23221

12111

M จะสังเกตวาถา det[A] มีคาเขาใกลศูนย ( ≅ 0) หรือนอยมากๆ จะทําให xi =

A... ≅ ∞

หรือมีคามากๆ และจะเปนผลเฉลยที่ไมถูกตอง เราเรียกกรณีที่ det[A] ≅ 0 วา “Ill-conditioned” ซึ่งจะเกิดข้ึนในกรณีท่ีมี 2 สมการ (หรือมากกวา) มีความชันใกลเคียงกันมากๆ ทําใหเสมือนมีจุดตัด (solutions ของระบบสมการ) หลายจุด และในกรณีที่ det[A] = 0 เราเรียกระบบสมการนี้วาเปน Singular และจะหา solutions ไมได ในกรณีท่ี det[A] มีคานอยๆ แตไมเปนศูนย ระบบจะมี ill-conditioned ถาในระบบที่มี ill-conditioned ไมมาก บางกรณีจะสามารถแกไขดวยวิธี scaling ได

ตัวอยาง 2.3 จงแกระบบสมการตอไปน้ี ดวยวิธีการกําจัดแบบเกาส

⎭⎬⎫

⎩⎨⎧

=⎭⎬⎫

⎩⎨⎧

⎥⎦

⎤⎢⎣

⎡2000,100

11000,1002

2

1

xx

Page 10: รูปแบบของระบบสมการเช ิงเส น (System ...pirun.ku.ac.th/~fengslj/02212471/doc54a/chap02.pdfCh.2 System of Linear Equations 02212471

Ch.2 System of Linear Equations 02212471 Semester I - 2011

31

2.4 วิธีเกาส-จอรแดน (Gauss-Jordan method) วิธีเกาส-จอรแดน หนังสือบางเลมใช วิธีเกาส-ชอรดอง (ใหเรียกยอๆ วาวิธี GJ) เปนวิธีที่ปรับปรุง

เพิ่มเติมมาจากวิธี Gauss Elimination กลาวคือ เม่ือเราไดเมตริกซสามเหลี่ยมบน, U จากกระบวนการ forward elimination แลว เราจะดําเนินการกําจัดตอไปจนกระทั่ง เมตริกซ A กลายเปน Identity matrix ซึ่งเราจะไดวา

⎪⎭

⎪⎬

⎪⎩

⎪⎨

=⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎥⎥⎥

⎢⎢⎢

*3

*2

*1

3

2

1

100010001

bbb

xxx

(eqn. 2.7)

จากสมการ (eqn. 2.7) เราจะทราบผลเฉลยไดทันที ซึ่งก็คือเวกเตอร b ท่ีไดน่ันเอง x1 = *

1b x2 = *

2b , และ x3 = *

3b

ตัวอยาง 2.4 จงแกระบบสมการในตัวอยาง 2.1 ดวยวิธีเกาส-จอรแดน

วิธีทํา เราเร่ิมตนดวยผลลัพธจากการทํา forward elimination ท่ีข้ันตอนที่ 5 ของตัวอยาง 2.1 ดังน้ี

⎥⎥⎥

−⎢⎢⎢

− 7/47/10

3

7/1007/610

121

)4(~A

- ผลลัพธจากการทํา forward elimination

1.

⎥⎥⎥

⎢⎢⎢

47/10

3

1007/610

121

)5()4( ~~ AA →

- ทํา a33 ใหเปน 1, Row3 : 33)4(

3)5(

3 / aEE = แลวนําไปกําจัดสมาชิกในคอลัมนเดียวกันกับ a33 ที่อยูเหนือข้ึนไป คือแถวที่ 2 และ 1

2.

⎥⎥⎥

⎤−−

⎢⎢⎢

421

100010021

)6()5( ~~ AA →

Row3 : )5(3

)6(3 EE = , คงเดิม

Row2 : )5(323

)5(2

)6(2 EaEE −=

Row1 : )5(313

)5(1

)6(1 EaEE −=

3.

⎥⎥⎥

⎤−

⎢⎢⎢

42

3

100010001

)7()6( ~~ AA → Row3 : )6(

3)7(

3 EE = , คงเดิม Row2 : )6(

2)7(

2 EE = , คงเดิม Row1 : )6(

212)6(

1)7(

1 EaEE −= ฉะนั้นเราไดผลเฉลยของระบบสมการตรงกันกับในตัวอยาง 2.1 ดังน้ี

x1 = 3 x2 = -2, และ x3 = 4 Ans.

Page 11: รูปแบบของระบบสมการเช ิงเส น (System ...pirun.ku.ac.th/~fengslj/02212471/doc54a/chap02.pdfCh.2 System of Linear Equations 02212471

Ch.2 System of Linear Equations 02212471 Semester I - 2011

32

2.5 วิธี LU Decomposition วิธี LU Decomposition เปนวิธีการหาผลเฉลยของระบบสมการเชิงเสนอีกวิธีหน่ึง ที่มีหลักคิดท่ีแตกตาง

จากวิธีการกําจัดแบบเกาส และวิธีเกาส-จอรแดน แตกลไกการหาผลเฉลยมีสวนคลายคลึงกัน (เราตกลงกันใหเรียกยอๆ วาวิธี LU) ในวิธีน้ีเมตริกซ [A] จะถูก decompose หรือแยกออกเปนเมตริกซ 2 ตัว คือ [L] กับ [U] ซึ่งก็ คือเมตริกซชนิดสามเหล่ียมลางและสามเหล่ียมบน (ตามลําดับ) และเปนที่มาของชื่อวิธี มีข้ันตอนการทําดังนี้ เราเร่ิมตนดวยระบบสมการเชิงเสนในรูปฟอรมเมตริกซ

[A]{x} = {b} (eqn. 2.8) decompose [ ] [ ]LA → [ ]U แทนคา [A] ใน (eqn. 2.8), [L] [U]{x} = {b} (eqn. 2.9) กําหนดให [U]{x} = {y} (eqn. 2.10) สมการ (eqn. 2.10) กลายเปน [L]{y} = {b} (eqn. 2.11) เราไดเรียนรูเก่ียวกับเมตริกซชนิดสามเหล่ียม 2 ชนิด แลววา

[L] = ⎥⎥⎥

⎢⎢⎢

333231

2221

11

000

lllll

l

[U] = ⎥⎥⎥

⎢⎢⎢

33

2322

131211

000

uuuuuu

นอกจากนี้ เม่ือพิจารณาลักษณะพิเศษของสมาชิกของ [L] และ [U] วิธี LU ยังสามารถแบงยอยออกเปน 3 วิธี ดังตอไปน้ี ถา lii = 1 เรียกวา Doolittle’s method uii = 1 เรียกวา Crout’s method lii = uii เรียกวา Choleski’s method

เปาหมายของเราคือตองการหาผลเฉลย xi = … แตกอนจะทราบ {x} จากสมการ (eqn. 2.10) เราตองทราบ {y} เสียกอน ซึ่งในที่น้ี {y} จะหาไดจากสมการ (eqn. 2.11)

[L]{y} = {b} เขียนสมการ (eqn. 2.11) ในรูปแบบเมตริกซ

⎥⎥⎥

⎢⎢⎢

333231

2221

11

000

lllll

l

⎪⎭

⎪⎬

⎪⎩

⎪⎨

=⎪⎭

⎪⎬

⎪⎩

⎪⎨

3

2

1

3

2

1

bbb

yyy

(eqn. 2.12)

Page 12: รูปแบบของระบบสมการเช ิงเส น (System ...pirun.ku.ac.th/~fengslj/02212471/doc54a/chap02.pdfCh.2 System of Linear Equations 02212471

Ch.2 System of Linear Equations 02212471 Semester I - 2011

33

- เราสามารถหาคา {y} จากสมการ (eqn. 2.12) ดวยวิธีแทนคาไปขางหนา (forward substitution) y1 = b1 / l11 y2 = (b2 - l21y1) / l22 (eqn. 2.13) y3 = (b3 - l31 y1 - l32 y2) / l33

เม่ือไดคา {y} แลว นําไปแทนในสมการ (eqn. 2.10) เพื่อหาผลเฉลย {x} จะไดวา

[U]{x} = {y} เขียนในรูปแบบเมตริกซ

⎥⎥⎥

⎢⎢⎢

33

2322

131211

000

uuuuuu

⎪⎭

⎪⎬

⎪⎩

⎪⎨

=⎪⎭

⎪⎬

⎪⎩

⎪⎨

3

2

1

3

2

1

yyy

xxx

(eqn. 2.14)

- ถึงตอนน้ี เราสามารถหาคา {x} จากสมการ (eqn. 2.14) ดวยวิธีแทนคายอนกลับ (backward substitution) x3 = y3 / u33 x2 = (y2 - u23x3) / u22 (eqn. 2.15) x1 = (y1 - u12 x2 - u13 x3) / u11

ขอสรุปของวิธี LU ในเบื้องตนนี้ เราพบวาเม่ือเราไดดําเนินการ 3 ข้ันตอนหลัก ดังตอไปนี้ เราก็จะไดผลเฉลยของระบบสมการเชิงเสน ข้ันตอนที่ 1 - แยก [ ] [ ]LA → [ ]U

ข้ันตอนที่ 2 - ทําการ forward substitution ในสมการ (eqn. 2.12) จะได {y} ข้ันตอนที่ 3 - ทําการ backward substitution ในสมการ (eqn. 2.14) จะได ผลเฉลย {x} หลักการทั่วไปในการแยก (decompose) เมตริกซ [A] เปน [L] กับ [U] วิธีการโดยทั่วไปในการแยกเมตริกซ [A] เปน [L][U] อาศัยความสัมพันธท่ีวา [L][U] = [A] เขียนในรูปฟอรมเมตริกซ ไดวา

⎥⎥⎥

⎢⎢⎢

333231

2221

11

000

lllll

l

⎥⎥⎥

⎢⎢⎢

33

2322

131211

000

uuuuuu

= ⎥⎥⎥

⎢⎢⎢

333231

232221

131211

aaaaaaaaa

เปาหมายของเรา คือ ตองการหาสมาชิกใน [L] และ [U] ซึ่งก็คือ lij และ uij กระทําโดยการคูณเมตริกซทางดานซาย (LHS) ของสมการและใหเทากับเมตริกซ [A] ซึ่งอยูทางดานขวา (RHS) ตัวอยางเชน

Page 13: รูปแบบของระบบสมการเช ิงเส น (System ...pirun.ku.ac.th/~fengslj/02212471/doc54a/chap02.pdfCh.2 System of Linear Equations 02212471

Ch.2 System of Linear Equations 02212471 Semester I - 2011

34

[1] เพื่อท่ีจะได a11 เราคูณ Row1 ของ [L] กับ Col.1 ของ [U] จะไดวา l11 u11 = a11 เม่ือพิจารณาสมการขางบน จะพบวา เราจะไดคา l11 หรือ u11 ตัวใดตัวหน่ึง เม่ือเราทราบคาของอีกตัว (พิจารณาสมาชิกที่ลอมรอบดวยวงกลมและวงรี)

[2] เพื่อท่ีจะได a21 เราคูณ Row2 ของ [L] กับ Col.1 ของ [U] จะไดวา l21 u11 = a21 จะพบวาสภาวะคลายๆ กับกรณีแรก คือจะไดคา l21 หรือ u11 ตัวใดตัวหน่ึง เม่ือเราทราบคาของอีกตัว (พิจารณาสมาชิกที่ลอมรอบดวยเสนทึบ) M (ขอขามนิดหนอย)

[3] เพื่อท่ีจะได a22 เราคูณ Row2 ของ [L] กับ Col.2 ของ [U] จะไดวา l21 u12 + l22 u22 = a22 ในข้ันนี้เราตองทําการแทนคา ตัวที่ทราบคาแลวจากข้ันตอนที่ผานๆ มา เราก็จะทราบคาของ unknown เพิ่มข้ึน M (ตอไปเรื่อยๆ) ทําการ match ผลคูณทาง LHS กับสปส. aij ทาง RHS ไปเรื่อยๆ ก็จะทราบคาสมาชิกของ [L] และ [U] ครบทุกตัว

ขอสังเกต เม่ือพิจารณาลักษณะพิเศษยอยๆ ของวิธี LU เชน วิธีของ Crout (uii = 1) ประกอบกับสมการในข้ันตอน [1], [2] และ [3] เราก็จะไดคา l11 , l21 และ l22 ทันที

กลไกการทํางานของวิธี LU ก็คือ เราจะเสียเวลาในการแยก [A] เปน [L] [U] คร้ังเดียว ซึ่งเหมาะสมกับระบบสมการเชิงเสนที่ LHS เปนตัวแทนหรืออธิบายระบบที่เราสนใจ เชน ในระบบโครงสรางแบบคาน ก็จะมีเมตริกซของคา k ในทางโครงสรางเรียก stiffness matrix อยูทาง LHS ซึ่งก็คือ [A] น่ันเอง สวน {x} ท่ีไมทราบคา (unknowns) ก็จะเปนคาความเคนที่ตําแหนงตางๆ ของคานที่เราสนใจวาคาความเคนที่เราคํานวณได จะเกินขีดจํากัดความปลอดภัยหรือไม หรือเปนคาที่ยอมรับไดตามมาตรฐานหรือไม และเวกเตอร {b} ซึ่งอยูทาง RHS จะเปน load ที่มากระทํากับโครงสรางที่เราออกแบบ เราสนใจที่จะทราบการตอบสนองของโครงสรางที่เราออกแบบกับ load หลายๆ ชนิด ซึ่งก็คือการเปล่ียนแปลงคาใน {b} เม่ือสภาวะของ load เปล่ียนไป ฉะนั้นในวิธี LU นี้ เม่ือได[L] [U] แลว เวลาตองการทราบผลเฉลย {x} ก็เพียงแต run ข้ันตอนการ forward substitution เพื่อหา {y} และ backward substitution เพื่อหาผลเฉลย {x} เทานั้น ซึ่งจะสิ้นเปลืองเวลาไมมาก เม่ือเทียบกับข้ันตอนการแยก [L] [U] ซึ่งจะสงผลใหชวยทุนเวลาในการวิเคราะหระบบขนาดใหญ ที่มีจํานวนสมการมากๆ เม่ือเราเปรียบเทียบวิธี LU กับวิธีการกําจัดแบบเกาส จะพบวา มีจํานวน operations หรือจํานวนครั้งในการบวก ลบ คูณ หาร ใกลเคียงกัน แตวิธี LU จะตองการหนวยความจํามากกวา เพราะทั้ง [L] และ [U] ก็ตางตอง

Page 14: รูปแบบของระบบสมการเช ิงเส น (System ...pirun.ku.ac.th/~fengslj/02212471/doc54a/chap02.pdfCh.2 System of Linear Equations 02212471

Ch.2 System of Linear Equations 02212471 Semester I - 2011

35

ใชหนวยความจํา ซึ่งมีขนาดเทากับเมตริกซ [A] ในปจจุบันไดมีการปรับปรุงการจัดเก็บ [L] และ [U] เขาไปใน [A] เพื่อเปนการลดการใชหนวยความจํา เวลาทําการวิเคราะหปญหาทางวิศวกรรมขนาดใหญจึงมีประสิทธิภาพมากข้ึน ซึ่งจะเห็นเทคนิคน้ี (แบบหน่ึง) ในวิธี LU แบบ Doolittle

2.5.1 วิธี LU Decompostion – Doolittle’s method เราเร่ิมตนจากสมการ [A] = [L][U] โดยมีขอกําหนดเพิ่มเติมคือ lii = 1 หรือเขียนในรูปฟอรมเมตริกซ ไดดังน้ี

⎥⎥⎥⎥

⎢⎢⎢⎢

44434241

34333231

24232221

14131211

aaaaaaaaaaaaaaaa

= ⎥⎥⎥⎥

⎢⎢⎢⎢

1010010001

434241

3231

21

lllll

l ⎥⎥⎥⎥

⎢⎢⎢⎢

44

3433

242322

14131211

00000

0

uuuuuuuuuu

เม่ือพิจารณาสมการขางบน และความรูท่ีไดจากหลักการทั่วไปในการแยก [L] [U] แลว พบวา เม่ือเราทราบคา lii = 1 ถาเราใช Row1 ของ [L] คูณ Col.1, Col.2, Col.3, … ไปเรื่อยๆ เราก็จะทราบคา u1i ในแถวที่ 1 ท้ังหมด น่ีคือข้ันตอนใน Step I ตอมา เม่ือเราทราบ u11 แลว เรานํา Col.1 ของ [U] ไปคูณกับ Row2, Row3, Row 4, … เอาไป match กับ a21, a31, a41, … เราก็จะได li1 ในคอลัมนท่ี 1 ท้ังหมด น่ีคือข้ันตอนใน Step II เม่ือเราทราบ l21 แลว Row2 ของ [L] ซึ่งมีอยู 2 เทอมที่ไมเปนศูนย คือ l21 1 ... ก็จะทราบคาทั้งหมด เราจึงสามารถนํา Row2 ของ [L] ไปคูณกับ Col.2, Col.3, Col 4, … ก็จะทําใหทราบคา u2i ในแถวที่ 2 ท้ังหมด น่ีคือข้ันตอนใน Step III M เราจะทําอยางนี้ สลับไปมาระหวางแถว กับคอลัมนท่ีเหลือ ก็จะไดสมาชิกของ [L] และ [U] ทั้งหมด เราพอจะสรุป Pattern การ decompose เมตริกซ [A] ไดดังนี้

⎥⎥⎥⎥

⎢⎢⎢⎢

44434241

34333231

24232221

14131211

aaaaaaaaaaaaaaaa

เม่ือเสร็จสิ้นกระบวนการ decomposition เราก็จะไดสมาชิกของเมตริกซ [L] กับ [U] ซึง่เราสามารถนํามาเก็บในเมตริกซ [A]โดยทําการ overwrite หรือเขียนทับเมตริกซ [A] เพราะไมตองการใชพ้ืนที่ใน memory เพิ่ม สามารถอธิบายดวย diagram ไดดังน้ี

Step I

Step II

I

IIIV

II IV

decompose

Page 15: รูปแบบของระบบสมการเช ิงเส น (System ...pirun.ku.ac.th/~fengslj/02212471/doc54a/chap02.pdfCh.2 System of Linear Equations 02212471

Ch.2 System of Linear Equations 02212471 Semester I - 2011

36

ขอสังเกต ใน [L\U] (ซึ่งจะเรียกวา Composite matrix) คา uii ท่ีได จะเขียนทับ lii เพราะเราทราบอยูแลววา lii=1 จึงไมจําเปนตองเก็บไวอีก

วิธีการคํานวณหาสมาชิก [L\U] ของวิธี Doolittle Step I – ตอยอดจากคําอธิบาย Step I ท่ีผานมา เราไดวา

u11 = a11

u12 = a12

u13 = a13

u14 = a14

หรือโดยทั่วไป เขียนในรูปสัญลักษณ และ index ไดวา u1j = a1j , j = 1,2,3, …, n (eqn. 2.16)

Step II – ดวยวิธีเปรียบเทียบผลคูณ จะไดวา a21 = l21u11

M

l21 = a21 / u11 l31 = a31 / u11 l41 = a41 / u11

หรือโดยทั่วไป เขียนในรูปสัญลักษณ และ index ไดวา li1 = ai1 / u11 , i = 2,3, …, n (eqn. 2.17)

Step III – จะกระทําที่ Row2 ของ [A] ในสมาชิกที่ยังไมถูกเปลี่ยน ดวยวิธีเปรียบเทียบผลคูณ จะไดวา a22 = l21u12 + u22

M

u22 = a22 - l21 u12 u23 = a23 - l21 u13 u24 = a24 - l21 u14

หรือโดยทั่วไป เขียนในรูปสัญลักษณ และ index ไดวา u2j = a2j - l21 u1j , j = 2,3, …, n (eqn. 2.18)

แทนคา u1j = a1j จาก Step I l21 = a21 / u11 จาก Step II, โดยที่ i = 2 ลงในสมการ (eqn. 2.18) จะไดวา u2j = a2j -

11

21

aa a1j

ULA

Page 16: รูปแบบของระบบสมการเช ิงเส น (System ...pirun.ku.ac.th/~fengslj/02212471/doc54a/chap02.pdfCh.2 System of Linear Equations 02212471

Ch.2 System of Linear Equations 02212471 Semester I - 2011

37

หรือ a2j(2) = a2j

(1) - )1(11

)1(21

aa a1j

(1)

ซึ่งเทียบเคียงไดกับ )1(

111

21)1(2

)2(2 E

aaEE −= , ใน Gaussian Elimination

ฉะนั้น u2j = ผลของการกําจัดในวิธี GE ข้ันตอนที่ 2 ตําแหนงตอตําแหนง

Step IV – ดวยวิธีเปรียบเทียบผลคูณ จะไดวา a32 = l31u12 + l32u22

M l32 = (a32 - l31u12) / u22

l42 = (a42 – l41u12) / u22

หรือโดยทั่วไป เขียนในรูปสัญลักษณ และ index ไดวา li2 = (ai2 – li1u12) / u22 , i = 3, 4, …, n

ในวิธี GE คือ = (ai2(1) - )1(

11

)1(1

aai a12

(1)) / a22(2)

= ai2(2) / a22

(2) ฉะนั้น li2 = สปส.การกําจัดในข้ันตอนที่ 3 ของ GE M ทําเชนน้ีไปเร่ือยๆ จนหาสมาชิกของ [L] และ [U] ไดครบทุกตัว ซึ่งจากการสังเกต เราจะไดขอสรุปของวิธี LU แบบ Doolittle ดังนี้

[U] ไดมาจากผลของการกําจัดดวยวิธี Gaussian Elimination [L] มี lii=1 สวน lij ที่ไมเปนศูนย จะเทากับ สปส.การกําจัด (Eliminating Coefficient) ของวิธี GE

เม่ือได [L] และ [U] แลว ก็จะทําอีก 2 ข้ันตอน เพื่อหาผลเฉลยของระบบสมการ คือ [1] ทํา Forward substitution เพื่อหา yi จากสมการ

[L]{y} = {b}

[2] ทํา Backward substitution เพื่อหา xi จากสมการ [U]{x} = {y}

**

Page 17: รูปแบบของระบบสมการเช ิงเส น (System ...pirun.ku.ac.th/~fengslj/02212471/doc54a/chap02.pdfCh.2 System of Linear Equations 02212471

Ch.2 System of Linear Equations 02212471 Semester I - 2011

38

ตัวอยาง 2.5 จงแกระบบสมการตอไปน้ี ดวยวิธี LU แบบ Doolittle

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎧=

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎥⎥⎥

⎢⎢⎢

472

111312613

3

2

1

xxx

Page 18: รูปแบบของระบบสมการเช ิงเส น (System ...pirun.ku.ac.th/~fengslj/02212471/doc54a/chap02.pdfCh.2 System of Linear Equations 02212471

Ch.2 System of Linear Equations 02212471 Semester I - 2011

39

2.5.2 วิธี LU Decompostion – Crout’s method เราเร่ิมตนจากสมการ [A] = [L][U] โดยมีขอกําหนดเพิ่มเติมคือ uii = 1 เรามีประสบการณบางแลว จากวิธี Doolittle คือ เม่ือเราทราบ uii = 1 เราก็จะสามารถหา l11 , l12 , l13 , … ไดกอน จึงนําไปสู Schematic หรือ Pattern ของการ decompose เมตริกซ [A] ของวิธี Crout ดังน้ี

⎥⎥⎥⎥

⎢⎢⎢⎢

44434241

34333231

24232221

14131211

aaaaaaaaaaaaaaaa

เราไดเห็นกระบวนการ derive สูตรทั่วไปที่ใชหาสมาชิกของ [L] และ [U] ในหัวขอ 2.5.1 มาแลว ในที่น้ีจึงขอละข้ันตอนแสดงที่มา และสรุปข้ันตอนและสูตรของวิธี Crout ดังน้ี

เร่ิมตนจาก กําหนดให cij เปนสมาชิกของ decomposed matrix ของ [A] สําหรับวิธี Crout method

สูตรของวิธี LU แบบ Crout มีดังน้ี

1. ci1 = li1 = ai1 for i = 1,2,3,…, n 2. c1j = u1j = a1j / c11 for j = 1,2,3,…, n 3. for j = 1,2,3,…, n

cij = lij = aij - ∑−

=

1

1

j

kkjikul

และ cjk = ujk = ajk - ∑

=

1

1

j

iikjiul

for i = j,j+1,j+2,…, n

for k = j+1,j+2,j+3,…, n

4. cnn = lnn= ann - ∑−

=

1

1

n

kknnkul

เม่ือได [C] = [L\U] แลว ตองกระทําอีก 2 ข้ันตอน จึงจะไดผลเฉลย {x} ดังนี้ - ทํา Forward substitution (เพื่อใหได yi) y1 = b1 / l11 = b1 / c11

IIIVVI

I III V

ULA

decompose

C =

Page 19: รูปแบบของระบบสมการเช ิงเส น (System ...pirun.ku.ac.th/~fengslj/02212471/doc54a/chap02.pdfCh.2 System of Linear Equations 02212471

Ch.2 System of Linear Equations 02212471 Semester I - 2011

40

yi = (bi - ∑−

=

1

1

i

jjijbl ) / lii =

ii

i

jjiji

c

bcb ∑−

=

−1

1 , for i = 2,3,4,…,n

- ทํา Backward substitution (เพื่อใหได xi หรือผลเฉลยน่ันเอง) xn = yn xi = yi - ∑

+=

n

ijjij xu

1

หรือ xi = yi - ∑+=

n

ijjij xc

1 , for i = n-1,n-2,n-3,…,1

ตัวอยาง 2.6 จงแกระบบสมการตอไปน้ี ดวยวิธี LU แบบ Crout

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎧−=

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎥⎥⎥

⎢⎢⎢

−−−

168

12

243131

152

3

2

1

xxx

2.5.3 วิธี LU Decompostion – Cholesky’s method สําหรับวิธี Cholesky นี้มี requirement หรือขอกําหนดเบื้องตนวา [A] จะตองเปนเมตริกซสมมาตร (Symmetric matrix) และเมื่อทําการแยก [A] → [L][U] แลวจะพบวา [L][U] = [L][L]T ซึ่งในกรณีก็จะทําให ขอกําหนดที่วา lii = uii เปนจริง เราเขียนแสดงการแยก [A] ในรูปเมตริกซฟอรม ไดดังนี้

⎥⎥⎥

⎢⎢⎢

333231

232221

131211

aaaaaaaaa

= ⎥⎥⎥

⎢⎢⎢

333231

2221

11

000

lllll

l

⎥⎥⎥

⎢⎢⎢

33

2322

131211

000

uuuuuu

= ⎥⎥⎥

⎢⎢⎢

333231

2221

11

000

lllll

l

⎥⎥⎥

⎢⎢⎢

33

3222

312111

000

llllll

เม่ือทําการคูณเมตริกซของ RHS และนํามา match กับสมาชิก aij ท่ี LHS จะไดดังน้ี (l11)2 = a11

l11l21 = a12 l11l31 = a13

l11 = √(a11)

l21 = a12 / l11 = a12 / √(a11) l31 = a13 / l11

(l21)2 + (l22)2 = a22 l21l31 + l22l31 = a23

l22 = √[a22 - (l21)2]

l32 = ( a23 - l21 l31) / l22

(l31)2 + (l32)2 + (l33)2 = a33 l33 = √[a33 - (l31)2 - (l32)2]

Page 20: รูปแบบของระบบสมการเช ิงเส น (System ...pirun.ku.ac.th/~fengslj/02212471/doc54a/chap02.pdfCh.2 System of Linear Equations 02212471

Ch.2 System of Linear Equations 02212471 Semester I - 2011

41

เราสรุปความสัมพันธ ในรูปทั่วไปไดดังน้ี [1] สําหรับสมาชิกของ [L] ท่ีแนวแทยงหลัก (diagonal components)

∑−

=

−=1

1

2)(k

jkjkkkk lal (eqn. 2.19)

[2] สําหรับสมาชิกของ [L] ท่ีเหลือ

ii

i

jkjijki

ki l

llal

∑−

=

−=

1

1 , for i=1,2,…,k-1 (eqn. 2.20)

ตัวอยาง 2.7 จงแกระบบสมการตอไปน้ี ดวยวิธี LU แบบ Cholesky

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎧=

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎥⎥⎥

⎢⎢⎢

???

97925555255551555156

3

2

1

xxx

วิธีการหาผลเฉลยตางๆ ท่ีไดศึกษาผานมาในบทนี้ ไมวาจะเปนวิธี การกําจัดแบบเกาส (GE) วิธีเกาส-จอรแดน (GJ) และวิธีแยกแบบแอลยู (LU) รวมท้ังวิธี Cramer’s Rule ดวย ตางก็เปนวิธีตรง หรือ Direct method ซึ่งจะมีจํานวน operations เปนคาที่จํากัด กลาวคือ เม่ือไดกระทํา operations เหลานั้นครบแลว เราก็จะไดผลเฉลยของระบบสมการ หรืออาจจะไมไดผลเฉลย ซึ่งก็ข้ึนอยูกับสภาวะของระบบสมการ เชน ในกรณีที่เมตริกซ [A] เปน Singular matrix ก็จะไมไดผลเฉลย นอกจากวิธีหาผลเฉลยทางตรง (Direct method) ก็จะมีอีกวิธีในการหาผลเฉลยของระบบสมการเชิงเสน คือ วิธีกระทําซ้ํา หรือ Iterative method ซึ่งจะเปนการเดาคําตอบหรือผลเฉลยเบื้องตน (initial solutions) นําไปแทนในระบบสมการ แลวคํานวณผลเฉลยใหม จะกระทําซ้ําไปเรื่อยๆ จนคาวิ่งเขาหาผลเฉลยจริง และมีคา error อยูในเกณฑท่ียอมรับได ก็จะเสร็จสิ้นกระบวนการหาผลเฉลยดวยวิธีกระทําซ้ํา ซึ่งจะขอพักเอาไวกอน และจะกลาวถึงอีกคร้ังในบทตอๆ ไป 2.6 การใชฟงกชั่นภายในของ Matlab ในวิธี LU Decomposition

Matlab ไดประดิษฐคําสั่งสําหรับชวยแกระบบสมการเชิงเสน ดวยวิธี LU Decomposition ไว ซึ่งจะแบงออกเปนหัวขอยอยๆ ดังน้ี

Page 21: รูปแบบของระบบสมการเช ิงเส น (System ...pirun.ku.ac.th/~fengslj/02212471/doc54a/chap02.pdfCh.2 System of Linear Equations 02212471

Ch.2 System of Linear Equations 02212471 Semester I - 2011

42

2.6.1 การแยกเมตริกซแบบ LU โปรแกรม Matlab มีคําสั่งสําหรับชวยสรางเมตริกซ [L] และ [U] ไดโดยตรง น่ันคือคําสั่ง lu(…) ซึ่งรูปแบบการใชคําสั่ง เปนดังนี้ >> [L,U]= lu(A)

ใหทดลองใชกับ ตัวอยาง 2.5 จะไดวา >> A=[3 1 6;2 1 3; 1 1 1] A = 3 1 6 2 1 3 1 1 1 >> b=[2;7;4] b = 2 7 4 >> [L,U]=lu(A) L = 1.0000 0 0 0.6667 0.5000 1.0000 0.3333 1.0000 0 U = 3.0000 1.0000 6.0000 0 0.6667 -1.0000 0 0 -0.5000

ขอสังเกต การที่ L ไมไดเปนเมตริกซสามเหลี่ยมลางโดยสมบูรณ เน่ืองจาก ในข้ันตอนการคํานวณภายในโปรแกรม Matlab ไดมีการสลับแถว ระหวางแถว 2 กับแถว 3 เพื่อใหการคํานวณมีประสิทธิภาพ เม่ือไดคา [L] และ [U] ลองทดสอบคูณกลับ ก็จะไดเมตริกซ [A] ดังน้ี >> L*U ans = 3 1 6 2 1 3 1 1 1

ข้ันตอนตอไป เม่ือเราทราบ [L] และ [U] แลว เราก็จะหา {y} และ ผลเฉลย {x} จากสมการดังตอไปน้ี

[L]{y} = {b} [U]{x} = {y}

Page 22: รูปแบบของระบบสมการเช ิงเส น (System ...pirun.ku.ac.th/~fengslj/02212471/doc54a/chap02.pdfCh.2 System of Linear Equations 02212471

Ch.2 System of Linear Equations 02212471 Semester I - 2011

43

ดวยคําสั่ง Matlab ดังน้ี >> y=L\b y = 2.0000 3.3333 4.0000 >> x=U\y x = 19.0000 -7.0000 -8.0000 23

2.6.2 คําส่ัง Matlab กับวิธี Cholesky

สําหรับวิธีแยก LU แบบ Cholesky ในโปรแกรม Matlab ก็มีคําสั่งอํานวยความสะดวกในการสรางเมตริกซยอย 2 ตัว คือ chol(…) แตคําสั่งนี้จะไดเมตริกซยอย [U] ออกมากอน เราไดทราบจาก หัวขอ 2.5.3 แลววา [A] → [L][U] = [L][L]T ซึ่งหมายถึง [L][U] เปน transpose ของกันและกัน ฉะน้ันเราจึงรับคาออกจาก คําสั่ง chol(…) ดวยเมตริกซ [U] ดังตัวอยาง

ตัวอยาง 2.8 จงแก Matlab ในการแกระบบสมการตอไปน้ี ดวยวิธี Cholesky

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎧=

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎥⎥⎥

⎢⎢⎢

280036503125

621253134

3

2

1

xxx

วิธีทํา จะเห็นไดวา เมตริกซ [A] ของระบบสมการนี้เปนเมตริกซสมมาตร (Symmetric matrix) จึงนําวิธี LU Decomposition แบบ Cholesky มาใช ในโปรแกรม Matlab กระทําเปนข้ันตอน ดังน้ี >> A=[4 3 1; 3 5 2; 1 2 6] A = 4 3 1 3 5 2 1 2 6 >> b=[3125; 3650; 2800] b = 3125 3650 2800 >> U=chol(A) U = 2.0000 1.5000 0.5000 0 1.6583 0.7538 0 0 2.2764

Page 23: รูปแบบของระบบสมการเช ิงเส น (System ...pirun.ku.ac.th/~fengslj/02212471/doc54a/chap02.pdfCh.2 System of Linear Equations 02212471

Ch.2 System of Linear Equations 02212471 Semester I - 2011

44

เม่ือไดคา [U] แลว ลองคูณกลับเพื่อใหไดเมตริกซ [A] จะตองใชสมการ คือ [A]=[L][U] = [L][L]T= [U]T[U] (หรือ [L] = [U]T นั่นเอง) โปรดสังเกต ถาเราสลับตําแหนงการคูณของ [U]T[U] เปน [U][U]Tคําตอบที่ไดก็ไมเทากัน ดังตัวอยาง >> U'*U ans = 4 3 1 3 5 2 1 2 6 >> U*U' ans = 6.5000 2.8644 1.1382 2.8644 3.3182 1.7159 1.1382 1.7159 5.1818

ข้ันตอนตอไปหลังจากไดเมตริกซยอย (decomposed matrices) แลว ก็จะหา {y} และผลเฉลย {x} จากสมการดังตอไปน้ี

[L]{y} = {b}, อยาลืมวาตอนนี้ [L] = [U]T [U]{x} = {y}

ดวยคําสั่ง Matlab ดังน้ี >> y=U'\b y = 1.0e+003 * 1.5625 0.7877 0.6260 >> x=U\y x = 450.0000 350.0000 275.0000

Ans. * * * * *