cpe 332 computer engineering mathematic ii -...

99
PART III : NUMERICAL METHODS 80 CPE 332 Computer Engineering Mathematic II PART III: Numerical Methods CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท (Chapter 7-10)

Upload: vanhanh

Post on 30-Jun-2018

230 views

Category:

Documents


6 download

TRANSCRIPT

PART III : NUMERICAL METHODS 80

CPE 332

Computer Engineering Mathematic II

PART III: Numerical Methods

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

(Chapter 7-10)

PART III : NUMERICAL METHODS :: CHAPTER 7: Roots of Equations 81

CHAPTER VII ROOTS OF EQUATIONS

7.1 นิยามและคําจํากัดความ ในวิชาคณิตศาสตรที่เราเรียนที่ผานมา การหา Solution จะประกอบดวยการแกสมการ ซึ่งรวมถึงการแกสมการ

พีชคณิต การหา Derivative การ Integrate การแกสมการ Differential Equation รวมถึงการใชเครื่องมือทางคณิตศาสตรเพื่อแกสมการ เชน Fourier Transform, Laplace Transform หรือ Z-Transform วิธีการดังกลาวจัดวาเปนการแกปญหาที่เรียก Analytical Method อยางไรก็ตาม ไมใชวาสมการทุกสมการจะหาคําตอบได(ที่อยูในรูปของ Explicit Form) ดังนั้นเราจําเปนที่จะตองหาวิธีอื่นในการแกปญหา นั่นก็คือวิธีการที่เรียก Numerical Method

วิธีการทาง Numerical ที่เคยใชกันมาไดแกวิธีการ Graphical Method และใชบวนการ Interpolation แตเมื่อมีการประดิษฐคอมพิวเตอรขึ้นมา ก็มีการนําคอมพิวเตอรเขามาใช และขยายขอบเขตของวิชานี้ออกเปนสาขาใหมทางคณิตศาสตร มีการศึกษา Algorithm และวิธีการเขียนโปรแกรม รวมถึงการวิเคราะหคาความผิดพลาด(Error Analysis) และลักษณะการ Convergence และ Complexity ของ Algorithm

ในการนําคอมพิวเตอรมาชวยแกปญหาทางดานคณิตศาสตรนั้น จะตองเขาใจกอนวาลักษณะการทํางานของคอมพิวเตอร หรือการคํานวณจะขึ้นอยูกับวิธีการที่เราเขียนโปรแกรมและ Algorithm ที่ใช ในการคํานวณโดยใชเครื่องคํานวณใดใดจะมี Error เกิดขึ้นเสมอ ซึ่งจะแบงไดเปนสองประเภทคือ Round-Off Error และ Truncation Error

Round-Off Error เกิดจากการเก็บตัวเลขใน Memory ของคอมพิวเตอรนั้นจะใชขนาดของ Memory ที่จํากัด และขึ้นอยูกับวาเราใหตัวแปรชนิดอะไร เชน Integer, Long Integer, Float, หรือ Double

Truncation Error เกิดจาก Algorithm หรือวิธีที่เราใหคอมพิวเตอรคํานวณนั้น เปนแคการประมาณจากสมการทางคณิตศาสตรที่เราตองการหาคาโดยใชคอมพิวเตอรเขาชวย และเราไมไดแกสมการทางคณิตศาสตรจริงๆ

หลักการของ Numerical Method คือการประมาณการ หรือ Approximation เปนวิธีการที่จะใชคอมพิวเตอรเพื่อจะหาคําตอบทางคณิตศาสตร โดยไมตองแกสมการทางคณิตศาสตรโดยตรง

ดังนั้นเราจําเปนที่จะตองรูวา Error เรามีมากแคไหน และพอจะยอมรับไดหรือไม นั่นขึ้นอยูกับการนําการคํานวณไปใชงาน ปกติตัวเลขที่จะไปใชงานทางวิศวกรรมศาสตรจะกําหนดดวยคา Significant Digit และจะยอมใหความไมแนนอนของตกเลขตกอยูที่หลักทายเทานั้น ดังนั้นคาของ Significant Digit จะบงบอกถึงจํานวนหลักของตัวเลขที่จะนําไปใชไดอยางมั่นใจ

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

คําวา Accuracy หมายถึงตัวเลขที่เราไดนั้นมีคาใกลเคียงกับคาในความเปนจริงเทาไร แตคําวา Precision หมายถึงตัวเลขที่ไดมานั้นเกาะกลุมกันมากแคไหน ดังนั้นคาของ Precision จะเปนตัวกําหนดจํานวนของ Significant Digit ที่จะตองใช และคาของ Error จะเปนตัวกําหนดความ Accuracy ของตัวเลข

PART III : NUMERICAL METHODS :: CHAPTER 7: Roots of Equations 82

7.1.1 ความหมายของคําวา Error

Error คือคาความแตกตางของคาที่ประมาณการจากคาจริงที่ถูกตองและสามารถเขียนเปนสมการไดดังนี้ Error ion Approximat Value True +=

หรือ ionApproximat - Value TrueError == tE

คา Error ที่ไดจะเปนคาที่เรียก Absolute Error ซึ่งปกติจะไมนิยมใช ที่เราอยากจะรูมากกวาคือมี Error มากแคไหนเมื่อเทียบกับคาจริง หรือที่เราเรียกวา Relative Error คานี้นิยมวัดเปนเปอรเซ็นต และสามารถหาไดดังนี้

%100Value True

ionApproximat - Value True%100Value True

×=×=Erroret

อยางไรก็ตามคา Error ปกติจะหาไมได เนื่องจากเราไมรูคา True Value และถาเรารูคา True Value เราก็คงไมใชคอมพิวเตอรมาหาคา Approximation ใหเสียเวลา ดังนั้นในความเปนจริง คา Error ก็จําเปนตองประมาณคาเชนกัน

โดยปกติแลว การแกปญหาดวยคอมพิวเตอรจะกระทําในลักษณะของ Iterative Algorithm กลาวคือจะมีการประมาณคาขั้นตนกอน จากนั้นเอาคาประมาณที่ไดมาประมาณคาใหมใหถูกตองยิ่งขึ้นโดยใช Algorithm เดิม ขบวนการจะดําเนินตอไปเรื่อยๆจนกวาเราจะไดคาที่พอใจ นั่นหมายถึงคาที่ประมาณไดครั้งใหม ไมแตกตางจากคาเดิมมากนัก หรือไมเปลี่ยนแปลง และ Program ก็จะหยุดการทํางาน

จากการทํางานของคอมพิวเตอรที่กลาวมาเราสามารถใหนิยามของการประมาณคา Error, ไดดังนี้ ae

%100ionApproximatError eApproximat

×=ae

%100ionApproximatPresent

ionApproximat Previous -ion ApproximatPresent ×=ae

ในแตละ Iteration ของการคํานวณ เราหวังวาคา Approximation จะใกลเคียงกับคา True Value เรื่อยๆ หรืออีกนัยหนึ่งคือคา Error จะมีนอยลงเรื่อยๆ และถาเปนเชนนั้นเราเรียกวาการทํางานของโปรแกรมลูเขาหาคาจริง หรือ Convergence อยางไรก็ตามถาเราตั้งคาตั้งตนไมดี หรือใช Algorithm ไมถูก คาที่คํานวณไดใหมจะมี Error สูงกวาเดิม และจะหางจากคาจริงเรื่อยๆ ในกรณีเชนนี้เราเรียกวามันลูออก หรือ Divergence

การ Convergence ของโปรแกรมเปนจริงที่เราตองการ และเรามักจะวัดโดยการเปรียบเทียบ Algorithm ตางๆวามัน Converge เขาสูคาจริงเร็วแคไหน Algorithm ที่มีอัตราการ Converge ไดเร็วกวา จะใชจํานวน Iteration ที่นอยกวา ผลก็คือการคํานวณจะใชนอยกวา และใหผลลัพธในเวลาที่เร็วกวา

7.1.2 Roots of Function

ในบทนี้เราจะศึกษา Algorithm ที่ใชในการหาราก หรือ Root ของ Function โดยที่เราจะกลาวเฉพาะ Function ที่ประกอบดวยหนึ่งตัวแปรเทานั้น ซึ่งเขียนไดในรูปของ )(xfy = และรากของ Function สามารถหาไดจากการแกสมการ

)(xf0)( =xf

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

พึงเขาใจวารากของสมการอาจจะมีไดมากกวาหนึ่งตัว และอาจจะมีรากที่ซ้ํากันไดหรือที่เรียก Multiple Roots อยางไรก็ตาม ในการศึกษาขั้นตนนี้ เราจะสมมุติวา Root ทุกตัวจะมีคาไมซ้ํากัน และเราพอจะรูวารากที่เราตองการอยูที่

PART III : NUMERICAL METHODS :: CHAPTER 7: Roots of Equations 83

บริเวณไหน(การหาคาประมาณของรากของสมการสามารถทําไดโดยการ Plot Graph และดูที่เมื่อไรเสน ตัดกับแกน

)(xfx หรือมีคาเทากับศูนย) กรรมวิธีในการหารากของสมการจะแบงออกเปนสองกลุมใหญๆ กลุมแรกเรียก Bracketing Method เปนวิธีที่

เมื่อเรารูวาคําตอบจะตองอยูในชวงใดชวงหนึ่งของคา x ดังนั้นวิธีนี้จะมีการกําหนดคาสองคา คือชวงที่เราจะหารากของสมการ วิธีนี้เราสามารถแนใจไดวาโปรแกรมจะ Converge อีกวิธีหนึ่งเรียก Open Method ซึง่เราไมจําเปนจะตองรูลวงหนาถึงชวงที่คําตอบจะตองอยู เราอาจจะสมมุติคาตั้งตนขึ้นมาคาหนึ่งสําหรับ Algorithm และ Algorithm มันจะเริ่มทํางานจากคาตั้งตนนี้ จนถึงคําตอบที่ตองการ อยางไรก็ตาม วิธีนี้จะไม Guarantee วาโปรแกรมจะ Converge ขึ้นอยูกับการสมมุติคาตั้งตนของเรา

7.2 Bracketing Method: Bisection Method จากที่กลาวมาแลว รากของสมการที่จุด x คือจุดที่คาของ 0)( =xf ดังนั้นที่จุดนี้ จะมีคาเปลี่ยนจาก

บวกเปนลบ หรือเปลี่ยนจากลบเปนบวก ถาเรากําหนดสองจุดคือ และ จากนั้นคํานวณหา และ และถา

)(xf

lx ux )( lxf )( uxf

0)()( <ul xfxf หมายถึงวาในชวง Function จะมีการเปลี่ยนเครื่องหมาย และจะตองผานจุด กลาวอีกนัยหนึ่งก็คือจะตองมีอยางนอยหนึ่งรากของสมการในชวงนี้

],[ ul xx 0)( =xf

จากนั้นเราลดขนาดชวงใหเล็กลงโดยแบงครึ่งที่จุด2

ulr

xxx += และหาวา Function มีการเปลี่ยนเครื่องหมาย

ในชวงไหน เราจะลดขนาดของชวงที่ตองการหาไปไดครึ่งหนึ่ง และทําเชนนี้ตอไปเรื่อยๆจนไดคําตอบที่พอใจ หลักการดังกลาวก็คือหลักการของ Bisection Method หรือ Bolzano’s Method และสามารถสรุปเปน

Algorithm ไดสามขั้นตอนดังนี้ Algorithm: Step 1: ทําการเดาจุดสองจุดคือคา และคา สมมุติวาคา เปนคาที่ตํ่ากวา จากนั้นทดสอบวา

ถาไมใชใหหาจุดใหม ซึ่งจากขั้นตอนนี้ เรารูวารากจะตองอยูในชวงนี้ lx ux lx

0)()( <ul xfxf

Step 2: ทําการประมาณคา Root ที่ตองการที่จุดกึ่งกลางระหวางสองคาใน Step 1 โดยคํานวณ 2

ulr

xxx +=

Step 3: หาวาตอนนี้ Root ที่ตองการอยูในครึ่งไหนดังนี้ 3.1 ถา 0)()( <rl xfxf แสดงวา Root ที่ตองการอยูในครึ่งลาง ใหต้ัง และกลับไปทํา

Step 2 ru xx =

3.2 ถา แสดงวา Root ที่ตองการอยูในครึ่งบน ใหต้ัง และกลับไปทํา Step 2

0)()( >rl xfxf rl xx =

3.3 ถา 0)()( =rl xfxf แสดงวาคําตอบที่ตองการเทากับ rx

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

จากสมการของ Error Approximation เราสามารถหาคา Error Estimate ของ Bisection Method ไดจาก

PART III : NUMERICAL METHODS :: CHAPTER 7: Roots of Equations 84

%100×−

= Newr

Oldr

Newr

a xxxe

พึงสังเกตวา แมวาวิธีนี้จะใหคา ae ที่ลดลงเรื่อยๆ แตคา te จะมีการแปรผันขึ้นลงได ดังนั้นคา Approximate Error จะไมสอดคลองกับ True Error ทีเดียวนัก ตามปกติเวลาเรา Run โปรแกรม เราจําเปนตองตั้ง Condition ที่โปรแกรมจะหยุดทํางาน ซึ่งมักจะกําหนดเปนคา Threshold Error, โดยที่แตละ Iteration จะมีการตรวจสอบคาและเมื่อใดมันมีคาต่ํากวา (คา Absolute) โปรแกรมจะหยุดทํางาน และใหคําตอบออกมา อีกอยางหน่ึงที่สําคัญก็คือ

se ae

se

ae ที่ไดจะสูงกวา te เสมอ

Example 7.1 สมการสําหรับหาความเร็วของนักโดดรมสามารถแสดงไดดังนี้ ]1[ )/( tmcecgmv −−= โดยที่ คือ

ความเร็ว เปน Dependent Variable, คือเวลา เปน Independent Variable,

v

t g เปน Gravitational Constant, เปนคาคงที่ของการฉุดของรม(Drag Coefficient) และ คือมวลของนักโดดรมและรม

cm

ในการออกแบบรมชูชีพ เราตองการหาคา Drag Coefficient ที่จะคงความเร็วของนักโดดรมใหไดในชวงเวลาที่กําหนด ซึ่งการแกสมการหาคา จะไมสามารถทําไดทางคณิตศาสตร ในการนี้เราจะเอาคอมพิวเตอรเขามาชวย โดยการแกสมการ

c

0]1[)( )/( =−−= − vecgmcf tmc

และหาคา ออกมา ซึ่งก็คือรากของสมการดังกลาว c

สมมุติวา เราตองการหาคา ที่จะใหนักโดดรมคงความเร็วอยูที่ ในเวลา 10 วินาที และคา ควรมีคาอยูระหวาง 12 และ 16

2/8.9,1.68 smgkgm == csm /40 c

เราจะใช Bisection Method หารากของสมการ

16,12,40]1[38.667)( 1.68/10 ==−−= −ul

c xxec

cf

สังเกตวา และคําตอบรวมทั้งคา Error สรุปไดดังตาราง (คา คํานวณจากคา True Value) ซึ่งจากตารางจะเห็นวาวิธีนี้

0)16()12( <ff te

ae ที่ไดจะสูงกวา te เสมอ ดังนั้นเมื่อเราตั้ง Threshold และคํานวนคา เราจะแนใจวา Error จริงจะต่ํากวา Threshold ที่เรากําหนด

se ae

ตารางที่ 7.1 ผลลัพธจากตัวอยางที่ 7.1 Iteration lx ux rx %,ae %,te

1 12 16 14 5.279 2 14 16 15 6.667 1.487 3 14 15 14.5 3.448 1.896 4 14.5 15 14.75 1.695 0.204 5 14.75 15 14.875 0.840 0.641 6 14.75 14.875 14.8125 0.422 0.219

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

PART III : NUMERICAL METHODS :: CHAPTER 7: Roots of Equations 85

7.3 Bracketing Method: False-Position Method แมวา Bisection Method จะเปนวิธีการที่ดี แตจะไมรวดเร็ว ซึ่งประสิทธิภาพสามารถปรับปรุงไดเพิ่มขึ้น

เนื่องจากวิธีของ Bisection Method มันจะ Estimate คา Root ใหมที่ก่ึงกลางชวงเสมอ ซึ่งคา Root ที่แทจริงอาจจะอยูใกลจุดปลายดานใดดานหนึ่ง ทําใหวิธีนี้ Converge ชากวาที่ควรจะเปน ดังนั้นเราควรจะมีวิธีในการประมาณคา Root ใหม วิธีที่ดีกวาคือใชสมการเสนตรง หรือที่เรียก Linear Interpolation (ดูรูป) และกรรมวิธีนี้เรียก False-Position Method หรือ Linear Interpolation Method

จากสามเหลี่ยมคลายในรูป จุดที่เสนตรงตัดกับแกน x สามารถคํานวณไดจากสมการ

ur

u

lr

l

xxxf

xxxf

−=

−)()(

ดังนั้นเราสามารถแกสมการหาคา ไดดังนี้ rx

)()())((

ul

uluur xfxf

xxxfxx−

−−= (False-Position Method)

lx

ux

rx

)( uxf

)( lxf

)(xf

x

รูปท่ี 7.1 แสดงวิธีการของ False-Position Method

Example 7.2 จากตัวอยางเดิม 0]1[)( )/( =−−= − vecgmcf tmc ใหจะลองใช False-Position Method ทําการ

แกปญหา คําตอบ เริ่มจาก

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

16,12 == ul xx

PART III : NUMERICAL METHODS :: CHAPTER 7: Roots of Equations 86

Iteration 1: 16,12 == ul xx

2688.2)(,0669.6)( −== ul xfxf

%89.0,9113.14)2688.2(0669.6

)1612(2688.216 ==−−

−−−= tr ex

Iteration 2: 9113.145426.1)()( ==⇒−= rurl xxxfxf

9113.14,12 == ul xx 2543.0)(,0669.6)( −== ul xfxf

%79.0%,09.0,7942.14)2543.0(0669.6

)9113.1412(2543.09113.14 ===−−−−

−= atr eex

จากตัวอยางขางบน จะดูเหมือนวา Convergence Rate ของ False-Position Method จะดีกวา Bisection Method มาก ทั้งนี้เนื่องจากเราไดคา Estimate ของ Solution ที่ใกลเคียงกับคาจริงมากกวา และปกติก็เปนเชนนั้น ทําใหวิธีนี้นิยมใชมากวาวิธีของ Bisection อยางไรก็ตาม ในบางกรณี วิธีของ False-Position จะ Converge ไดชากวา Bisection Method มาก ดังตัวอยางถัดไป Example 7.3 จงเปรยีบเทียบการทํางานของวิธี Bisection Method และ False-Position Method ในการหารากของสมการ โดย Root ที่จะหามีคาอยูระหวาง 1)( 10 −= xxf ]3.1,0[

คําตอบ วิธีของ Bisection Method จะสรุปเปนตารางไดดังนี้

ตารางที่ 7.2 แสดงผลลัพธของ Bisection Method สําหรับตัวอยางที่ 7.3 Iteration lx ux rx %,te %,ae

1 0 1.3 0.65 35 100.0 2 0.65 1.3 0.975 2.5 33.3 3 0.975 1.3 1.1375 13.8 14.3 4 0.975 1.1375 1.05625 5.6 7.7 5 0.975 1.05625 1.015625 1.6 4.0

สังเกตไดวา หลังจาก Iteration ที่ 5 คา Error จะลดลงไมถึง 2% ในกรณีนี้วิธีของ False-Position Method จะใหผลลัพธที่ชากวามาก ซึ่งสรุปไดเปนตารางขางลาง พึงสังเกตอีกวาในกรณีนี้ ta ee < ซึ่งกลับกับวิธีกอน ทําใหการพิจารณาจากคา ทําใหเราเขาใจผิดได

เหตุผลก็คือการ Interpolation Fail เพราะตําแหนงที่ไดแยกวาวิธีของ Bisection Method เนื่องจาก Function มีการเปลี่ยนแปลงอยางกะทันหันในชวง Bracket

ae

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

PART III : NUMERICAL METHODS :: CHAPTER 7: Roots of Equations 87

ตารางที่ 7.3 แสดงผลลัพธของ False-Position Method สําหรับตัวอยางที่ 7.3 Iteration lx ux rx %,te %,ae

1 0 1.3 0.09430 90.6 2 0.09430 1.3 0.18176 81.8 48.1 3 0.18176 1.3 0.26287 73.7 30.9 4 0.26287 1.3 0.33811 66.2 22.3 5 0.33811 1.3 0.40788 59.2 17.1

7.4 Open Method: Simple One-Point Iteration ในกรรมวิธีของ Bracket Method คาของ Root จะอยูในชวงที่กําหนดไว ดังนั้นในแตละ Iteration เราจะทําให

ชวงนี้แคบลง และผลลัพธจะ Converge อยางไรก็ตาม ใน Open Method จะกําหนดแคคาตั้งตน หรือชวงที่คาของ Root อาจจะไมอยูในชวงนี้ก็ได ดังนั้นบางครั้งโปรแกรมจะ Diverge แตถาเราเลือกคาที่เหมาะ โปรแกรมจะ Converge และปกติจะ Converge ไดรวดเร็วกวา Bracket Method มาก

วิธีการงายที่สุดในการหารากของสมการ ทําไดโดยการจัดเรียงสมการใหมในรูป คือยามยามยายคา

)(xgx =x บางสวนมาอยูดานซายของสมการ และทําการประมาณคาใหมจากคาตั้งตน ทําเชนนี้เรื่อยไปจนไดคําตอบที่มีคา

Precision ที่ตองการ สังเกตวาบางครั้งการจัดเรียงสมการใหมสามารถกระทําไดหลายวิธี และจะมีผลตอการ Converge และผลลัพธที่ได

ยกตัวอยางสมการ สามารถจัดเรียงใหมในรูป0332 =+− xx )(xgx = ไดเปน

3

32 +=xx หรือ 33 −= xx

ถาเราทํา Iteration ของสองสมการนี้ จะไดการ Converge ที่ตางกัน บางครั้งสมการสามารถสรางไดโดยการบวกดวย x ทั้งสองขางเชนจากสมการ เราไดสมการใน

รูป คือ เปนตน 0sin =x

)(xgx = xxx += sin

การทํางานของ Algorithm จะประมาณคาใหม จากคาเดิม ใน Iteration ที่1+ix ix 1+i โดยให เปนคาตั้งตนดังนี้

0x

)(1 ii xgx =+ ดังนั้นคา Estimate Error, สามารถคํานวณไดจาก ae

%1001

1 ×−

=+

+

i

iia x

xxe

Example 7.4 ใช Simple One-Point Iteration หารากของสมการ xexf x −= −)(

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

คําตอบ ในกรณีนี้เราเขียนสมการใหมดังนี้ และกําหนดxex −= 00 =x จากนั้นทํา Iteration ดังตาราง

PART III : NUMERICAL METHODS :: CHAPTER 7: Roots of Equations 88

ตารางที่ 7.4 แสดงผลลัพธของ Simple One-Point Iteration สําหรับตัวอยางที่ 7.4 Iteration ix %,te %,ae

0 0 100 1 1.000000 76.3 100.0 2 0.367879 35.1 171.8 3 0.692201 22.1 46.9 4 0.500473 11.8 38.3 5 0.606244 6.89 17.4 6 0.545396 3.83 11.2 7 0.579612 2.20 5.90 8 0.560115 1.24 3.48 9 0.571143 0.705 1.93

10 0.564879 0.399 1.11 โดยคาที่แทจริงของ Root คือ 0.56714329 สังเกตวา Error ที่ไดในแตละ Iteration จะเปนประมาณ 50-60% เมื่อเทียบกับ Iteration กอน และโปรแกรมจะ

Converge เขาสูคาจริง ในกรณีนี้ การ Converge เชนนี้เราเรียกวาเปน Linear Convergence จากที่กลาวมาแลววาวิธีของ Open Method อาจจะไดโปรแกรมที่ไม Converge ยกตัวอยางสมการที่คลายกันใน

ตัวอยางถัดไป Example 7.5 ใช Simple One-Point Iteration หารากของสมการ 4/)( xexf x −= −

คําตอบ ในกรณีนี้เราเขียนสมการใหมดังนี้ และกําหนดxex −= 4 00 =x จากนั้นทํา Iteration แสดงดังตารางที่ 7.5ขางลาง

จากตัวอยางคําตอบที่แทจริงคือ 1.20216787319704 และในกรณีนี้คําตอบจะ Oscillate และจะไม Converge ถานักศึกษาลองเปลี่ยนเลข 4 เปนเลขอื่นที่มีคามากกวานี้ คําตอบอาจจะไม Converge เชนกัน ในกรณีนี้โปรแกรมจะ Diverge และ Algorithm จะ Fail (ในกรณีนี้ ตราบใดที่คา Absolute ของ Slope ของ )(2 xgy = นอยกวาคา Alsolute ของ Slope หรืออีกนัยหนึ่ง เมื่อxy =1 1)(' <xg โปรแกรมจะ Converge)

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

PART III : NUMERICAL METHODS :: CHAPTER 7: Roots of Equations 89

ตารางที่ 7.5 แสดงผลลัพธของ Simple One-Point Iteration สําหรับตัวอยางที่ 7.5 Iteration ix %,te %,ae

0 0 100 1 4 232.7322 100.0 2 .0733 93.9058 5.3598e+003 3 3.7174 209.2270 98.0292 4 0.0972 91.9158 3.7251e+003 5 3.6296 201.9171 97.3224 6 0.1061 91.1732 3.3205e+003 7 3.5973 199.2339 97.0502 8 0.1096 90.8839 3.1825e+003 9 3.5848 198.1948 96.9429

10 0.1110 90.7693 3.1305e+003 M M M M

26261 3.5766 197.5121 96.8718 26262 0.1119 90.6392 3.0967e+003

7.5 Open Method: Newton-Ralphson Method เปนวิธีที่นิยมมากที่สุดในการหา Root ของสมการ เนื่องจากรวดเร็ว เราสามารถพิสูจนได(จาก Taylor Series

Expansion) วา ถาโปรแกรม Converge แลว Error ใน Iteration ใหม จะมีคาประมาณเทากับกําลังสองของ Error ใน Iteration กอนหนานี้ และในกรณีนี้เราเรียกวาเปน Quadratic Convergence

วิธีการของ Newton-Ralphson สามารถอธิบายไดจากรูปที่ 7.2 ขางลาง โดยในกรรมวิธีนี้ เราจะ Estimate คา ที่ดีกวา โดยใชคา Tangent ที่จุด ตัดกับแกน1+ix )](,[ ii xfx x ซึ่งเขียน

เปนสมการคา Tangent ไดดังนี้

1

0)()('+−−

=ii

ii xx

xfxf

และเมื่อจัดเรียงใหม เราได

)(')(

1i

iii xf

xfxx −=+ (Newton-Ralphson Formula)

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

PART III : NUMERICAL METHODS :: CHAPTER 7: Roots of Equations 90

)( ixf

)( ixf

)('slope ixf=

1+ix ix

1+− ii xx

0

รูปท่ี 7.2 แสดงวิธีการของ Newton-Ralphson Method

Example 7.6 จงใชกรรมวิธีของ Newton-Ralphson หารากของสมการ xe x −−

คําตอบ เราได และดังนั้น xexf x −= −)( 1)(' −−= − xexf

ดังนั้นสมการของ Newton-Ralphson จะเปน

11 −−

−−= −

+ i

i

xi

x

ii exexx

เริ่มจากคา เราได Iteration ดังนี้ 00 =x

ตารางที่ 7.6 แสดงผลลัพธของ Newton-Ralphson Method สําหรับตัวอยางที่ 7.6

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

Iteration ix %,te 0 0 100 1 0.500000000 11.8 2 0.566311003 0.147 3 0.567143165 0.0000220 4 0.567143290 810−<

PART III : NUMERICAL METHODS :: CHAPTER 7: Roots of Equations 91

จะเห็นไดวาการ Converge ของ Newton-Ralphson เร็วกวาวิธีกอนมาก เพียงแค 2 Iteration ก็ดีกวาวิธีของ Simple-One Point Iteration ที่ทํา 10 Iteration อยางไรก็ตาม วิธีของ Newton-Ralphson นั้นมีขอเสียที่วาจะใหผลลัพธที่แยในกรณีของ Multiple Root และแมแต Simple Root บางครั้งก็มีปญหา เชนกรณีของ โดยเริ่มจาก จะพบวา Converge ไดชามาก และอัตราการ Converge จะขึ้นกับคา ที่เลือก

1)( 10 −= xxf5.00 =x 0x

นอกจากนี้แลว วิธีการนี้จะตองใชการหา Derivative ของ Function ซึ่งบางครั้งไมสามารถหาไดงายๆ การแกไขก็คือใชวิธีการประมาณคา Derivative ซึ่งเปนวิธีการของ Secant Method ดังจะกลาวในหัวขอตอไป

7.6 Open Method: Secant Method จากที่กลาวมาแลว ในการใชวิธีของ Newton-Ralphson Method นั้น เราจะตองหา Derivative ของ Function ซึ่ง

บาง Function จะหาคา Derivative ไดยากมาก ในกรณีเชนนี้ เราอาจจะใชวิธีการประมาณคา Derivative ดังนี้ (ดูรูป)

)( ixf

)( 1−ixf

1−ix ix 0

รูปท่ี 7.3 แสดงวิธีการของ Secant Method

ii

iii xx

xfxfxf−−

≅−

1

1 )()()('

เมื่อนําสมการขางบนไปแทนคาในสมการของ Newton-Ralphson เราจะได

)()(])[(

1

11

ii

iiiii xfxf

xxxfxx−

−−=

−+ ( Secant Method Formula )

สังเกตวาวิธีการนี้จําตองใชคา Estimate ของ x จํานวนสองคา

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

Secant Method อาจจะไม Converge ถาเราเลือกสองจุดที่ไมเหมาะสม แตถามัน Converge แลว มันจะ Converge ไดเร็วเกือบเทาๆ Newton-Ralphson Method อยางไรก็ตาม การ Convergence ขึ้นอยูกับ Function และจุดเริ่มตนที่เลือก รูปขางลางแสดงการเปรียบเทียบการ Convergence ของ (Simple One-Point xexf x −= −)(

PART III : NUMERICAL METHODS :: CHAPTER 7: Roots of Equations 92

Iteration เปน Linear Convergence และจะ Converge ชาสุด ไมไดแสดงไว ขอใหนักศึกษาลอง Plot เอง โดยใชขอมูลจากตัวอยางที่ 7.4)

รูปท่ี 7.4 เปรียบเทียบวิธีการตางๆในการหา Root ของ Function (Chapra and Canale, 1988)

7.7 ปญหาของ Multiple Roots Multiple Root จะเปนจุดที่ Function สัมผัสกับแกน x กลาวคือคา Slope จะเปนศูนย ยกตัวอยางเชนสมการ )1)(1)(3(375)( 23 −−−=−+−= xxxxxxxf

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

ในกรณีเชนนี้เรากลาววา Function มี Double Root ที่ 1=x ดังรูป

PART III : NUMERICAL METHODS :: CHAPTER 7: Roots of Equations 93

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-5

0

5

10

15

20

25

30

35

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-5

0

5

10

15

20

25

30

35

รูปท่ี 7.5 แสดง Double Root

หรือในกรณีของ Triple Root เชน ดังรูป 3234 )1)(3(310126)( −−=+−+−= xxxxxxxf

0 0.5 1 1.5 2 2.5 3 3.5-2

-1

0

1

2

3

4

5

6

7

8

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

รูปท่ี 7.6 แสดง Triple Root

PART III : NUMERICAL METHODS :: CHAPTER 7: Roots of Equations 94

กรณีของ Multiple Root จะทําใหวิธีของ Numerical Method ที่กลาวมาเกิดปญหา เนื่องจาก Function ไมมีการเปลี่ยนเครื่องหมายที่จุดของ Root

นอกจากนี้แลว ที่จุดนี้ นอกจาก จะเทากับ ศูนยแลว คา จะเทากับศูนยดวย จะทําใหเกิดปญหาใน Newton-Ralphson Method และ Secant Method อยางไรก็ตาม จะเขาใกลศูนยกอน เสมอและเราสามารถจะเพิ่มสวนของโปรแกรมเพื่อจะตรวจสอบคา และหยุดโปรแกรมกอนที่คา จะเปนศูนย ซึ่งจะทําใหโปรแกรมเกิด “Divide by Zero Overflow”

)(xf )(' xf)(xf )(' xf

)(xf )(' xf

ในกรณีของ Multiple Root วิธีของ Newton-Ralphson และ Secant Method จะมีการ Converge แบบ Linear แทนที่จะเปน Quadratic วิธีการแกมีหลายวิธี ที่แนะนําคือวิธีที่เสนอโดย Ralston and Rabinowitz (1978) โดยการใหนิยาม Function ใหม ดังนี้

)(')()(xfxfxu = และ 2)]('[

)('')()(')(')('xf

xfxfxfxfxu −=

และใชสมการในการทํา Iteration เปน

)(')(

1i

iii xu

xuxx −=+

ดังนั้นเราได

)('')(]('[

)(')(21

iii

iiii xfxfxf

xfxfxx−

−=+ (Modified Newton-Ralphson Method)

ซึ่ง Algorithm ขางบนจะเปน Quadratic Convergence ทั้ง Simple Root และ Multiple Root แตจะใชการคํานวณมากกวาวิธีการปกติของ Newton-Ralphson สําหรับแตละ Iteration Example 7.7 เปรียบเทียบ Newton-Ralphson และ Modified Newton-Ralphson ในกรณีของการหา Root ของ

375)( 23 −+−= xxxxf

คําตอบ 7103)(' 2 +−= xxxf

106)('' −= xxf ดังนั้นเราได

Newton-Ralphson: 7103

3752

23

1 +−−+−

−=+ii

iiiii xx

xxxxx

และสําหรับ Modified Newton-Ralphson Method เราได

Modified Newton-Ralphson: )106)(375()7103(

)7103)(375(2322

223

1 −−+−−+−+−−+−

−=+iiiiii

iiiiiii xxxxxx

xxxxxxx

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

เมื่อ Run Iteration เราจะไดคําตอบดังตารางขางลาง ( 00 =x )

PART III : NUMERICAL METHODS :: CHAPTER 7: Roots of Equations 95

Normal Newton-Ralphson:

ตารางที่ 7.7 แสดงผลลัพธของ Newton-Ralphson Method สําหรับตัวอยางที่ 7.7

Iteration ix %,te 0 0 100 1 0.428571429 57 2 0.685714286 31 3 0.832865400 17 4 0.913328983 8.7 5 0.955783293 4.4 6 0.977655101 2.2

Modified Newton-Ralphson:

ตารางที่ 7.8 แสดงผลลัพธของ Modified Newton-Ralphson Method สําหรับตัวอยางที่ 7.7

Iteration ix %,te 0 0 100 1 1.105263158 22 2 1.003081664 0.31 3 1.000002382 0.00024

เชนเดียวกัน เราสามารถปรับปรุงวิธีของ Secant Method ไดเชนเดียวกัน โดยใชการ Estimate ของ Function และ แตในกรณีนี้จะไมกลาวถึง )(xu )(' xu

7.8 สรุปและเปรียบเทียบ วิธีตางๆ การหา Root ของ Function เปนเรื่องที่สําคัญสําหรับวิศวกรในการแกปญหาทางคณิตศาสตร เนื่องจากการ

แกปญหาแบบ Analytical Method ไมสามารถกระทําไดทุกกรณี เราจึงหันมาใชวิธีทาง Numerical Method

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

การนําวิธีทาง Numerical Method จะตองคํานึงถึง Error เปนสําคัญ ทั้ง Truncation Error และ Round Off Error นอกจากนี้แลวจะตองคํานึงถึงการ Convergence ของ Algorithm ดวย ดังนั้นการเลือกกรรมวิธีที่จะนํามาใชจะเปนสิ่งที่ควรจะพิจารณาเปนอันดับแรก ตารางขางลางเปนตารางสรุปของกรรมวิธี และขอดีขอเสียของแตละวิธี

PART III : NUMERICAL METHODS :: CHAPTER 7: Roots of Equations 96

ตารางที่ 7.9 เปรียบเทียบขอดีและขอเสียของแตละวิธี

Method Initial Guest

Rate of Convergence Stability Accuracy Breadth of

Application Program Comments

Direct - - - - Very Limited

-

Graphical - - - Poor General - May Take Much Time

Bisection 2 Slow Always Converges

Good General Easy

False Position

2 Medium Always Converges

Good General Easy

One-Point Iteration

1 Slow May Not Converge

Good General Easy

Newton- Ralphson

1 Fast May Not Converge

Good Limited if 0)(' =xf

Easy Requires Evaluation of

)(' xfModified Newton- Ralphson

1 Fast for Multiple Roots, Medium for Single Roots

May Not Converge

Good Specifically Designed for

Multiple Roots

Easy Requires Evaluation of

and

)(' xf)('' xf

Secant 2 Medium to Fast

May Not Converge

Good General Easy Initial Guesses Do Not Have to Bracket The

Roots

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

PART III : NUMERICAL METHODS :: CHAPTER 7: Roots of Equations 97

ตารางที่ 7.10 สรุปวิธีการของแตละวิธี (Chapra and Canale, 1988)

7.9 Homework Chapter VII

จงใช Numerical Method โดยแสดงคําตอบเปนตารางในแตละ Iteration และคา Estimate Error นักศึกษาอาจจะคํานวณดวยมือ, เขียนโปรแกรม MATLAB, โปรแกรมภาษา C หรืออาจจะใช Microsoft Excel ก็ได

1. จงหา Real Root ของ โดยใช Bisection Method โดยกําหนดให และโปรแกรมจะหยุดเมื่อ

32 7.00.42.60.2)( xxxxf +−+−=

6.0,4.0 == ul xx %5=< sa ee 2. จงหา Real Root ของ โดยใช False Position Method โปรแกรมจะหยุด

เมื่อ98)( 3 −= xxf

%1.0=< sa ee

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

3. จงหา Real Root ของ โดยใช Simple One-Point Iteration Method โดยกําหนดใหโปรแกรมจะหยุดเมื่อ

)ln()(2

xexf x += −

%10=< sa ee

PART III : NUMERICAL METHODS :: CHAPTER 7: Roots of Equations 98

4. ทดลองหา Root ในขอ 3 โดยใช Newton-Ralphson Method กําหนดใหโปรแกรมจะหยุดเมื่อ %1.0=< sa ee

5. ทดลองหา Root ในขอ 3 โดยใช Secant Method กําหนดใหโปรแกรมจะหยุดเมื่อ %1.0=< sa ee

7.10 ภาคผนวก MATLAB Program ท่ีใชในบทที่ 7 ตอไปนี้เปนตัวอยางของ Function MATLAB ที่ใชในตัวอยางของบทนี้ โปรแกรมใหไวโดยไมมีการอธิบาย

เพื่อเปนแนวทางใหนักศึกษานําไปพัฒนาตอ

7.10.1 Bisection Method Example 7.1 สําหรับแกปญหา 0]1[)( )/( =−−= − vecgmcf tmc

function bisect(xl,xu,es) % function bisect(xl,xu,es) % % Find root of equation using bisection % es is estimate error to stop ea = exp(99); xr=0; it = 0; fxl=667.38/xl*(1-exp(-10*xl/68.1))-40 while ea > es it=it+1 old=xr; xr=(xu+xl)/2 new=667.38/xr*(1-exp(-10*xr/68.1))-40; ea=abs((xr-old)*100/xr) if fxl*new < 0 xu=xr; else xl=xr; end end

7.10.2 False-Position Method Example 7.2 สําหรับแกปญหา 0]1[)( )/( =−−= − vecgmcf tmc

function FalseP(xl,xu,es) % function FalseP(xl,xu,es) % % Find root of equation using false-position % es is estimate error to stop ea = exp(99); xr=0; it = 0; fxl=667.38/xl*(1-exp(-10*xl/68.1))-40 fxu=667.38/xu*(1-exp(-10*xu/68.1))-40 while ea > es it=it+1 old=xr; xr=xu-(fxu*(xl-xu))/(fxl-fxu) new=667.38/xr*(1-exp(-10*xr/68.1))-40; ea=abs((xr-old)*100/xr) if fxl*new < 0 xu=xr; fxu=new else

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

xl=xr;

PART III : NUMERICAL METHODS :: CHAPTER 7: Roots of Equations 99

fxl=new end end

7.10.3 Bisection Method vs. False-Position Method Example 7.3 สําหรับแกปญหา 1)( 10 −= xxffunction BandF(xl,xu,n) % function BandF(xl,xu,es) % % Find root of equation using Bisection and % false-position% es is estimate error to stop % f(x)=x^10-1 xlb=xl; xub=xu; xlf=xl; xuf=xu; eab = exp(99); eaf = exp(99); xrb=0; it = 0; fxlb=xlb^10-1; fxlf=fxlb; fxuf=xuf^10-1; xrf=0; true=1.0; for i = 1:n it=it+1 oldb=xrb; oldf=xrf; xrf=xuf-(fxuf*(xlf-xuf))/(fxlf-fxuf) xrb=(xlb+xub)/2 newf=xrf^10-1; newb=xrb^10-1; eaf=abs((xrf-oldf)*100/xrf) eab=abs((xrb-oldb)*100/xrb) if fxlf*newf < 0 xuf=xrf; fxuf=newf; else xlf=xrf; fxlf=newf; end if fxlb*newb < 0 xub=xrb; else xlb=xrb; end end

7.10.4 Simple One-Point Iteration Method Example 7.4 สําหรับแกปญหา xexf x −= −)(function onepoint(initial, error)

% function onepoint(initial, error) % % Calculate Solution using One-Point Iteration % Program will stop when estimate error in percent % less than specified value % % Test eq. x= e^-x ea = exp(99); it = 0;

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

sol = initial;

PART III : NUMERICAL METHODS :: CHAPTER 7: Roots of Equations 100

true = 0.56714329040978 while ea > error it = it+1 previous = sol; sol = exp(-1*previous) ea=abs((sol-previous)/sol)*100 et=abs((true-sol)/true)*100 end

7.10.5 Newton-Ralphson Method Example 7.6 สําหรับแกปญหา xe x −−

function newton(initial, error) % function newton(initial, error) % % Calculate Solution using Newton-Ralphson % Program will stop when estimate error in percent % less than specified value % % Test eq. f(x)=e^-x-x, f'(x)=-e^-x-1 ea = exp(99); it = 0; sol = initial; true = 0.56714329040978; while ea > error it = it+1 previous = sol; sol = previous-(exp(-previous)-previous)/(-exp(-previous)-1) ea=abs((sol-previous)/sol)*100 et=abs((true-sol)/true)*100 end

7.10.6 Secant Method สําหรับแกปญหา (เปรียบเทียบกับ Newton-Ralphson) xe x −−

function secant(p1,p2, error) % function newton(p1,p2, error) % % Calculate Solution using Secant Method % Program will stop when estimate error in percent % less than specified value % % Test eq. f(x)=e^-x-x, ea = exp(99); it = 0; true = 0.56714329040978; while ea > error it = it+1 dfx=((exp(-p1)-p1)-(exp(-p2)-p2))/(p1-p2); fx=exp(-p2)-p2; p1=p2; p2 = p1-fx/dfx ea=abs((p2-p1)/p2)*100 et=abs((true-p2)/true)*100 end

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

7.10.7 Newton-Ralphson vs. Modified Newton-Ralphson Method Ex. 7.7 สําหรับ 375)( 23 −+−= xxxxf

PART III : NUMERICAL METHODS :: CHAPTER 7: Roots of Equations 101

function newton2(initial, error) % function newton2(initial, error) % Calculate Solution using Newton-Ralphson % Program will stop when estimate error in percent % less than specified value % Test eq. f(x)=x^3-5x^2+7x-3, f'(x)=3x^2-10x+7 ea = exp(99); it = 0; true = 1.0; p2=initial, while ea > error it = it+1 dfx=3*p2^2-10*p2+7; fx=p2^3-5*p2^2+7*p2-3; p1=p2; p2 = p1-fx/dfx ea=abs((p2-p1)/p2)*100 et=abs((true-p2)/true)*100 end function newton3(initial, error) % function newton3(initial, error) % Calculate Solution using Modified Newton-Ralphson % Program will stop when estimate error in percent % less than specified value %% Test eq. f(x)=x^3-5x^2+7x-3, f'(x)=3x^2-10x+7 ea = exp(99); it = 0; true = 1.0; p2=initial, while ea > error it = it+1 d2fx=6*p2-10; dfx=3*p2^2-10*p2+7; fx=p2^3-5*p2^2+7*p2-3; ux=fx/dfx; dux=(dfx*dfx-fx*d2fx)/(dfx*dfx); p1=p2; p2 = p1-ux/dux ea=abs((p2-p1)/p2)*100 et=abs((true-p2)/true)*100 end

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 102

CHAPTER VIII SYSTEMS OF LINEAR ALGEBRAIC EQUATIONS

8.1 กลาวนํา ระบบของสมการ Linear Algebraic (System of Simultaneous Linear Algebraic Equations) สามารถเขียนเปน

รูปแบบไดดังนี้ โดยที่ และ c เปนคาคงที่ a

nnnnnn

nn

nn

cxaxaxa

cxaxaxacxaxaxa

=+++⋅⋅⋅⋅⋅⋅⋅⋅⋅=+++=+++

L

L

L

2211

22222121

11212111

= CAX ==

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

nnnnnn

n

n

c

cc

x

xx

aaa

aaaaaa

MM

L

MMMM

L

L

2

1

2

1

21

22221

11211

กลาวคือเปนสมการของ Matrix ในรูป CAX = คา Unknown Variable x ของสมการจะมีจํานวนเทากับ ซึ่งเทากับจํานวนของสมการที่ตองใชในการแกปญหา

n

ในวิชาพีชคณิต เราไดเคยศึกษาการแกสมการในลักษณะนี้มาบางแลว เชนในกรณีของสมการที่มี 2 Unknown เราอาจจะใชวิธีการของการหาจุดที่สองสมการเสนตรงมาตัดกัน (Graphical Method) หรือใชวิธีการแทนคา(Elimination) สําหรับสมการที่มี 3 Unknown วิธีที่รูจักกันดีก็คือ Kramer’s Rule เชนเราตองการหาคา สามารถทําไดโดยหา Determinant ของ Matrix ที่แทน Column ที่ 1 ดวยCหารดวยคา Determinant ของ ดังนี้

1xA

333231

232221

131211

33323

23222

13121

1

aaaaaaaaaaacaacaac

x =

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

วิธีการ Elimination ของ Unknown ยังสามารถนํามาใชไดในกรณีที่เรามี Unknown มากกวา 3 ตัว ดวยการหา Factor รวมของคูของสมการ และกําจัด หนึ่ง Unknown ออกไป ทําใหเราเหลือระบบที่มี Unknown และ1−n 1−nสมการ และเราก็สามารถทําเปน Iteration(Loop) ตอไปจนเหลือแค Unknown เดียว ซึ่งเราจะไดคําตอบสําหรับ Unknown นั้น จากนั้นเราสามารถที่จะแทนคายอนกลับหา Unknown ตัวที่สอง สาม จนถึงตัวสุดทาย ซึ่งวิธีการเชนนี้ แมวาจะใชการคํานวณหลายขั้นตอน แตเปนวิธีการที่เหมาะสมในการเขียนโปรแกรมคอมพิวเตอร เพราะวาจะได Source Code ที่สั้น วิธีการดังกลาวก็คือ Gauss Elimination Method ที่จะกลาวในหัวขอตอไป

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 103

จากระบบของสมการ Linear Equation ซึ่งสามารถเขียนในรูป Matrix ไดเปน เราสามารถนําวิธีการทาง Matrix มาแกสมการไดดวย ซึ่งถาเราคูณดวย Inverse Matrix ทั้งสองขาง เราจะไดคําตอบของ Unknown พรอมๆกันออกมา

CAX =

CAXIXAXA 11 −− ===

ดังนั้นเราสรุปวาการแกสมการทําไดโดย กลาวคือทําการหา Inverse ของ Matrix จากนั้นคูณดวยC

CAX 1−= A

การหา Inverse จะใชการคํานวณคอนขางมาก ดังที่เราไดศึกษาแลวในบทที่ 2 อยางไรก็ตาม เรามี Algorithm ในการคํานวณหา Inverse ของ Matrix ที่สามารถเขียนเปนโปรแกรมที่สั้นๆไดเชนเดียวกัน เพราะการคํานวณจะมีลักษณะเปน Loop ที่ซ้ําๆกันนั่นเอง (ยอนกลับไปดูบทที่สอง สําหรับขั้นตอนการหา Inverse) อยางไรก็ตาม Algorithm ในการหา Inverse ที่จะกลาวในหัวขอ 8.3 จะใชวิธีการทาง Numerical Method โดยจะเริ่มจากวิธีการแกสมการของ Gauss-Jordan ที่พัฒนาตอจาก Gauss Elimination และนําไปดัดแปลงหา Inverse ของ Matrix

วิธีการที่กลาวมาทั้งหมด เปนวิธีการแกสมการหลาย Unknown ของระบบสมการเสนตรง โดยใชพ้ืนฐานมาจากวิธี Elimination อยางไรก็ตาม ในกรณีที่ระบบมีขนาดใหญมาก คือมี Unknown หลายรอยตัวถึงเปนพันตัว และประกอบดวยหลายรอยหรือหลายพันสมการ ผลของ Round-Off Error ที่เกิด ซึ่งจะมีการสะสมจากสมการจํานวนมากในระบบ จะทําใหเปนอุปสรรคตอการหาคําตอบที่ถูกตอง ดังนั้น ในกรณีนี้ เราอาจจะตองใชวิธีดั้งเดิมที่กลาวในบทที่ 7 คือกรรมวิธีทาง Iterative Method แตในกรณีนี้เราจะจะตองดัดแปลง เพื่อที่จะสามารถหา Solution ของหลายๆ Unknown จากหลายๆสมการไปพรอมกัน ซึ่งวิธีดังกลาวคือ Gauss-Seidel และจะอยูในเนื้อหาของหัวขอที่ 8.4

ในเนื้อหาสุดทายของบทนี้(หัวขอ 8.5) จะพูดถึงวิธีการ Elimination ตอจากสวน 8.2 ที่ปรับปรุงมาจาก Gauss Elimination ที่ช่ือ LU Decomposition ซึ่งเปนวิธีที่นิยมใชกันมากที่สุดในการแกปญหาระบบของสมการ Linear Algebraic Equation

จากนั้น หัวขอ 8.6 จะสรุปเปรียบเทียบวิธีการที่เรากลาวมาทั้งหมด และหัวขอ 8.7 และ 8.8 จะเปนแบบฝกหัดและตัวอยาง MATLAB Source Codes ตามลําดับ

8.2 Gauss Elimination 8.2.1 หลักการของ Gauss Elimination การหาคา Unknown โดยใชการ Elimination จะแบงออกเปนสองขั้นตอนกลาวคือ 1. การแปรรูปของสมการเพื่อกําจัดตัวแปรออกทีละตัวจากสมการ ขั้นตอนนี้เรียก Elimination Step ซึ่ง

ทายสุดจะเหลือแคสมการเดียว และมี Unknown เดียว 2. การแกสมการ โดยการแทนคายอนหลังจาก Unknown ที่รูคําตอบแลว เพื่อจะหา Solution ของ Unknown

ตัวตอไป ขั้นตอนนี้เรียก Back-Substitute Algorithm ที่นิยมมากที่สุดสําหรับวิธีการนี้คือ Gauss-Elimination มีรายละเอียดดังนี้

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

จากสมการ

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 104

nnnnnn

nn

nn

cxaxaxa

cxaxaxacxaxaxa

=+++⋅⋅⋅⋅⋅⋅⋅⋅⋅=+++=+++

L

L

L

2211

22222121

11212111

เราสามารถกําจัด Unknown ตัวแรกไป ดวยวิธีการที่เรียก Forward Elimination เริ่มตั้งแตบรรทัดที่สองของสมการขางบน ดวยการคูณสมการบรรทัดที่หนึ่ง ดวยคา และได 1121 / aa

111

211

11

21212

11

21121 c

aaxa

aaxa

aaxa nn =+++ L

จากนั้นนําคาที่ได หักลบออกจากสมการในบรรทัดที่สอง ทําให หายไป และไดสมการในบรรทัดที่สองใหมเปน 1x

111

2121

11

212212

11

2122 )()( c

aacxa

aaaxa

aaa nnn −=−++− L

ดวยการเปลี่ยน Variable สมการสามารถเขียนในรูปของ 22222 ''' cxaxa nn =++L

จากนั้นทําการกําจัด Unknown ตัวแรกของแถวที่ 3, 4 จนถึงแถวสุดทาย โดยการคูณดวย Factor ในแถวแรก และนํามาหักออกจากแถวที่ตองการ เราจะได ,..../,/ 11411131 aaaa

nnnnn

nn

nn

cxaxa

cxaxacxaxaxa

'''0

'''0

22

22222

11212111

=+++⋅⋅⋅⋅⋅⋅⋅⋅⋅=+++=+++

L

L

L

ขบวนการสามารถกระทําซ้ํา โดยการกําจัด Unknown ที่เหลือทีละตัว โดยเริ่มจากแถวถัดไป (กําจัด เริ่มจากแถวที่สอง, กําจัด เริ่มจากแถวที่สาม จนถึงกําจัด ออกจากแถวที่ ) สุดทายเราจะเหลือแค Upper Triangular Matrix

1x

2x 1−nx n

)1()1(

32333

22323222

11313212111

000

''''''00''''0

−− =++++

⋅⋅⋅⋅⋅⋅⋅⋅⋅

=++++=++++=++++

nn

nnn

nn

nn

nn

ncxa

cxaxacxaxaxacxaxaxaxa

L

L

L

L

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

ยกตัวอยางกรณีของ 3 Unknown Equation จาก

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 105

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

3

2

1

3

2

1

333231

232221

131211

ccc

xxx

aaaaaaaaa

เราได

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

3

2

1

3

2

1

33

2322

131211

'''

''00''0

ccc

xxx

aaaaaa

เมื่อไดดังนี้แลว เราสามารถใชขบวนการ Back-Substitution แทนคายอนกลับตั้งแต ดังนี้ 3x

33

33 ''

''acx =

22

32322 '

''a

xacx −=

11

31321211 a

xaxacx −−=

วิธีการที่กลาวมา เมื่อขยายสําหรับสมการที่มี Unknown สามารถเขียนเปน Algorithm ไดสองขั้นตอน คือสวนของ Forward Elimination และ Back-Substitution

n

8.2.2 Algorithm ของ Gauss Elimination Algorithm สามารถแยกไดเปนสองสวน สวนแรกจะสราง Upper Triangular Matrix ดวยวิธี Forward

Substitution จากนั้นนําผลที่ไดมาปอนใหกับสวนที่สองคือการ Back-Substitution และสามารถเขียนเปน Pseudo Code ไดดังขางลาง สวนภาคผนวกของบทนี้แสดงโปรแกรม MATLAB ที่ไดจาก Pseudo Code นี้

Forward Substitution Pseudo Code: (FORTRAN STYLE) DOFOR k = 1 to n-1 DOFOR i = k+1 to n factor = a(i,k)/a(k,k) DOFOR j = k+1 to n a(i,j) = a(i,j)-factor*a(k,j) ENDDO c(i) = c(i)-factor*c(k) ENDDO ENDDO

สําหรับขั้นตอนของ Back-Substitution เราเริ่มจาก

)1(

)1(

= nnn

nn

n acx

และเราสามารถพิสูจนไดวา Unknown ที่เหลือสามารถหาไดจากสมการในรูป

)1(1

)1()1(

−+=

−− ∑−= i

ii

n

ij jiij

ii

i a

xacx

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

และเขียนเปน Pseudo Code ไดดังนี้

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 106

Backward-Substitution Pseudo Code: x(n) = c(n)/a(n,n) DOFOR i = n-1 to 1 step -1 sum = 0 DOFOR j = i+1 to n sum = sum + a(i,j)*x(j) ENDDO x(i) = (c(i)-sum)/a(i,i) ENDDO

Example 8.1 จงใช Gauss Elimination เพื่อแกสมการ

4.71102.03.03.193.071.0

85.72.01.03

321

321

321

=+−−=−+

=−−

xxxxxxxxx

คําตอบ ตอไปนี้เปนผลลัพธจากการ Run Program (ดู Code ในภาคผนวกทายบท) factor = 0.0333 a = 3.0000 -0.1000 -0.2000 0 7.0033 -0.2933 0 -0.1900 10.0200 c = 7.8500 -19.5617 70.6150 factor = -0.0271 a = 3.0000 -0.1000 -0.2000 0 7.0033 -0.2933 0 0 10.0120 c = 7.8500 -19.5617 70.0843 x = 0 0 7.0000 x = 0 -2.5000 7.0000 x = 3.0000 -2.5000 7.0000

8.2.3 ปญหาของวิธีการ Gauss Elimination ปญหาเรื่อง Divide By Zero:

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

ในการกําจัด Unknown ออกนั้น เราตองหาคา Factor ที่มีการหารดวย และในกรณีที่สมการดั้งเดิม คา มีคาเปนศูนย เราจะเจอปญหาของ Divide by Zero ยกตัวอยางเชนในกรณีของ

iia iia

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 107

5623764

832

321

321

32

=++−=++

=+

xxxxxxxx

ซึ่งสมการขางบนนี้ เมื่อ Run จะได Error จาก Divide by Zero แมวาสมการจะหา Solution ไดก็ตาม เพราะการคํานวณคา Factor อันแรกคือ จะทําไมได 1121 / aa

แมวาบางครั้งเราไมเกิดปญหา Divide by Zero แตถาคา Coefficient เหลานี้มีคาใกลศูนยมาก จะมีผลตอ Accuracy ของคําตอบ วิธีการแกไขคือวิธีการที่เรียก Pivoting(รายละเอียดจะไมกลาวถึง) โดยสลับแถวของสมการ เชน เปลี่ยนสมการในรูป

562832

3764

321

32

321

=++=+−=++

xxxxxxxx

ปญหา Round-Off Error: เนื่องจากการคํานวณเปน Iteration และจะเกิด Error จากการปดเศษของเลขหลักสุดทายในแตละขั้นตอน และ

ลักษณะการทํางานของ Algorithm จะทําใหเกิดการสะสมของ Error เกิดขึ้น โดยเฉพาะสมการที่มีขนาดใหญ วิธีการแกไขคือการเพิ่ม Significant Digit ในการคํานวณ แตวิธีที่ดีกวาคือใชคณิตศาสตรในการคํานวณที่ไมตองมีการปดเศษ คือการคํานวณแบบใชเศษสวน อยางไรก็ตาม รายละเอียดเราจะไมกลาวถึง

Ill-Conditioned Systems: Ill-Conditioned system เกิดจากเมื่อมีการเปลี่ยนแปลงเล็กนอยในคา Coefficient ของระบบ จะทําให Solution

ของระบบเปลี่ยนแปลงไปมาก ดังนั้นเมื่อมี Round-Off Error เพียงเล็กนอย จะมีผลให Solution เปลี่ยนแปลงไป เนื่องจาก Round-Off Error ที่เกิด จะเปลี่ยนแปลงคาที่แทจริงของ Coefficient ที่คํานวณได ยกตัวอยางสมการ

4.1021.1102

21

21

=+=+xx

xx

ซึ่งมี Solution ถา Coefficient ของ ในสมการที่สองเปลี่ยนเพียงเล็กนอย จาก 1.1 เปน 1.05 ในสมการ

3,4 21 == xx 1x

4.10205.1102

21

21

=+=+xx

xx

เราจะได Solution ที่เปลี่ยนแปลงไปมากคือ 1,8 21 == xx สังเกตวา คาที่เปลี่ยนไปของ Coefficient มีเพียงเล็กนอยเทานั้น ซึ่งอาจจะเกิดจาก Round-Off Error หรือการเก็บขอมูลที่ไมแนนอน

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

เปนการยากที่เราจะตรวจสอบวาระบบเปน Ill-Conditioned หรือไม สิ่งหนึ่งที่ดูไดคือการหาคา Determinant ของ Matrix ที่มีคาใกลเคียงศูนย แตวามันควรจะใกลเคียงศูนยแคไหนถึงจะเปน Ill-Conditioned นั้นยากที่จะบอกได เพราะเราสามารถคูณสมการทั้งหมดดวยคา Constant ซึ่งคา Determinant ก็จะมีคาเปนจํานวนเทาตาม Factor ที่มาคูณดวย แตสมการที่ไดยังคงเปนสมการเดิม และมีคําตอบเดิม

A

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 108

8.3 Gauss-Jordan และ Matrix Inversion 8.3.1 Gauss-Jordan Method Gauss-Jordan Method เปนวิธีที่ปรับมาจากวิธีของ Gauss Elimination ซึ่งจะทําการกําจัด Unknown ใหเหลือ

เพียงตัวเดียวในแตละสมการ ทําใหเราไดคําตอบทันที ดังนั้นในขบวนการ Elimination เราจะเหลือ Identity Matrix และไมตองมี Back-Substitution เชนจาก

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

3

2

1

3

2

1

333231

232221

131211

ccc

xxx

aaaaaaaaa

เมื่อใช Gauss-Jordan Method เราจะได

nnn

n

n

n

cxcxcxccc

xxx

332211

3

2

1

3

2

1

,,100010001

===⇒⎥⎥⎥

⎢⎢⎢

=⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

วิธีการก็คือ ในแตละ Step เมื่อเรากําจัด Unknown ออกแลว เราทําการ Scale คา ใหเทากับ 1 ในสมการที่ จากนั้นจะนําสมการที่ มาทําการ Scale และไปลบออกจากสมการที่ เพื่อกําจัด Unknown ในสมการ ออกดวย (ดูตัวอยาง 8.2)

iia i1+i i i

Algorithm สามารถเขียนเปน Pseudo Code ไดดังนี้(สมมุติ Matrix มีขนาด 1+× nn โดย Column สุดทายคือ ) C

DOFOR k = 1 to n dummy = a(k,k) DOFOR j = 1 to n+1 a(k,j) = a(k,j)/dummy ENDDO DOFOR i = 1 to n IF (i <> k) dummy = a(i,k) DOFOR j = 1 to n+1 a(i,j) = a(i,j) – dummy*a(k,j) ENDDO ENDIF ENDDO ENDDO

Example 8.2 จงใช Gauss-Jordan เพื่อแกสมการ

4.71102.03.03.193.071.0

85.72.01.03

321

321

321

=+−−=−+

=−−

xxxxxxxxx

คําตอบ k = 0 a | c = 3.0000 -0.1000 -0.2000 | 7.8500 0.1000 7.0000 -0.3000 | -19.3000 0.3000 -0.2000 10.0000 | 71.4000

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

k = 1

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 109

a | c = 1.0000 -0.0333 -0.0667 | 2.6167 0 7.0033 -0.2933 | -19.5617 0 -0.1900 10.0200 | 70.6150 k = 2 a | c = 1.0000 0 -0.0681 | 2.5236 0 1.0000 -0.0419 | -2.7932 0 0 10.0120 | 70.0843 k = 3 a | c = 1.0000 0 0 | 3.0000 0 1.0000 0 | -2.5000 0 0 1.0000 | 7.0000

นักศึกษาสังเกตดูจากตัวอยางที่ 8.2 และ เปรียบเทียบกับตัวอยางที่ 8.1 ซึ่งใน Iteration ที่ 1 เมื่อเรากําจัด Unknown ออกจากแถวที่สองและสามแลว เรา Scale จุด Pivot ในที่นี้คือ ของสมการแถวที่หนึ่งใหเทากับหนึ่ง จากนั้นในแถวตอไปเมื่อเรากําจัด Unknown ออกจากแถวที่ 3 ใน Iteration ที่สองแลว เราจะนําสมการที่สอง ทําการ Scale เพื่อกําจัด ในสมการที่หนึ่งออกดวย จากนั้นเราจะ Scale จดุ Pivot ในสมการที่สองใหเทากับหนึ่ง คือคาของ ใน Iteration ที่ 3 เนื่องจากเปน Iteration สุดทาย จะไมมีการกําจัด Unknown แตจะนําแถวที่สามมาหักลบกับแถวที่หนึ่ง และ สอง เพื่อกําจัด ของทั้งสองสมการออก และทําการ Scale จุด Pivot ของตัวเองใหเหลือหนึ่ง

1x 11a

2x

2x

22a

3x

8.3.2 Gauss-Jordan Method สําหรับหา Inverse ของ Matrix ปกติแลวการหา Inverse ของ Matrix คือการหา Solution ของสมการ IAX = เชนในกรณีของ Matrix

เราได 33×

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

100010001

333231

232221

131211

333231

232221

131211

xxxxxxxxx

aaaaaaaaa

ซึ่งที่จริงแลวเราได นั่นเอง และในกรณีนี้ Unknown เปน Matrix ไมใช Vector 1AX −= X

ถาพิจารณาใหดีจากสมการขางบน โดยใชหลักการคูณกันของ Matrix การหา Inverse ก็คือการแกสมการ Linear สมการพรอมๆกัน ในตัวอยางขางบนเราแกสมการ 3 สมการดังนี้ n

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

001

31

21

11

333231

232221

131211

xxx

aaaaaaaaa

ซึ่งคําตอบของสมการนี้ เราจะได Column แรกของ Inverse ของ Matrix จากนั้นเราหา Solution ของ

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

010

32

22

12

333231

232221

131211

xxx

aaaaaaaaa

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

และคําตอบจะได Column ที่สองของ Inverse ของ Matrix สุดทายเราแกสมการ

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 110

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

100

33

23

13

333231

232221

131211

xxx

aaaaaaaaa

เราจะได Column สุดทายของ Matrix Inverse จากหลักการที่อธิบายขางบน เราสามารถใช Algorithm ใดๆก็ไดที่ใชในการแกสมการ Linear Equation มา

ดัดแปลงหา Inverse ของ Matrix อยางไรก็ตาม เราจะตองกระทําถึง ครั้ง เพื่อจะไดคําตอบ และจะใชการคํานวณมากสําหรับการหา Inverse ของ Matrix ขนาดใหญ

n

ถาเรามาดูวิธีของ Gauss-Elimination เมื่อนํามาหา Matrix Inverse จะพบวาสวนของ Forward Substitution สามารถกระทําไปพรอมกันไดหมด โดยเราตั้งสมการดังนี้ (ใชตัวอยางเดิม)

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

100010001

333231

232221

131211

333231

232221

131211

xxxxxxxxx

aaaaaaaaa

ซึ่ง Step ของ Forward Elimination สามารถกระทําทีเดียวพรอมๆกัน และเราจะได

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

333231

232221

333231

232221

131211

33

2322

131211

'''''''''001

''00''0

cccccc

xxxxxxxxx

aaaaaa

แต Step ตอไปคือ Back-Substitution นั้น เราจะทําพรอมกันไมได อยางไรก็ตาม ใน Gauss Elimination นั้นการคํานวณสวนใหญจะอยูในสวนของ Forward Elimination ทําใหเราประหยัดเวลาไปไดมาก โดยเฉพาะอยางยิ่งถา Matrix มีขนาดใหญ เมื่อเทียบสัดสวนของการคํานวณแลว สวนของ Forward Elimination จะใชคิดเปนอัตราสวนมากกวา 90 % แตเมื่อนํามาใชในการหา Inverse แลว จํานวนของ Operation จะมีมากเพิ่มขึ้นในสวนของ Back-Substitution เนื่องจากเราตองทําถึง ครั้ง ทําใหไมเหมาะสมสําหรับ Matrix ขนาดใหญ n

ในกรรมวิธีของ Gauss-Jordan นั้น เนื่องจากไมมีการทํา Back-Substitution ทําใหการดัดแปลง Algorithm เมื่อมาใชหา Inverse ของ Matrix สามารถกระทําไปพรอมๆกันภายในขั้นตอนเดียว ซึ่งเราจะไดโปรแกรมที่รวบรัด และรวดเร็ว ซึ่งเปนวิธีที่นิยมมากอันหนึ่งในการหา Inverse ของ Matrix

ในการนํากรรมวิธีของ Gauss-Jordan มาใชหา Inverse ของ Matrix นั้น เราเขียนC ใหเปน Identity Matrix แทนที่จะเปน Column Vector ในรูปของ

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

⎡=

100010001

]:[

333231

232221

131211

aaaaaaaaa

CA

จากนั้นเมื่อเราใช Gauss-Jordan เพื่อลดรูป Matrix ใหอยูในรูป Identity Matrix พรอมๆกันนั้น เราจะทําการเปลี่ยน Identity Matrix เดิมใหอยูในรูปของ Inverse ของ Matrix กลาวคือ

AA

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

−−−

−−−

−−−

133

132

131

123

122

121

113

112

111

100010001

aaaaaaaaa

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 111

ซึ่งจะเห็นไดวาวิธีของ Gauss-Jordan มีความรวบรัดมากกวา สวนของภาคผนวกแสดง MATLAB Program ที่ไดปรับปรุงดังกลาว และตัวอยาง 8.3 สาธิตการทํางานของวิธีนี้

Example 8.3 จงใช Gauss-Jordan เพื่อหา Inverse ของ

⎥⎥⎥

⎢⎢⎢

−−−−

=102.03.0

3.071.02.01.03

A

คําตอบ k = 0 3.0000 -0.1000 -0.2000 1.0000 0 0 0.1000 7.0000 -0.3000 0 1.0000 0 0.3000 -0.2000 10.0000 0 0 1.0000 k = 1 ans = 1.0000 -0.0333 -0.0667 0.3333 0 0 0 7.0033 -0.2933 -0.0333 1.0000 0 0 -0.1900 10.0200 -0.1000 0 1.0000 k = 2 ans = 1.0000 0 -0.0681 0.3332 0.0048 0 0 1.0000 -0.0419 -0.0048 0.1428 0 0 0 10.0120 -0.1009 0.0271 1.0000 k = 3 ans = 1.0000 0 0 0.3325 0.0049 0.0068 0 1.0000 0 -0.0052 0.1429 0.0042 0 0 1.0000 -0.0101 0.0027 0.0999

8.4 Iterative Method และ Gauss-Seidel Gauss-Jordan สามารถใชหา Inverse ของ Matrix หรือแกสมการที่มีถึง 100 Unknown ถาเราตั้ง Significant

Digit ใหเหมาะสม และถาระบบไมเปน Ill-Conditioned อยางไรก็ตาม ในระบบที่มีขนาดใหญกวานี้ จะเกิดปญหาของ Round-Off Error และวิธีการแบบ Elimination จะไมเหมาะสม เราจําเปนจะตองพึ่งวิธีทาง Iterative หรือวิธี Approximate แทน เนื่องจากวิธีทาง Iterative นั้นสามารถกระทําตอไดเรื่อยๆ และจะหยุดเมื่อได Estimate Error นอยกวาคา ที่กําหนด(ดูบทที่ 7) ผิดกับวิธีของ Elimination ที่จะมี Loop ของการคํานวณที่แนนอน ตามขนาดของระบบ อยางไรก็ตามพึงเขาใจกอนวาวิธีทาง Iterative นั้นจัดวาเปนวิธี Approximate เพราะเราจะไมไดคําตอบที่แทจริง เพียงแตวาคําตอบจะเขาใกลคาที่แทจริงเรื่อยๆ ถาระบบ Converge และในทางทฤษฎีแลว เราจะตอง Run ถึง Infinity Iteration ถึงจะไดคําตอบที่แทจริง

se

วิธีของ Gauss-Seidel เปนวิธีทาง Iterative สําหรับการแกปญหาของระบบของสมการที่นิยมใชกันมากที่สุด โดยทําการหา Solution จากระบบสมการเดิมดวยการหาคา ในสมการที่หนึ่ง คา ในสมการที่สอง จนถึง ในสมการสุดทาย จากนั้นจึงทํา Iteration ซึ่งความจริงก็คือวิธีของ Simple One-Point Iteration สําหรับหลาย Unknown และมีรายละเอียดตอไปนี้

1x 2x nx

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

จากสมการ ของระบบ Linear Algebraic Equation ที่มี Unknown สามารถเขียนในรูป Matrix n nxxx ,...,, 21

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 112

nnnnnn

nn

nn

cxaxaxa

cxaxaxacxaxaxa

=+++⋅⋅⋅⋅⋅⋅⋅⋅⋅=+++=+++

L

L

L

2211

22222121

11212111

= CAX ==

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

nnnnnn

n

n

c

cc

x

xx

aaa

aaaaaa

MM

L

MMMM

L

L

2

1

2

1

21

22221

11211

เมื่อเราแกสมการหาคา จากแถวที่ i เราได ix

nn

nnnnnnn

nn

nn

nn

axaxaxacx

axaxaxacx

axaxaxacx

axaxaxacx

112211

33

323213133

22

232312122

11

131321211

−−−−−−=

−−−−=

−−−−=

−−−−=

L

MMMM

L

L

L

จากนั้นเราเริ่มขบวนการโดยเดาคา เริ่มตน ทั้งหมด n คา ซึ่งปกติจะเริ่มจากให เริ่มตนเปนศูนยทั้งหมด และใน Iteration แรก เราคํานวณคาใหมของ โดยตัวเลข Superscript หมายถึงคา ที่ Estimate ใหมใน Iteration ที่

ix ix11

211 ,,, nxxx L j

ixj และโปรแกรมจะ Converge ถาคา Estimate Error สําหรับทุกๆ Unknown มีคาลดลง โปรแกรมจะหยุด

เมื่อเราได Estimate Error ทุกตัวนอยกวาคา ที่ต้ังไว seคา Estimate Error สําหรับ Unknown ที่ Iterationj

ix j สามารถคํานวณไดจาก

%1001

, ×−

=−

ji

ji

ji

ja xxxe

เนื่องจาก Gauss-Seidel Algorithm อาจจะไม Converge หรือ Converge ชาเราสามารถปรับปรุงวิธีการให Converge เร็วขึ้น โดยแทนที่จะใชคาใหมที่ Estimate ไดโดยตรง แตเราใช Weight Sum ของคาใหมกับคาเดิม ซึ่งเราเรียกวาเปนการทํา Relaxation ดังนี้

Oldi

Newi

Newi xxx )1( λλ −+=

โดยคาλ มีคาอยูระหวาง ศูนยและสอง ถา 1=λ เราจะไดวิธีปกติของ Gauss-Seidel ที่อธิบายมาแลว แตถาλ มีคาอยูระหวาง 0 และ 1 เราเรียกวาเปน Underrelaxation และจะใชในกรณีที่จะทําใหระบบที่ไม Converge เปนระบบที่สามารถ Converge หรือในกรณีที่คําตอบ Converge ชาเนื่องจากมีการ Oscillation ของคําตอบกลับไปกลับมา และถาคา λ มีคาอยูระหวาง 1 ถึง 2 เราเรียกวาเปน Overrelaxation เพราะเปนการเพิ่มคาน้ําหนักใหกับคาใหมที่มากกวาเดิม กรณีนี้จะใชกับระบบที่มีการ Converge อยูแลว แตจะชวยใหมัน Converge ไดเร็วยิ่งขึ้น

Algorithm ของ Gauss Seidel เขียนเปน Pseudo Code ไดดังนี้ (รวมถึงการ Relaxation ดวย) DOFOR i = 1 to n dummy = a(i,i) DOFOR j = 1 to n a(i,j) = a(i,j)/dummy

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

ENDDO

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 113

c(i) = c(i)/dummy ENDDO sentinel = 0 iter = 0 DOWHILE (iter < maxit) and (sentinel = 0) sentinel = 1 iter = iter + 1 DOFOR i = 1 to n old = x(i) sum = c(i) DOFOR j = 1 to n IF i <> j sum = sum - a(i,j)*x(j) ENDIF ENDDO x(i) = Lambda*sum + (1- Lambda)*old IF (sentinel = 1) and (x(i) <> 0) ea = abs((x(i)-old)/x(i))*100 IF ea > es sentinel = 0 ENDIF ENDIF ENDDO ENDDO

ในภาคผนวกของบทนี้แสดงตัวอยางของ MATLAB Program ที่มีการ Relaxation Example 8.4 จงใช Gauss-Seidel เพื่อแกสมการ

4.71102.03.03.193.071.0

85.72.01.03

321

321

321

=+−−=−+

=−−

xxxxxxxxx

คําตอบ เมื่อเรียงสมการใหมเพื่อหาคา Unknown เราได

102.03.04.71

73.01.03.19

32.01.085.7

213

312

321

xxx

xxx

xxx

+−=

+−−=

++=

Iteration ท่ี 1 เริ่มจาก เราคํานวณหา จากสมการแรก เราได 0,0 32 == xx 1x 61667.23/85.71 ==x จากคา เราคํานวณ จากสมการที่ 2 เราได 0,61667.2 31 == xx 2x 79452.22 −=x และจาก เราคํานวณคา จากสมการสุดทาย ได 79452.2,61667.2 21 −== xx 3x 00561.73 =xIteration ที่ 2, 3, … คํานวณเหมือนเดิม แตใชคา ที่ไดใหมลาสุด แทนคาลงในสมการที่หนึ่ง สอง และ สาม 321 ,, xxxขางลางเปนผลจากการ Run Program โดยตั้ง %01.0=se และไมมี Relaxation (โดยการตั้งคา 1=λ ) iter = 0 x =

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

0

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 114

0 0 iter = 1 x = 2.6167 -2.7945 7.0056 ea = 100 100 100 iter = 2 x = 2.9906 -2.4996 7.0003 ea = 12.5023 11.7977 0.0760 iter = 3 x = 3.0000 -2.5000 7.0000 ea = 0.3158 0.0145 0.0042 iter = 4 x = 3.0000 -2.5000 7.0000 ea = 0.0011 0.0005 0.0000

เราจะจบวิธีของ Iterative Method ดวยการกลาวถึง Variation ของ Gauss-Seidel ที่ช่ือ Jacobi Method ซึ่งในวิธีของ Gauss-Seidel ที่กลาวมานั้น เราใชคา และ ที่คํานวณไดลาสุดในการหา ดังนั้นถาระบบมีการ Converge เราจะไดคา Estimate ที่ดีที่สุดของ Unknown ตัวตอไป และจะทําใหเกิดการ Converge ไดอยางรวดเร็ว อยางไรก็ตามถาเราใชชุดของ ทั้งหมดมาทําการ Estimate คาชุดใหมของ เราจะไดกรรมวิธีที่ช่ือ Jacobi Method

jix

1−jix

jix 1+

jix

1+jix

ที่จริงแลว Gauss-Seidel Method เปนวิธีที่ปรับปรุงมาจาก Jacobi Method และปกติจะใหการ Converge ที่รวดเร็วกวา และปกติเปนวิธีที่นิยมใชกัน แตก็มีบางกรณีที่วิธีของ Jacobi กลับใหผลที่รวดเร็วกวา

เมื่อพูดถึงการ Convergence ซึ่งเปนสิ่งที่สําคัญสําหรับ Iterative Method เพราะวิธีนี้เปนวิธีที่ปรับปรุงมาจากวิธีของ Simple One-Point Iteration สําหรับชุดของสมการ Linear ที่มี n Dimension เราสามารถพิสูจนไดวา Sufficient Condition ในการ Converge (แตไมใช Necessary Condition) นั้นคือถาระบบเปน Diagonally Dominant กลาวคือคาของ Coefficient ที่จุด Pivot ทุกตัว(คา ) ในระบบสมการมีคามากกวาผลรวมของคา Absolute ของ Coefficient อื่นในแถวเดียวกัน ดังนี้

iia

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

∑≠

>ji

ijii aa

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 115

อยางไรก็ตาม ในปญหาทั่วไปแลวปกติเปนการยากที่จะสลับแถวของสมการหรือมีการบวกลบแถว เพื่อทําใหระบบเปน Diagonally Dominant รายละเอียดเราจะไมกลาวถึง อีกวิธีหนึ่งที่จะทําใหระบบ Converge ก็คือใชการ Relaxation ซึ่งไดกลาวมาแลว และการเลือกคาλ ที่ถูกตองถือวาเปนเรื่องสําคัญ อยางไรก็ตาม รายละเอียดจะเกินเนื้อหาของวิชานี้

8.5 กรรมวิธีของ LU Decomposition สรุปจากที่กลาวมาแลว เรามีวิธีในการแกปญหาระบบ Linear Algebraic Equation 2 แบบ คือวิธี Elimination

Method (Gauss Elimination, Gauss-Jordan) และวิธี Iterative Method (Jacobi, Gauss-Seidel) ในสวนนี้เราจะมากลาวตอในเรื่องของ Elimination Method ที่เรียก เทคนิคการทํา LU Decomposition

วิธีของ LU Decomposition จะมีประสิทธิภาพสูงกวา เพราะจะปรับปรุงในสวนของ Elimination Step และจะใชไดดีกวา Gauss-Jordan ในการหา Inverse ของ Matrix ทําใหวิธีนี้เปนวิธีที่ใชกันมากที่สุดในการแกปญหาของระบบของ Linear Algebraic Equations

8.5.1 Naïve LU Decomposition LU Decomposition จะเจอปญหาเรื่อง Divide by Zero เชนเดียวกับ Gauss Elimination และจะตองมีการทํา

Pivoting เพื่อปองกัน อยางไรก็ตามที่จะอธิบายตอไปนี้จะถือวา Coefficient Matrix มีคา ทุกตัวไมเทากับศูนย iia

จากระบบของสมการ Linear เขียนในรูป Matrix ไดเปน

CAX =

และสามารถจัดเรียงใหมไดเปน

0CAX =−

ถาสมมุติเราใช Gauss Elimination เปลี่ยน Coefficient Matrix ใหเปน Upper Diagonal และทําการ Scale ใหคา Coefficient ในสวน Diagonal มีคาเทากับหนึ่ง ยกตัวอยางในระบบที่มี 4 สมการ ดังนี้

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

4

3

2

1

4

3

2

1

34

2423

141312

1000100

101

dddd

xxxx

uuuuuu

เมื่อเขียนในรูปแบบของ Matrix เราจะได

0DUX =−

คราวนี้สมมุติวาเรามี Lower Diagonal Matrix ดังนี้ L

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

⎥⎥⎥⎥

⎢⎢⎢⎢

=

44434241

333231

2221

11

000000

lllllll

lll

L

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 116

โดยที่ Lower Diagonal Matrix ดังกลาวมีคุณสมบัติที่เมื่อคูณกับสมการขางบนของ Upper Diagonal Matrix แลวไดสมการเดิมกลับคืนมา นั่นคือ CAXDUXL −=− ][ ซึ่งถาสมการเปนจริง เราสามารถ Equate สองสวนของสมการ จากทฤษฎีในการคูณกันของ Matrix ไดดังนี้ ALU = และ CLD =

สมการแรกขางบนเรียกวาเปน LU Decomposition ของ Matrix และถาเราสามารถหาได เราสามารถหา Solution ของสมการไดอยางมีประสิทธิภาพ ดวยขบวนการ 2 Step Substitution (Forward Substitution และ Backward Substitution) โดยใชสมการ และสมการ

A

0DUX =− CLD = ดัง Diagram ในรูป

(a) ขบวนการ Decomposition

A X = C

[ U ] [ L ]

L D = C

[ D ]

(b) ขบวนการ Forward Substitution

U X = D

[ X ]

(c) ขบวนการ Backward Substitution

รูปท่ี 8.1 แสดงขบวนการ LU Decomposition

8.5.2 การดัดแปลง Gauss Elimination มาใชใน LU Decomposition ในขบวนการ Gauss Elimination นั้น เราสราง Upper Diagonal Matrix ในรูป (ยกตัวอยางกรณี Matrix) 33×

⎥⎥⎥

⎢⎢⎢

33

2322

131211

''00''0aaaaaa

จากสมการดั้งเดิมคือ

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

3

2

1

3

2

1

333231

232221

131211

ccc

xxx

aaaaaaaaa

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

ซึ่งขั้นตอนแรกนั้นเราทําการคูณแถวที่ 1 ดวย Factor 112121 / aaf = จากนั้นนําผลที่ไดมาลบออกจากสมการในแถวที่สองเพื่อกําจัด จากนั้นเราทําการกําจัด ออก ดวยการคูณแถวที่ 1 เชนกันดวย Factor และหักลบจากสมการในแถวที่ 3

21a 31a 113131 / aaf =

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 117

ในรอบที่สอง เรากําจัด ออกดวยการคูณสมการแถวที่สองที่ไดจากรอบแรกดวย Factor ซึ่งที่จริงแลวคา Factor ที่ใชดังกลาวคือคา Coefficient ของ Lower Diagonal Matrix

32'a 223232 '/' aaf =

⎥⎥⎥

⎢⎢⎢

⎡=

101001

3231

21

fffL

ขอใหนักศึกษาลองทดสอบดูวาความจริงแลว เราได ALU = สังเกตอีกอยางหนึ่งวา Matrix ที่เราไดจาก Gauss Elimination จะตางจากที่เราอธิบายในตอนตนเล็กนอย ซึ่งมีคาในสวนของ Diagonal เปนหนึ่งใน L Matrix แทนที่จะเปน Matrix ซึ่งเราเรียกวาเปน Doolittle Decomposition หรือ Factorization ในขณะที่แบบที่อธิบายในตอนตนเราเรียก Crout Decomposition

U

โปรแกรมที่ดัดแปลงของ Gauss Elimination แสดงในภาคผนวกของบทนี้ Example 8.5 จงใช Gauss Elimination เพื่อทํา LU Decomposition ของ Matrix

⎥⎥⎥

⎢⎢⎢

−−−−

=102.03.0

3.071.02.01.03

A

คําตอบ ตอไปนี้เปนผลที่ไดจากการ Run Program ที่แสดงในภาคผนวก โดยที่ 3 Column แรกคือ Matrix และสาม

Column ถัดมาคือ Matrix L

Uk = 1 ans = 1.0000 0 0 3.0000 -0.1000 -0.2000 0.0333 1.0000 0 0 7.0033 -0.2933 0.1000 0 1.0000 0 -0.1900 10.0200 k = 2 ans = 1.0000 0 0 3.0000 -0.1000 -0.2000 0.0333 1.0000 0 0 7.0033 -0.2933 0.1000 -0.0271 1.0000 0 0 10.0120 ขอใหนักศึกษาลองทดสอบวา ผลคูณกันของสอง Matrix เราจะได Matrix เดิมกลับคืนมา 8.5.3 Crout Decomposition ในขบวนการของ Gauss Elimination นั้น การคํานวณสวนใหญจะอยูที่ Forward Elimination โดยเฉพาะอยางยิ่ง

ถาปญหามีขนาดใหญ ดังนั้นจึงมีความพยายามที่จะปรับปรุงขบวนการใหดีขึ้น และแยกสวนการคํานวณดานซายออกมา

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

วิธีที่มีประสิทธิภาพมากที่สุดอันหนึ่งก็คือ Crout Decomposition ซึ่งจะแยก Matrix ออกเปน Upper Triagular และ Lower Triangular ยกตัวอยางเชน Matrix ขนาด 44×

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 118

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

44434241

34333231

23232221

14131211

34

2423

141312

44434241

333231

2221

11

1000100

101

000000

aaaaaaaaaaaaaaaa

uuuuuu

lllllll

lll

Crout Decomposition จะเริ่มจากการคูณกันของ Matrix ดานซายของสมการ จากนั้น Equate ผลที่ไดใหเทากับดานขวาของสมการ ซึ่งขั้นแรกเราไดวา

4141313121211111 ,,, alalalal ==== กลาวคือ Column แรกของ จะเทากับ Column แรกของ หรือ L A nial ii ,...,2,1,11 ==

จากนั้นพิจารณาจากแถวแรกของ ที่ตองคูณกับแตละ Column ของ และแกสมการหาแถวแรกของUออกมา เราได

L U

1414111313111212111111 ,,, aulaulaulal ==== และ

11

1414

11

1313

11

1212 ,,

lau

lau

lau ===

เราสรุปไดวา njla

u jj ,...,3,2,

11

11 ==

เมื่อถึงขั้นนี้ เราได Column แรกของ L และแถวแรกของ จากนั้นขบวนการจะทําซ้ําสําหรับ Column ที่สอง และแถวที่สองของL และU ตามลําดับ ซึ่งเราจะได

U

niulal iii ,...,3,2,12122 =−=

njlula

u jjj ,...,4,3,

22

12122 =

−=

นักศึกษาสามารถพิจารณาเองและหาคําตอบในขั้นตอไปไดดังนี้

niululal iiii ,...,4,3,2321313 =−−=

njl

ululau jjj

j ,...,5,4,33

23213133 =

−−=

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

ดวยการตรวจสอบในผลลัพธที่ได เราสามารถสรุปเปนชุดสมการในการคํานวณไดดังนี้

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 119

=

=

=

−=

++=−

=

+=−=

−=

==

==

1

1

1

1

1

1

11

11

11

,...,2,1,

,...,1,,

1,...,3,2

,...,3,2,

,...,2,1,

n

kknnknnnn

jj

j

iikjijk

jk

j

kkjikijij

jj

ii

ulal

njjkforl

ulau

njjiforulal

njFor

njforla

u

niforal

และ Pseudo Code สามารถเขียนไดเปน DOFOR j = 2 to n a(1,j)=a(1,j)/a(1,1) ENDDO DOFOR j = 2 to n-1 DOFOR i = j to n sum=0; DOFOR k = 1 to j-1 sum=sum+a(i,k)*a(k,j) ENDDO a(i,j)=a(i,j)-sum ENDDO DOFOR k = j+1 to n sum=0; DOFOR i = 1 to j-1 sum=sum+a(j,i)*a(i,k) ENDDO a(j,k)=(a(j,k)-sum)/a(j,j) ENDDO ENDDO sum=0 DOFOR k = 1 to n-1 sum=sum+a(n,k)*a(k,n) ENDDO a(n,n)=a(n,n)-sum

สังเกตวา Algorithm ประกอบดวย Loop ที่กะทัดรัด นอกเหนือจากนั้นแลวลักษณะของ Algorithm จะเปน In-place กลาวคือทั้ง Upper Diagonal และ Lower Diagonal Matrix สามารถบรรจุอยูใน Matrix เดียวกันและเขาไปแทนที่ Element ใน Matrix เดิม เนื่องจากคา Coefficient ของ Matrix จะถูกใชเพียงแคครั้งเดียว ดังนั้นนอกจากจะรวดเร็วแลว Algorithm ยังใชหนวยความจํานอย ภาคผนวกแสดงโปรแกรม MATLAB แตในกรณีนี้จะแยกแตละ Matrix ออกจากกัน เพื่อความสะดวกในการศึกษาการทํางาน

A

Example 8.6 จงใช Crout Decomposition เพื่อทํา LU Decomposition ของสมการ

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

⎥⎥⎥

⎢⎢⎢

⎡−=

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

−−−−

168

12

102.03.03.071.02.01.03

3

2

1

xxx

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 120

คําตอบ ผลการ Run Program ไดดังนี้ ans = 3.0000 0 0 1.0000 -0.0333 -0.0667 0.1000 0 0 0 0 0 0.3000 0 0 0 0 0 ans = 3.0000 0 0 1.0000 -0.0333 -0.0667 0.1000 7.0033 0 0 1.0000 -0.0419 0.3000 -0.1900 0 0 0 0 ans = 3.0000 0 0 1.0000 -0.0333 -0.0667 0.1000 7.0033 0 0 1.0000 -0.0419 0.3000 -0.1900 10.0120 0 0 1.0000

ในการนํา Crout Decomposition ไปแกสมการ Linear Equation จะตองมีขบวนการ Substitution และในกรณีนี้

เราจะตองคํานวณ Vector จาก Vector C ดวย หลังจากเราทํา LU Decomposition แลว D

จากสมการ CLD = ที่กลาวในหัวขอกอน หรือในกรณีของสมการ 4 Unknown

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

4

3

2

1

4

3

2

1

44434241

333231

2221

11

000000

cccc

dddd

lllllll

lll

เราสามารถสรุปจากการคูณกันของ Matrix ไดคําตอบดังนี้

nil

dlcd

lcd

ii

i

jjiji

i ,...,3,2,;

1

1

11

11 =

−==

∑−

=

และคาของ สามารถคํานวณไดจากวิธีการ Back Substitution จากสมการix DUX = หรือ

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

4

3

2

1

4

3

2

1

34

2423

141312

1000100

101

dddd

xxxx

uuuuuu

ไดดังนี้

∑+=

−−=−==n

ijjijiinn nnixudxdx

11,...,2,1,;

Example 8.7 จงใช Crout Decomposition เพื่อแกสมการ

⎥⎥⎥

⎢⎢⎢

⎡−=

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

−−−−

168

12

102.03.03.071.02.01.03

3

2

1

xxx

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

คําตอบ จากโปรแกรมในภาคผนวก เราไดดังนี้

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 121

Calculate LU Decomposition, Row&Col = 1 ; ans = [L U] 3.0000 0 0 1.0000 -0.0333 -0.0667 0.1000 0 0 0 0 0 0.3000 0 0 0 0 0 Calculate LU Decomposition, Row&Col = 2 ; ans = [L U] 3.0000 0 0 1.0000 -0.0333 -0.0667 0.1000 7.0033 0 0 1.0000 -0.0419 0.3000 -0.1900 0 0 0 0 Calculate LU Decomposition, Row&Col = 3 ; ans = [L U] 3.0000 0 0 1.0000 -0.0333 -0.0667 0.1000 7.0033 0 0 1.0000 -0.0419 0.3000 -0.1900 10.0120 0 0 1.0000 Find D from L and C ; ans = [L D C] 3.0000 0 0 4.0000 12.0000 0.1000 7.0033 0 -1.1994 -8.0000 0.3000 -0.1900 10.0120 1.4555 16.0000 Find X from U and D ; ans = [U X D] 1.0000 -0.0333 -0.0667 4.0591 4.0000 0 1.0000 -0.0419 -1.1385 -1.1994 0 0 1.0000 1.4555 1.4555 ในการนํา Crout Algorithm มาดัดแปลงหา Inverse ของ Matrix เราสามารถทําไดโดยใชวิธีที่กลาวมาใน

ตอนตน คือทําการหาทีละ Column ในการนี้เราทําการหา Upper และ Lower Diagonal Matrix ครั้งเดียว แตการหานั้นจะตองกระทําแยก และคอยทํา Back-Substitution หาคา ที่เปน Solution ของแตละ Column ของ Inverse Matrix

DX

กรรมวิธีที่กลาวมาทั้งหมด สามารถนํามาปรับปรุงใหมีประสิทธิภาพเพิ่มขึ้นไดอีก ถา Matrix มีคุณสมบัติพิเศษ อยางเชนในกรณีของ Sparse Matrix หรือใน Banded System ที่ Matrix เปน Multi-diagonal Matrix ซึ่งเรามี Algorithm ที่มีประสิทธิภาพสูงเฉพาะสําหรับ Matrix ประเภทนี้ หรือใน Matrix ที่เปน Symmetric Matrix ซึ่งในกรณีหลังนี้เรามี Algorithm ที่ช่ือ Cholsky Decomposition ที่รวดเร็วกวา Crout Decomposition อยางไรก็ตาม รายละเอียดของ Algorithm เหลานี้จะเกินเนื้อหาของวิชานี้

8.6 สรุปบทที่ 8

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

เราขอสรุปในวิธีที่ไดพูดมาเปนตารางแสดงขอดี และขอเสียของแตละวิธีที่สําคัญ และสรุปการทํางานของแตละวิธีในตารางถัดไป

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 122

ตารางที่ 8.1 เปรียบเทียบขอดีและขอเสียของแตละวิธี

Method จํานวน

สูงสุดของ Unknown

Stability Precision Breadth of Application Program Comments

Graphical 2 - Poor Limited - อาจใชเวลามาก เมื่อเทียบกับวิธี Numerical

Cramer’s Rule

3 - ไดรับผลจาก Round-

Off Error

Limited - ใชการคํานวณมากเกินไปถามีมากกวา 3

สมการ Algebraic

Elimination 3 - ไดรับผล

จาก Round-Off Error

Limited -

Gauss Elimination

with Pivoting

100 - ไดรับผลจาก Round-

Off Error

General ยากปานกลาง

Gauss-Jordan with Partial

Pivoting

100 - ไดรับผลจาก Round-

Off Error

General ยากปานกลาง

สามารถนํามาใชคํานวณ Matrix

Inverse ไดดี LU

Decomposition 100 - ไดรับผล

จาก Round-Off Error

General ยากปานกลาง

เปนวิธี Elimination ที่นิยมมากที่สุด

Gauss-Seidel 1000 อาจจะไม Converge ถาไมเปน

Diagonally Dominant

Excellent เหมาะสมเฉพาะกับระบบที่เปน Diagonally Dominant

งาย

8.7 Homework for Chapter VIII 1. จงใช Gauss Elimination แกสมการ

4844562

50133

31

321

32

=+=+−

−=−

xxxxx

xx

2. จงใช Gauss-Jordan หา Inverse ของ

⎥⎥⎥⎥

⎢⎢⎢⎢

−−

=

3120121.0427135.012

A

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

3. ใช Gauss-Seidel แกสมการ โดยกําหนด 9.0=λ และ %3=se ของสมการ

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 123

458624

60125

21

321

31

=+−=−−

=+−

xxxxxxx

4. ใช Crout Decomposition ทํา LU Decomposition ของ

⎥⎥⎥⎥

⎢⎢⎢⎢

−−

−−−−

=

242011105.6231

5.1145

A

8.8 Appendix: MATLAB Source Codes 8.8.1 Gauss Ellimination

function x=gauss_e(a,c,n) % % function x=gauss_e(a,c) % % Calculate upper triangular matrix and back-substitute % using gauss ellimination method % a is nxn matrix of coefficient and c is nx1 column % vector of constant for k = 1:n-1 for i=k+1:n factor=a(i,k)/a(k,k) a(i,k)=0; for j=k+1:n a(i,j)=a(i,j)-factor*a(k,j); end c(i)=c(i)-factor*c(k); end k a c end x=zeros(n,1); x(n)=c(n)/a(n,n) for i=n-1:-1:1 sum=0; for j=i+1:n sum=sum+a(i,j)*x(j); end x(i)=(c(i)-sum)/a(i,i) end

8.8.2 Gauss-Jordan function x=gauss_j(a,c,n) % % function x=gauss_j(a,c) % % Calculate solution using Gauss-Jordan method % a is nxn matrix of coefficient and c is nx1 column % vector of constant [a,c] for k = 1:n dummy = a(k,k);

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

for j=1:n

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 124

a(k,j) = a(k,j)/dummy; end c(k)=c(k)/dummy; for i = 1:n if (i ~= k) dummy=a(i,k); for j = 1:n a(i,j)=a(i,j)-dummy*a(k,j); end c(i)=c(i)-dummy*c(k); end end k [a,c] end

8.8.3 Inverse using Gauss-Jordan function x=gauss_j2(a,n) % % function x=gauss_j2(a,c) % % Calculate Inverse using Gauss-Jordan method % a is nxn matrix c=zeros(n); for i = 1:n c(i,i)=1; end [a,c] for k = 1:n dummy = a(k,k); for j=1:n a(k,j) = a(k,j)/dummy; end for i = 1:n c(k,i)=c(k,i)/dummy; end for i = 1:n if (i ~= k) dummy=a(i,k); for j = 1:n a(i,j)=a(i,j)-dummy*a(k,j); c(i,j)=c(i,j)-dummy*c(k,j); end end end k [a,c] end

8.8.4 Gauss-Seidel with Relaxation function x = gauss_s(a,c,n,es,maxit,l) % % function x = gauss_s(a,c,n,es,maxit,l) % % Find set of solutions using Gauss-Seidel % with relaxation l(Lambda) % a is nxn coefficient matrix % c is nx1 column vector of constant % n is size of system % es is stop criteria of error % maxit is maximum iteration to run x=zeros(n,1);

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

ea=zeros(n,1);

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 125

for i = 1:n dummy = a(i,i); for j = 1:n a(i,j)=a(i,j)/dummy; end c(i)=c(i)/dummy; end sentinel=0; iter=0 x while (iter < maxit) & (sentinel == 0) sentinel=1; iter=iter+1 for i = 1:n old=x(i); sum=c(i); for j = 1:n if i ~= j sum = sum-a(i,j)*x(j); end end x(i)=l*sum+(1-l)*old; if x(i) ~= 0 ea(i) = abs((x(i)-old)/x(i))*100; if ea(i) > es sentinel = 0; end end end x ea end

8.8.5 LU Decomposition using Gauss Elimination function [L,U,D]=gauss_LU(a,c,n) % % function [L,U,D]=gauss_LU(a,c,n) % % Calculate upper and lower triangular matrix % using gauss ellimination method % a is nxn matrix of coefficient and c is nx1 column % vector of constant L=zeros(n); for i = 1:n L(i,i)=1; End for k = 1:n-1 for i=k+1:n factor=a(i,k)/a(k,k) L(i,k)=factor; a(i,k)=0; for j=k+1:n a(i,j)=a(i,j)-factor*a(k,j); end c(i)=c(i)-factor*c(k); end k [L,a,c] end U=a;

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

D=c;

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 126

8.8.6 Crout LU Decomposition function [L,U]=crout_LU(a,n) % % function [L,U]=crout_LU(a,n) % % Calculate upper and lower triangular matrix % using Crout decomposition method % a is nxn matrix of coefficient L=zeros(n); U=zeros(n); for i = 1:n L(i,1)=a(i,1); end for j = 2:n U(1,j)=a(1,j)/a(1,1); end U(1,1)=1; [L,U] for j = 2:n-1 U(j,j)=1; for i = j:n sum=0; for k = 1:j-1 sum = sum + L(i,k)*U(k,j); end L(i,j)=a(i,j)-sum; end for k = j+1:n sum=0; for i = 1:j-1 sum = sum + L(j,i)*U(i,k); end U(j,k)=(a(j,k)-sum)/L(j,j); end [L,U] end sum=0; for k = 1:n-1 sum=sum+L(n,k)*U(k,n); end L(n,n)=a(n,n)-sum; U(n,n)=1; [L,U]

8.8.7 Crout Decomposition for Solving Linear Equations function [L,U]=crout_LU2(a,c,n) % % function {L,U,x]=crout_LU2(a,c,n) % % Calculate upper and lower triangular matrix % using Crout decomposition method and % solve the linear equation system % a is nxn matrix of coefficient L=zeros(n); U=zeros(n); d=zeros(n,1); x=zeros(n,1); for i = 1:n L(i,1)=a(i,1); end

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

for j = 2:n

PART III : NUMERICAL METHODS :: CHAPTER 8: Linear Equations 127

U(1,j)=a(1,j)/a(1,1); end U(1,1)=1; [L,U] for j = 2:n-1 U(j,j)=1; for i = j:n sum=0; for k = 1:j-1 sum = sum + L(i,k)*U(k,j); end L(i,j)=a(i,j)-sum; end for k = j+1:n sum=0; for i = 1:j-1 sum = sum + L(j,i)*U(i,k); end U(j,k)=(a(j,k)-sum)/L(j,j); end [L,U] end sum=0; for k = 1:n-1 sum=sum+L(n,k)*U(k,n); end L(n,n)=a(n,n)-sum; U(n,n)=1; [L,U] d(1)=c(1)/L(1,1); for i = 2:n sum=0; for j = 1:i-1 sum=sum+L(i,j)*d(j); end d(i)=(c(i)-sum)/L(i,i); end [L,d,c] x(n)=d(n); for i=n-1:-1:1 sum=0; for j = i+1:n sum=sum+U(i,j)*x(j); end x(i)=d(i)-sum; end [U,x,d]

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 128

CHAPTER IX NUMERICAL DIFFERENTIATION AND

INTEGRATION

9.1 กลาวนํา บทนี้จะเปนบทที่ 3 ที่เราจะเรียนในสวนของ Numerical Method คือเรื่องของการหา Derivative และการ

Integrate ซึ่งวิธีการสามารถแบงไดเปนสองจําพวกใหญๆ พวกแรกเปนการหาคําตอบในกรณีที่เราไมรู Function ที่เราตองการหา เพียงแตเรารูคาของ Function ดังกลาวที่บางจุด คือ และเราจะใช

ขอมูลเหลานี้ในการหาคา Derivative และ Integral ของ Function ในที่นี้ เราจะพิจารณาเฉพาะกรณีที่คาของ Function ที่มีอยู มาจากคาของ ที่มีระยะหางเทาๆกันเทานั้น และเราจะจํากัดการศึกษาของเราเฉพาะ Function ที่มี Variable เพียงตัวเดียว

)(xf )(...,),(),( 21 nxfxfxf

ix

พวกที่สอง คือกรณีที่เรารู Function และเราตองการหาคา Derivative ที่บางจุด หรือคา Integral ในบางชวง ซึ่งอาจจะเปน Function ที่สลับซับซอนและไมสามารถหาโดย Analytical Method ได

)(xf

กอนที่จะเขาสูวิธีการและ Algorithm เราจําเปนตองกลาวเล็กนอยเกี่ยวกับทฤษฎีพ้ืนฐานของ Taylor’s Theorem

9.2 Taylor’s Theorem Theorem 1

ถา Function และคา Derivative แรกของมันมีความตอเนื่องในชวงของ และf 1+n a x ดังนั้นคาของ Function ที่จุด x สามารถแสดงไดโดย

nn

n

Raxnafaxafaxafaxafafxf +−++−+−+−+= )(

!)()(

!3)()(

!2)(''))((')()(

)(3

)3(2 L

โดย เรียก Remainder และใหนิยามวาเปน nR

∫ +−=x

a

nn

n dttfntxR )(!

)( )1(

ซึ่งคาของ Remainder ดังกลาวยังสามารถเขียนในรูปที่เรียก Derivative Form หรือ Lagrange Form ดังนี้

1)1(

)()!1(

)( ++

−+

= nn

n axnfR ξ

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

สมการขางบนรูจักกันในนาม Taylor Series หรือ Taylor’s Formula ซึ่งถาไมรวม สมการที่เหลือก็คือคาประมาณของ ที่มีลักษณะเปน Polynomial กลาวอีกนัยหนึ่งก็คือ คาของ Function ใดๆที่มีคุณสมบัติตามที่กําหนด สามารถประมาณไดจากสมการของ Polynomial

nR)(xf

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 129

การละเทอม ออกจากสมการ จะสงผลใหการคํานวณคาประมาณนั้นมี Error นี่คือที่มาของ Truncation Error ที่เรากลาวในบทที่ 7 ดังนั้นการหาคาของ Function ขึ้นอยูวาเราตองการ Significant Digit แคไหน ซึ่งจะเปนตัวจะกําหนดวาเราตองใชก่ีเทอมใน Polynomial และจะลงเอยดวย Degree ของ Polynomial และ Derivative ของ Function ที่จุด ที่ตองใช

nR

a

ถาให เปนจุดของ Function ที่เรารูคาของมัน และ Derivative ของมัน และสมมุติวาอยูที่ เราสามารถใช Taylor Series ประมาณคาของ Function ที่จุดใหม กลาวคือ โดยกําหนดขนาดของ Step ใหมีคาเทาๆกัน เชน

a ix

1+ix ii xxh −= +1

)()(: 1 ii xfxfionApproximatOrderZero ≅− + hxfxfxfionApproximatOrderFirst iii )(')()(: 1 +≅− +

21 !2

)('')(')()(: hxfhxfxfxfionApproximatOrderSecond iiii ++≅− +

และโดยทั่วไปเราสามารถเขียน

nin

iiii h

nxfhxfhxfxfxfionApproximatOrdern

!)(

!2)('')(')()(:

)(2

1 ++++≅− + L

โดยที่คา Remainder สามารถแสดงไดเปน 1)1(

)!1()( +

+

+= n

n

n hnfR ξ

Example 9.1 จงใช Zero-Order จนถึง Forth-Order Taylor Series Expansion ในการหาคาประมาณของ Function 2.125.05.015.01.0)( 234 +−−−−= xxxxxf

จาก ดวยคา กลาวคือหาคาของ Function ที่คา0=ix 1=h 11 =+ix คําตอบ

สําหรับ หรือ Zero Order Approximation เราได 0=n

และคา Truncation Error เทากับ 2.1)1()( 1 ≅=+ fxf i 0.12.12.0 −=−=tE สําหรับ หรือ First Order Approximation เราได 1=n

25.0)0(' −=f

95.025.02.1)1()( 1 =−≅=+ hfxf i และคา Truncation Error เทากับ 75.095.02.0 −=−=tE

สําหรับ หรือ Second Order Approximation เราได 2=n

0.1)0('' −=f

และ 45.05.025.02.1)1()( 21 =−−≅=+ hhfxf i 25.045.02.0 −=−=tE

สําหรับ หรือ Third Order Approximation เราได 3=n

และ 3.015.05.025.02.1)1()( 321 =−−−≅=+ hhhfxf i 1.03.02.0 −=−=tE

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

สําหรับ หรือ Forth Order Approximation เราได 4=n

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 130

และ 2.01.015.05.025.02.1)1()( 4321 =−−−−≅=+ hhhhfxf i 02.02.0 =−=tE

สังเกตวาในกรณีสุดทายเราไดคําตอบที่แทจริง เนื่องจากคา Remainder 5)5(

4 !5)( hfR ξ

= มีคาเทากับศูนย

เนื่องจากคา Derivative เปนศูนย ปกติแลว Function ทั่วๆไปจะมีคา Derivative จํานวนมากกวาเทอมที่เราจะใชในการคํานวณ ทําใหมี Error

เสมอ จะมากหรือนอยขึ้นกับจํานวนเทอมที่เราคํานวณ โดยคา Remainder หรือ Truncation Error มักจะแสดงในรูปของ Order คือ ซึ่งหมายความวา Error จะแปรผันตามขนาดของ Step Size ยกกําลัง ซึ่งการแสดงในลักษณะนี้จะชวยใหเราสามารถเปรียบเทียบ Error ที่เกิดขึ้นได ยกตัวอยางเชนสําหรับ หมายถึงวาถาเราลด Step Size ลงครึ่งหนึ่ง เราจะลด Error ลงไดครึ่งหนึ่ง หรือ หมายถึงถาเราลด Step Size ลงครึ่งหนึ่ง คา Error จะลดลงเหลือหนึ่งในสี่ เปนตน

)( 1+nhO 1+n)(hO

)( 2hO

Example 9.2 เรามาลองดูตัวอยางการนํา Taylor Series Expansion มาประมาณคา Function ที่มีคา Derivative ไมจํากัดเชน จากจุด ถึง ที่xxf cos)( = 0=n 6 3/1 π=+ix และ 4/π=ix หรือ 12/π=h คําตอบ

Zero-Order: 707106781.0)4/cos()3/( =≅ ππf และ %4.411005.0/)707106781.05.0( −=×−=te

First-Order: 521986659.0)12/)(4/sin()4/cos()3/( =−≅ ππππf และ %40.41005.0/)521986659.05.0( −=×−=te

Second-Order: 497754491.02/)12/)(4/cos()12/)(4/sin()4/cos()3/( 2 =−−≅ ππππππf

และ %449.01005.0/)497754491.05.0( =×−=te คําตอบที่เหลือดูจากตารางขางลาง

ตารางที่ 9.1 ผลลัพธจากการคํานวณสําหรับตัวอยางที่ 9.2

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

Order )()( xf n )3/(πf te

0 xcos 0.707106781 -41.4

1 xsin− 0.521986659 -4.4

2 xcos− 0.497754491 0.449

3 xsin 0.499869147 21062.2 −× 4 xcos 0.500007551 31051.1 −×− 5 xsin− 0.500000304 51008.6 −×− 6 xcos− 0.499999988 61040.2 −×

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 131

9.3 การหา Derivative ดวยกรรมวิธีของ Finite Divided-Difference 9.3.1 หลักการพื้นฐานของ Finite Divided-Difference ยอนกลับไปที่ Taylor Series Expansion ของ Function )(xf

nni

ni

iii Rhnxfhxfhxfxfxf +++++=+ !

)(!2

)('')(')()()(

21 L

ในกรณีของ First Order เราได

11 )(')()( Rhxfxfxf iii ++=+ และถาเรียงสมการใหม หาคา เราได )(' ixf

hR

hxfxfxf ii

i11 )()()(' −

−= + : First Forward Difference

ซึ่งเทอมแรกคือ First-Order Approximation ของ Derivative และเทอมที่สองคือคา Truncation Error ซึ่งอยูในรูป และเขียนใหมไดเปน )(hO

)()(' hOhfxf i

i +∆

=

การประมาณคาของ Derivative ในลักษณะเชนนี้เราเรียก Finite Divided Difference และคาประมาณของ Derivative ที่ได จากสามการเราเรียกวาเปน First Forward Difference เนื่องจากเปน First Order และเราใชคาตอไปของ มาประมาณคาปจจุบันของ )( 1+ixf )( ixf

ทํานองเดียวกัน Taylor Series Expansion สามารถ Expand ยอนหลัง และเขียนไดในรูปของ

L++−=−2

1 2)('')(')()( hxfhxfxfxf i

iii

สําหรับ First Order Expansion เมื่อจัดเรียงใหมเราได

hf

hxfxfxf iii

i∇

=−

≅ − )()()(' 1 : First Backward Difference

ซึ่งเราเรียก First Backward Difference เพราะเราใชคากอนหนานี้ของ มาคํานวณ )( 1−ixf

วิธีที่สามในการประมาณคา Derivative เรียก Centered หรือ Central Difference คือใชสมการ Taylor Series ใน Backward Expansion นําไปหักลบออกจากสมการของ Forward Expansion และจัดเรียงสมการเราได

L+++= −+3

11 3)(''')('2)()( hxfhxfxfxf i

iii

และ

L+−−

= −+ 211

6)('''

2)()()(' hxf

hxfxfxf iii

i

หรือ

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

)(2

)()()(' 211 hOh

xfxfxf iii +

−= −+ : First Central Difference

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 132

จะเห็นไดวา Central Difference จะมี Truncation Error เปน ในขณะที่ Forward และ Backward Difference จะมี Error เปน Order ของ ซึ่งจะใหคําตอบที่ถูกตองกวา

)( 2hO)(hO

ความแตกตางในการประมาณคา Derivative แตละแบบแสดงดังรูป

)(xf

x 1−ix ix 1+ix

True Derivative

Approximation

FORWARD DIFFERENCE

)(xf

x 1−ix ix 1+ix

True Derivative

Approximation

BACKWARD DIFFERENCE

)(xf

x 1−ix ix 1+ix

True Derivative

Approximation

CENTERED DIFFERENCE

h

h

h2

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

รูปท่ี 9.1 เปรียบเทียบกรรมวิธีในการหา Derivative

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 133

สําหรับการประมาณคาของ Second Derivative และคา Derivative ใน Order ที่สงูกวา เราใชวิธีคลายๆกัน เชนสําหรับ Second Forward Finite Difference เราเริ่มจาก

++++=+ L22 )2(

!2)('')2)((')()( hxfhxfxfxf i

iii

และ

L+++=+2

1 !2)('')(')()( hxfhxfxfxf i

iii

เมื่อคูณสมการลางดวย 2 และหักลบออกจากสมการบนเราได L++−=− ++

212 )('')()(2)( hxfxfxfxf iiii

และเมื่อจัดเรียงใหมเราได

)()()(2)()('' 212 hO

hxfxfxfxf iii

i ++−

= ++ Second Forward Finite Difference

ทํานองเดียวกันสําหรับ Backward Difference และ Central Difference โดยใชวิธีคลายกับที่กลาวมา ซึ่งขอใหนักศึกษาลองทําเปนการบาน เราได

)()()(2)()('' 221 hO

hxfxfxfxf iii

i ++−

= −− Second Backward Finite Difference

และ

)()()(2)()('' 22

11 hOh

xfxfxfxf iiii +

+−= −+ Second Central Finite Difference

Example 9.3 จงใชวิธีการของ Forward และ Backward Difference Approximation ที่มี และ Central Difference ที่มี ทําการประมาณคา Derivative ของ

)(hO)( 2hO

2.125.5.15.1.)( 234 +−−−−= xxxxxf ที่ โดยใช Step Size 0.5 และทําการคํานวณซ้ําโดยใช Step Size 0.25 5.0=x

คําตอบ สังเกตวาคําตอบที่แทจริงหาไดจาก และ

25.00.145.04.0)(' 23 −−−−= xxxxf9125.0)5.0(' −=f

สําหรับ ขั้นแรกเราคํานวณ 5.0=h

2.1)0()(,0 11 === −− fxfx ii

925.0)5.0()(,5.0 === fxfx ii

2.0)1()(,1 11 === ++ fxfx ii

Forward Difference: เราได %9.58;45.15.0

925.02.0)5.0(' −=−=−

≅ tef

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

Backward Difference: เราได %7.39;55.05.0

2.1925.0)5.0(' =−=−

≅ tef

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 134

Central Difference: เราได %6.9;0.10.1

2.12.0)5.0(' −=−=−

≅ tef

สําหรับ ขั้นแรกเราคํานวณ 25.0=h

10351563.1)25.0()(,25.0 11 === −− fxfx ii 925.0)5.0()(,5.0 === fxfx ii

63632813.0)75.0()(,75.0 11 === ++ fxfx ii

Forward Difference: เราได %5.26;155.125.0

925.063632813.0)5.0(' −=−=−

≅ tef

Backward Difference: เราได %7.21;714.025.010351563.1925.0)5.0(' =−=

−≅ tef

Central Difference: เราได %4.2;934.05.0

10351563.163632813.0)5.0(' −=−=−

≅ tef

จากตัวอยางขางบน สังเกตไดวาในกรณีของ Forward และ Backward Difference เมื่อเราลดขนาด Step Size ลงครึ่งหนึ่ง เราจะได Error ลดลงครึ่งหนึ่งเชนกัน เปนไปตามที่เราวิเคราะหกอนหนานี้ คือ ในขณะที่ Central Difference นั้นคา Error จะลดลงประมาณหนึ่งในสี่ เนื่องจากเปน

)(hO)( 2hO

9.3.2 High Accuracy Finite Divided-Difference จากที่กลาวมาแลวในหัวขอกอน เราได Forward และ Backward Difference มี Error อยูใน และ Central

Difference อยูใน เราสามารถลด Error ลงโดยเพิ่มจํานวน Term ใน Taylor Series Expansion ยกตัวอยางในกรณีของ Forward Taylor Series Expansion และเราเพิ่มอีกหนึ่งเทอม เราได

)(hO)( 2hO

22

1 !2)('')(')()( Rhxfhxfxfxf i

iii +++=+

เมื่อจัดเรียงใหมเราได

)(2

)('')()()(' 21 hOhxfh

xfxfxf iiii +−

−= +

คราวนี้ถาเราแทนคา Second Derivative ดวนคาประมาณที่เราหาไดกอนหนานี้คือ

)()()(2)()('' 212 hO

hxfxfxfxf iii

i ++−

= ++

เราได )(2

)()(2)()()()(' 2121 hOh

xfxfxfh

xfxfxf iiiiii +

+−−

−= +++

เมื่อจัดเรียงสมการใหม เราได

)(2

)(3)(4)()(' 212 hOh

xfxfxfxf iiii +

−+−= ++

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

สังเกตวาการเพิ่มเทอมที่เปน Second Derivative จะเพิ่มความถูกตองของคําตอบเปน แตเราตองใชจุด สามจุดของ และเราสามารถทําไดคลายๆกันนี้ในกรณีของ Backward Difference และ Central Difference ในตารางถัดไปเปนการสรุปการหา Derivative ต้ังแต First Order จนถึง Forth Order Derivative โดยเพิ่มจํานวนเทอมของ Taylor Series Expansion ในการคํานวณ นั่นก็คือเพิ่มจุดที่ใชในการคํานวณคาประมาณ

)( 2hO)(),(),( 21 ++ iii xfxfxf

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 135

Example 9.4 จากตัวอยาง 9.3 ถาเราลองคํานวณใหม โดยใชการประมาณจาก Taylor Series Expansion ที่เพิ่มจํานวนเทอมขึ้น ดังสรุปในตาราง และเปรียบเทียบคา Error กับตัวอยางกอน ที่ 5.0=ix และ 25.0=h คําตอบ

จากสมการเดิมคือ เราได 2.125.5.15.1.)( 234 +−−−−= xxxxxf

2.1)0()(,0 22 === −− fxfx ii 103515625.1)25.0()(,25.0 11 === −− fxfx ii

925.0)5.0()(,5.0 === fxfx ii

636328125.0)75.0()(,75.0 11 === ++ fxfx ii 2.0)1()(,1 22 === ++ fxfx ii

Forward Difference:

%82.5,859375.0)25.0(2

)925.0(3)636328125.0(42.)5.0(' =−=−+−

≅ tef

Backward Difference:

%77.3,878125.0)25.0(2

2.1103515625.1(4)925.0(3)5.0(' =−=+−

≅ tef

Central Difference:

%0,9125.0)25.0(12

2.1)103515625.1(8)636328125.0(82.)5.0(' =−=+−+−

≅ tef

สังเกตวา Error ที่ไดลดลงตามที่ไดคาดการณไว และในกรณีของ Central Difference เราไดคําตอบที่แทจริง

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

ตารางขางลางสรุปกรรมวิธีในการหา Derivative ใน Order ตางๆ

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 136

ตารางที่ 9.2 สรุปสมการหา Derivative โดยวิธี Finite Divided-Difference

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

Type Equation Error

Forward h

xfxfxf iii

)()()(' 1 −≅ + )(hO

Forward h

xfxfxfxf iiii 2

)(3)(4)()(' 12 −+−≅ ++ )( 2hO

Forward 212 )()(2)()(''

hxfxfxfxf iii

i+−

≅ ++ )(hO

Forward 2123 )(2)(5)(4)()(''

hxfxfxfxfxf iiii

i+−+−

≅ +++ )( 2hO

Forward 3123 )()(3)(3)()('''

hxfxfxfxfxf iiii

i−+−

≅ +++ )(hO

Forward 31234 )(5)(18)(24)(14)(3)('''

hxfxfxfxfxfxf iiiii

i−+−+−

≅ ++++ )( 2hO

Forward 41234)4( )()(4)(6)(4)()(

hxfxfxfxfxfxf iiiii

i+−+−

≅ ++++ )(hO

Forward 412345)4( )(3)(14)(26)(24)(11)(2)(

hxfxfxfxfxfxfxf iiiiii

i+−+−+−

≅ +++++ )( 2hO

Backward hxfxfxf ii

i)()()(' 1−−

≅ )(hO

Backward h

xfxfxfxf iiii 2

)()(4)(3)(' 21 −− +−= )( 2hO

Backward 221 )()(2)()(''

hxfxfxfxf iii

i−− +−

≅ )(hO

Backward 2321 )()(4)(5)(2)(''

hxfxfxfxfxf iiii

i−−− −+−

≅ )( 2hO

Backward 3321 )()(3)(3)()('''

hxfxfxfxfxf iiii

i−−− −+−

≅ )(hO

Backward 34321 )(3)(14)(24)(18)(5)('''

hxfxfxfxfxfxf iiiii

i−−−− +−+−

≅ )( 2hO

Backward 44321)4( )()(4)(6)(4)()(

hxfxfxfxfxfxf iiiii

i−−−− +−+−

≅ )(hO

Backward 454321)4( )(2)(11)(24)(26)(14)(3)(

hxfxfxfxfxfxfxf iiiiii

i−−−−− −+−+−

≅ )( 2hO

Central h

xfxfxf iii 2

)()()(' 11 −+ −≅ )( 2hO

Central h

xfxfxfxfxf iiiii 12

)()(8)(8)()(' 2112 −−++ +−+−= )( 4hO

Central 211 )()(2)()(''

hxfxfxfxf iii

i−+ +−

≅ )( 2hO

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 137

ตาราง 9.2 (ตอ)

Type Equation Error

Central 22112

12)()(16)(30)(16)()(''

hxfxfxfxfxfxf iiiii

i−−++ −+−+−

= )( 4hO

Central 32112

2)()(2)(2)()('''

hxfxfxfxfxf iiii

i−−++ −+−

= )( 2hO

Central 3321123

8)()(8)(13)(13)(8)()('''

hxfxfxfxfxfxfxf iiiiii

i−−−+++ +−+−+−

= )( 4hO

Central 42112)4( )()(4)(6)(4)()(

hxfxfxfxfxfxf iiiii

i−−++ +−+−

= )( 2hO

Central 4

321123

)4(

6)()(12)(39)(56)(39)(12)(

)(

hxfxfxfxfxfxfxf

xf

iiiiiii

i

−−−+++ −+−+−+−=

)( 4hO

9.4 Newton-Cotes Integration Formulas สมการของ Newton-Cotes เปนรูปแบบที่ใชกันมากที่สุดในการหาคา Integral แบบ Numerical หลักการคือการ

เปลี่ยนรูปสมการที่สลับซับซอนใหอยูในรูปสมการทางคณิตศาสตรที่งายในการหาคา Integrate คือในรูปของ Polynomial ดังนี้

∫∫ ≅=b

a n

b

adxxfdxxfI )()(

ซึ่ง เปน Polynomial มี Order เทากับ และอยูในรูป )(xfn n

nnn

nn xaxaxaxaaxf +++++= −−

11

2210)( L

กอนที่จะพูดในรายละเอียดตอไป ขอใหเราเขาใจกอนวา สําหรับ Variable แคตัวเดียว การหาคา Integrate จากจุด ถึงจุด ของ ความจริงแลวคือการหาคาพื้นที่จากจุดa b )(xf ax = ของ Function ที่กวาดบนแกน x จนถึงจุด โดยพื้นที่ที่อยูเหนือแกนbx = x จะมีคาเปนบวก และพื้นที่ที่อยูใตแกน x จะมีคาเปนลบ

การนํา Polynomial ในสมการบนไปใช เราจําเปนตองหาคา Coefficient โดยการแทนคาดวยจุด ที่รู และแกสมการ Linear Equation ออกมา ซึ่งถาเราใช Polynomial Order สูง การคํานวณจะสลับซับซอน (ดูหัวขอในบทที่ 8) วิธีที่งายกวาคือใชสมการของ Polynomial ที่เขียนในรูปแบบที่เหมาะสม เรียก Lagrange Interpolating Polynomial ดังนี้

)](,[ ii xfx

∑=

=n

iiin xfxLxf

0)()()( , ∏

≠= −

−=

n

ijj ji

ji xx

xxxL

0

)(

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

สมการขางบน แมวาดูจะสลับซับซอน แตจะมีประโยชนในการสราง Polynomial ที่จะนําไปใช โดยไมตองมีการคํานวณคา Coefficient ของ Polynomial ลวงหนา และจะประหยัดการคํานวณไดมาก เราจะนําไปใชเมื่อเราเริ่มพูดถึง Second Order Polynomial

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 138

เนื่องจากเปนการประมาณคา และ Error ที่เกิดขึ้นจะขึ้นอยูกับระยะหางของสองจุด และ วิธีการที่จะลด Error ก็คือแบงการ Integrate ออกเปนสวนที่มีขนาดเล็กหลายๆสวน(เรียก Multiple Application) ดังนี้

a b

bxaxdxxfdxxfdxxfdxxfdxxfI n

n

i

x

x

x

x

x

x

x

x

b

a

i

i

n

n

===+++== ∑∫∫∫∫∫= −−

,;)()()()()( 01 11

2

1

1

0

L

9.4.1 Zero-Order Approximation วิธีนี้เปนวิธีการประมาณคา Integrate ต้ังแตสมัยกอนที่จะมีคอมพิวเตอร ซึ่งเราได ดังนั้นคา

Integral ที่ประมาณไดจะเทากับ 00 )( axf =

][)( 00 abadxadxxfIb

a

b

a−=≅= ∫∫

คา อาจจะใชคาเทากับ หรือ แตที่ใหคา Error ตํ่าสุดจะหาไดจากจุดของ Function ที่อยูก่ึงกลางระหวาง และ กลาวคือ

0a )(af )(bfa b

)( 20bafa +=

รูปขางลางแสดงถึงวิธีการหาคา Integrate ดวยวิธีนี้ และรูปถัดไปแสดงการประมาณคา Integral ของ Function โดยเพิ่มความถูกตองดวยการแบงการคํานวณออกเปนสวนที่เล็กกวาและมี Error นอยกวา

วิธีการนี้เรียกอีกอยางหนึ่งวา Strip Method คือเราแบงพื้นที่ออกเปนแถบของสี่เหลี่ยมผืนผา และประมาณคาพ้ืนที่โดยคํานวณจากพื้นที่ของสี่เหลี่ยมผืนผาที่ได

รูปท่ี 9.2 Strip Method

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 139

รูปท่ี 9.3 การคํานวณ Zero-Order Approximation (Chapra and Canale, 1988)

9.4.2 First-Order Approximation: Trapezoidal Rule ในกรณีที่ Polynomial เปน First-Order ในรูปของ xaaxf 101 )( += ซึ่งคือสมการเสนตรง โดยสมการ

เสนตรงที่เหมาะสมคือเสนตรงที่ลากจากจุด ไปยังจุด ดังนั้นสมการสามารถเขียนไดเปน(ดูรูป) a b

จากคุณสมบัติของสมการเสนตรง สมการประมาณคาจะไดเปน

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 140

รูปท่ี 9.4 การคํานวณ Trapezoidal Rule (Chapra and Canale, 1988)

⎥⎦⎤

⎢⎣⎡ +

−=

⎥⎦⎤

⎢⎣⎡ −

−−

+=≅= ∫∫∫

2)()()(

)()()()()()( 1

bfafab

dxaxabafbfafdxxfdxxfI

b

a

b

a

b

a : Trapezoidal Rule

มองอีกมุมมองหนึ่งก็คือเราประมาณคา Integral โดยใชพ้ืนที่ของสี่เหลี่ยมคางหมู (ดูรูปที่ 9.4) แทน ซึ่งเปนที่มาของคําวา Trapezoidal Rule หรือถามองจากสมการขางบนใหดี จะเห็นวาหลักการของการหาคา Integral ทําไดโดยคํานวณพื้นที่

HeightAverageabHeightAverageWidthI ×−=×≅ )(

และคาความสูงเฉลี่ยของสี่เหลี่ยมคางหมูก็คือ 2

)()( bfaf + นั่นเอง

การนําสมการเสนตรงมาประมาณคาของ Function จะยังผลใหเกิด Truncation Error ซึ่งเราสามารถพิสูจนไดจาก Newton-Gregory Interpolating Polynomial (รายละเอียดจะไมกลาวถึง) วาคาของ Error สําหรับ Trapezoidal Rule จะอยูในรูป

3))((''121 abfEt −−= ξ

โดยที่คา ξ จะมีคาอยูระหวาง และ b a

Example 9.5 ตัวอยางของ Single-Application ของ Trapezoidal Rule จงทําการประมาณคา Integral ของ 5432 400900675200252.0)( xxxxxxf +−+−+=

ในชวงจาก จนถึง โดยใช Trapezoidal Rule จากนั้นคํานวณคา True Error 0=a 8.0=b

คําตอบ เราได

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 141

[ ] 8.00

654328.0

06/4005/9004/6753/2002/252.0)( xxxxxxdxxf +−+−+=∫

และคําตอบที่แทจริงเทากับ 1.64053334 ในการประมาณคา เราหาคา 232.0)8.0(,2.0)0( == ff

ดังนั้น จาก Trapezoidal Rule เราได 1728.02

232.02.08.0 =+

≅I

และ %5.89,46773334.11728.064053334.1 ==−= tt eE จากที่กลาวมาแลว คาของ Error สามารถทําใหลดลงได โดยการแบงการ Integration เปนสวนเล็กๆที่

ตอเนื่องกัน ถาเราแบงชวงการ Integration ออกเปน 1+n จุดที่มีระยะหางเทากับ เทากับ และเราจะได Segment ดังนั้น

h n

nabh −

=

โดยทั้ง จุดเริ่มนับจาก ซึ่งจุดเริ่มตนเราให1+n nxxx ,...,, 10 ax =0 และจุดสุดทาย เราจะไดสมการของ Trapezoidal Rule เปน

bxn =

2

)()(2

)()(2

)()( 12110 nn xfxfhxfxfhxfxfhI +++

++

+≅ −L

สรุปแลว เราจะได

⎥⎦

⎤⎢⎣

⎡++≅ ∑

=

1

10 )(2)()(

2

n

iin xfxfxfhI : Multiple Trapezoidal Rule

และคา Estimate Error สามารถแสดงไดวาอยูในรูป

''2

)(2

3

fnabEa

−−=

โดยที่ ''f คือคาเฉลี่ยของ Second Derivative ของ Function ในชวง ถึง a b

Example 9.6 โดยใช Multiple-Application ของ Trapezoidal Rule จงทําการประมาณคา Integral ของ 5432 400900675200252.0)( xxxxxxf +−+−+=

ในชวงจาก จนถึง โดยใชการแบงเปนสอง Segment จากนั้นคํานวณคา True Error 0=a 8.0=b

คําตอบ เราหาคา 232.0)8.0(,456.2)4.0(,2.0)0( === fff

ดังนั้น 0688.1]232.0)456.2(22.0[24.0

=++≅I

จะได 64.0)60()2(12

8.0%,9.34,57173.00688.164053334.1 2

3

=−−===−= att EeE

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

คา -60 คือคาเฉลี่ยของ Second Derivative หาไดจากการ Integrate ของ Second Derivative ในชวง [0,0.8] และหารดวยชวงที่ Integrate หรือ ∫−=

8.0

0)08.0(1 )('''' dxxff ขอใหนักศึกษาลองทําดูเอง

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 142

รูปขางลางสาธิต Error ที่เกิดจากการ Approximation โดยแบงเปน 2, 3, 4 และ 5 Segment และตารางขางลางแสดงคา Error ที่ลดลงของ Function นี้ เมื่อเราเพิ่มจํานวน Segment ซึ่งจะสังเกตไดวา ถาเราเพิ่ม Segment เปนสองเทา Error จะลดลงเปนหนึ่งในสี่โดยประมาณ

รูปท่ี 9.5 Multiple-Application Trapezoidal Rule (Chapra and Canale, 1988)

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 143

ตารางที่ 9.4 แสดง Error ท่ีลดลง เม่ือจํานวน Segment เพิ่มขึ้น

n h I %,te 1 0.8 0.1728 89.5 2 0.4 1.0688 34.9 3 0.2667 1.3695 16.5 4 0.2 1.4848 9.5 5 0.16 1.5399 6.1 6 0.1333 1.5703 4.3 7 0.1143 1.5887 3.2 8 0.1 1.6008 2.4 9 0.0889 1.6091 1.9

10 0.08 1.6150 1.6

9.4.3 Second-Order Approximation: Simpson’s 1/3 Rule Simpson’s 1/3 Rule ไดจากการประมาณคาโดยใช Second Order Polynomial หรือสมการ Parabola ซึ่งการ

สรางสมการ Parabola นั้น เราจะตองรูคา Coefficient 3 ตัว ดังนั้นเราจะตองปอนจุดของคา สามจุดและแกสมการจึงจะหา นอกจากนี้สมการที่ไดควรจะเริ่มจาก และจบลงที่ซึ่งจุด และ คือสองจุดที่เราตองใช และจุดที่สามปกติจะใชที่จุดกึ่งกลาง คือ

22102 )( xaxaaxf ++=

)(xf 210 ,, aaa )(af )(bfa b 2/)( ba + ในการนี้ เราตองคํานวณหา Coefficient ทั้งสามของ สําหรับทุก Segment ที่คํานวณ ซึ่งจะทําใหการ

ประมาณคาใชการคํานวณที่มาก วิธีที่ดีกวาคือเราใช Polynomial ในรูปของ Lagrange Interpolating Polynomial ดังที่ไดกลาวในตอนตนของบท ซึ่งจะหาไดโดยตรงจากการแทนคาของ Function 3 จุดในสมการ ดังนี้

210 ,, aaa

∑=

=2

02 )()()(

iii xfxLxf , ∏

≠= −

−=

2

0

)(ij

j ji

ji xx

xxxL

สมมุติเราแบง Segment ออกเปน Segment และจุดเริ่มจาก โดยที่ระยะหางแตละจุดมีคาเทากันคือเทากับ ซึ่งสมการ Parabola แรกจะผานสามจุดแรกของ Function คือ ดูรูปประกอบ

n nxxx ,...,, 10

h )](,[)],(,[)],(,[ 221100 xfxxfxxfx

ดังนั้น สมการของ Lagrange Interpolating Polynomial เราจะได

)())((

))(()())((

))(()())((

))(()()()()()()()(

21202

101

2101

200

2010

21

2211002

xfxxxxxxxxxf

xxxxxxxxxf

xxxxxxxx

xfxLxfxLxfxLxf

−−−−

+−−−−

+−−−−

=

++=

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

และการประมาณคา Integration ของชวงแรก จาก ถึง จะเปน 0x 2x

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 144

dxxfxxxxxxxxxf

xxxxxxxxxf

xxxxxxxxI

x

x∫ ⎥⎦

⎤⎢⎣

⎡−−−−

+−−−−

+−−−−

≅ 2

02

1202

101

2101

200

2010

21 ())((

))(()())((

))(()())((

))((

เมื่อทํา Integration ในสมการขางบน และจัดเรียงเทอมใหม ซึ่งขอใหนักศึกษาลองทําเปนการบาน เราจะได

[ )()(4)(3 210 xfxfxfhI ++≅ ] : Simson’s 1/3 Rule

ในกรณีของ Multiple Application โดยเราแบงออกเปน Segment เริ่มจาก และคาประมาณของ Integration จะไดจากผลรวมของคาประมาณในแตละ Segment ดังนี้

n nxxx ,...,, 10

6)()(4)(2

6)()(4)(2

6)()(4)(2

)()()(

12

432210

2

4

2

2

0

nnn

x

x

x

x

x

x

xfxfxfh

xfxfxfhxfxfxfh

dxxfdxxfdxxfI n

n

++++

+++

++≅

+++=

−−

∫∫∫−

K

L

เมื่อรวมเทอมเขาดวยกันเราได

n

xfxfxfxfabI

n

n

ii

n

ii

3

)()(2)(4)()(

2

,...6,4,2

1

,...5,3,10 +++

−≅∑∑−

=

= : Multiple Simson’s 1/3 Rule

ในกรณีของ Single Segment นั้น คา Error ของ Simson’s 1/3 Rule จะดีกวาที่ควรจะเปน และพบวาอยูใน แทนที่จะเปน และเมื่อเทียบกับ ของ Trapezoidal Rule จะดีกวามาก ซึ่งคา Error จะอยูในรูปของ(รายละเอียดการคํานวณจะไมกลาว ผูสนใจขอใหดูจาก Textbook) (Note:สําหรับ Multiple Segment คา Error จะเปน สําหรับ Simpson’s Rule เทียบกับ สําหรับ Trapezoidal Rule ถากําหนดชวง ใหคงที่)

)( 5hO )( 4hO )( 3hO

)( 4hO )( 2hO ],[ ba

2

)();(90

)(2880

)( )4()4(5 abhfhfabEt

−=−=

−−= ξξ

โดยที่ ξ มีคาอยูระหวาง และb และในกรณีของ Multiple Application Simpson’s Rule คา Error หาไดจากการรวมคา Error ในแตละ Segment ทั้งหมด Segment และคาเฉลี่ยของ Forth Derivative ในชวงนั้น ดังนั้น

an

)4(

4

5

180)( fnabEa

−−=

เนื่องจาก Simson’s 1/3 Rule แมวาจะเปนแค Second Order Estimate เทานั้น แตมี Error ที่เทียบเทา Third Degree Estimate(Simpson’s 3/8 Rule ที่จะกลาวตอไป) ดังนั้นจะพบวาวิธีนี้เปนวิธีที่นิยมใชมากที่สุด

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

รูปขางลางสาธิตการใช Parabola หรือ Second Degree Polynomial มาทําการประมาณคา Integral ใน Simpson’s 1/3 Rule(รูปซาย) เปรียบเทียบกับการใช Third Degree Polynomial ใน Simpson’s 3/8 Rule(รูปขวา จะกลาวตอไป)

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 145

รูปท่ี 9.6 Simpson 1/3 (a) และ Simpson 3/8 (b) (Chapra and Canale, 1988)

Example 9.7 ใช Simson’s 1/3 Rule ดวยคา 4=n ทําการประมาณคา Integral ของ 5432 400900675200252.0)( xxxxxxf +−+−+=

ในชวงจาก จนถึง จากนั้นคํานวณคา True Error 0=a 8.0=b

คําตอบ เราได 2.0,4 == hn 232.0)8.0(,464.3)6.0(,456.2)4.0(,288.1)2.0(,2.0)0( ===== fffff

62346667.112

232.0)456.2(2)464.3288.1(42.08.0 =++++

=I

%04.1,01706667.062346667.164053334.1 ==−= tt eE คา Average ของ Forth Derivative ∫−=

8.0

0

)4()08.0(

1)4()( dxxff พบวามีคาเทากับ -2400 ดังนั้นคา Estimate

Error สามารถคํานวณไดเปน 27306667.0)2400(2880

8.0180

)( 5)4(

4

5

=−−=−

−= fnabEa

สังเกตวาเราใชสมการสุดทายเปนแคคา Error Estimate เทานั้น เพราะเราใชคาเฉลี่ยของ Forth Derivative ซึ่งไมใชคาที่แทจริงของ และความแตกตางที่ไดจาก True Error ในกรณีนี้ที่จริงแลวจะเกิดจาก Round Off Error เพราะ Function เปน Polynomial Degree 5

)()4( ξf

9.4.4 Third-Order Approximation: Simpson’s 3/8 Rule ในกรณีนี้ เราใช Third Order Lagrange Polynomial มาประมาณคา Integration

∫∫ ≅=b

a

b

adxxfdxxfI )()( 3

และดวยวิธีการคลายกันกับที่กลาวในหัวขอกอน เราสามารถแสดงไดวาสมการขางบนอยูในรูป

[ ])()(3)(3)(83

3210 xfxfxfxfhI +++≅ : Simson’s 3/8 Rule

โดยที่ และสมการนี้รูจักกันในนามของ Simson’s 3/8 Rule 3/)( abh −=

คาของ Error ใน Simson’s 3/8 Rule พบวาอยูในรูป

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 146

3

)(),(803)(

6480)( 45)4(

5 abhfhfabEt−

=−=−

−= ξξ

จะเห็นวา Simson’s 3/8 Rule จะมี Error ที่ดีกวา Simson’s 1/3 Rule อยูเล็กนอยเน่ืองจากตัวหารที่มากกวาเทานั้น แตตองใชจุดในการคํานวณ 4 จุด และเปน Third Order Estimate ซึ่งทําใหนิยมนอยกวา Simson’s 1/3 Rule และจะใชในกรณีที่จุดของขอมูลนั้นไมสามารถจะบรรจุใน Simson’s 1/3 Rule ได ยกตัวอยางเชน เรามี Data ทั้งหมด 6 จุด หรือ 5 Segment ซึ่งถาใช Trapezoidal Rule อาจจะให Error ที่สูงเกินไป เราอาจจะใช Simson’s 1/3 Rule ในชวงแรกจาก ถึง และใช Simson’s 3/8 Rule ในชวง ถึง และจะไดคาที่ถูกตองกวา 0x 2x 2x 5x

Example 9.8 ใช Simson’s 3/8 Rule ทําการประมาณคา Integral ของ 5432 400900675200252.0)( xxxxxxf +−+−+=

ในชวงจาก จนถึง จากนั้นคํานวณคา True Error จากนั้นเปรียบเทียบกับการใช Simson’s 1/3 Rule ตามดวย Simson’s 3/8 Rule สําหรับในกรณีที่เราแบงเปน 5 Segment

0=a 8.0=b

คําตอบ กรณีของ Simson’s 3/8 Rule เราแบงเปน 4 Segment และได

232.0)8.0(,48717696.3)5333.0(,43272428.1)2667.0(,2.0)0( ==== ffff

51917037.18

232.0)48717696.3(3)43272428.1(32.08.0 =+++

≅I

%4.7,12136297.051917037.164053334.1 ==−= tt eE

12136297.0)2400(6480

)8.0( 5

=−−=aE

กรณีที่เราแบงออกเปน 5 Segment เราได 16.0=h และ

232.0)8.0(,18192896.3)64.0(,18601472.3)48.0(,74339328.1)32.0(,29691904.1)16.0(,2.0)0(

======

ffffff

ถาสวนแรกเราใช Simpson’s 1/3 Rule เราได

38032370.06

74339328.1)29691904.1(42.032.0 =++

≅I

และสวนที่สองเราใช Simpson’s 3/8 Rule เราได

26475346.18

232.0)18192896.3(3)18601472.3(374339328.148.0 =+++

≅I

ดังนั้นผลรวมของการ Integration จะเปน 64507716.126475346.138032370.0 =+=I %28.0,00454383.064507716.164053334.1 −=−=−= tt eE

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

รูปขางลางสาธิตการคํานวณโดยใชวิธีผสมของ Simpson’s Rule ที่ใช

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 147

รูปท่ี 9.7 การใช Simpson 1/3 และ Simpson 3/8 Rule ผสมกัน (Chapra and Canale, 1988)

สําหรับกรรมวิธีของ Newton-Cotes นั้น เราสามารถใช Order ของ Polynomial ที่สูงกวานี้ในการประมาณคา Integration แตเนื่องจากอยูนอกขอบเขตของวิชานี้ เราจะไมกลาวถึง รวมถึงกรณีที่แตละ Segment ของขอมูลมีระยะหางไมเทากัน ในสวนทายของบทนี้ ไดแสดง Source Code ของ MATLAB Program สําหรับการประมาณคา Integration ในตัวอยางที่เราไดกลาวถึง พึงสังเกตวากรรมวธิีของ Newton-Cotes นั้นสามารถนํามาใชได แมวาเราไมรู Function ที่แทจริง สิ่งที่เราตองการคือคาของ Function ที่จุดตางๆ ที่ระยะเทาๆกันเทานั้น )(xf

9.5 Integration of Equations: Romberg Integration ในกรณีที่เรารู Function ที่เราตองการหาคา Integration เราสามารถนํา Trapezoidal Rule หรือ Simson’s Rule

มาใชได โดยการแบงชวงที่ตองการตามที่ตองการ ยิ่งชวงมีขนาดเล็ก หรือจํานวน Segment มีมาก คาของ Integral ที่ไดก็จะยิ่งถูกตองมากขึ้นเทานั้น อยางไรก็ตามถาเราแบงชวงใหเล็กลงไปเรื่อยๆ จนถึงจุดหนึ่งที่คา Error กลับจะสูงขึ้น นั่นคือ Limit ที่ถูกกําหนดสําหรับแตละวิธี ซึ่งเปนผลมาจาก Round Off Error

จากรูปแสดงกราฟเปรียบเทียบคา Error ที่เกิดกับจํานวนของ Segment ที่ใช ระหวาง Trapezoidal Rule และ Simpson’s 1/3 Rule ของ Function ในชวงต้ังแต จนถึง จะสังเกตไดวาคา Limit ของ Precision ที่เกิดในแตละวิธี และจํานวน Segment ที่ดีที่สุดของแตละวิธี อันเนื่องมาจาก Round-Off Error นั้นไมเทากัน

5432 400900675200252.0)( xxxxxxf +−+−+=

0=x 8.0=x

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 148

รูปท่ี 9.8 Limit ของ Newton-Cotes Method (Chapra and Canale, 1988)

ในกรณีเชนนี้ ถาเราตองการความถูกตองสูงๆ เราจําเปนที่จะตองใชวิธีอื่นในการประมาณคา ซึ่ง Romberg Integration เปนเทคนิคหนึ่งที่นํามาใชไดดี โดยใชการทํา Trapezoidal Rule หลายๆครั้งติดตอกันเขียนเปน Algorithm การคํานวณจะใชพ้ืนฐานมาจากวิธีของ Richardson Extrapolation ในการกําจัด Error สําหรับแตละครั้งที่ทําการคํานวณ

อีกวิธีหนึ่งคือวิธีที่เรียก Gauss Quadrature ซึ่งเปนวิธีที่ปรับมาจากวิธีของ Newton-Cotes Formula เชนกัน แตใชวิธีการคํานวณสําหรับการหาคาแตละชวงที่ดีกวา โดยมีการเลือกตําแหนงของจุดที่เหมาะสมกวา กรรมวิธีของ Gauss Quadrature จะไมกลาวในชั้นนี้ ผูที่สนใจสามารถศึกษาไดจากตําราของ Numerical Method ทั่วไป

9.5.1 Richardson’s Extrapolation วิธีการของ Richardson’s Extrapolation จะใชวิธีการของการ Estimate คา Integral สองอัน และมาเปรียบเทียบ

กับอันที่สาม เพื่อมาแกไข Error ที่เกิดขึ้น ซึ่งคา Error ที่เกิดจากการทํา Multiple Application ของ Trapezoidal Rule สามารถเขียนในรูป

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 149

)()( hEhII += โดยที่ I คือคา Integral ที่แทจริง, คือคาประมาณของ Integral ที่ไดจากการทํา n Segment โดย และ เปน Truncation Error ที่เกิด ดังนั้นถาเราทําการ Estimate สองครั้งโดยใชชวงหางไมเทากัน คือ และ เราสามารถเขียน

)(hI nabh /)( −=

)(hE 1h 2h

)()()()( 2211 hEhIhEhII +=+= จากที่กลาวมาแลววาคา Estimate Error จากการทํา Multiple Application ของ Trapezoidal Rule จะอยูในรูป

''12

)(2

3

fnabEa

−−=

เมื่อแทนคา เราไดคา Estimate Error เปน habn /)( −=

''12

2 fhabEa−

−=

ดังนั้น เราสรุปไดวา อัตราสวนระหวาง Error ทั้งสอง Estimate จะมีคาประมาณเปน

22

21

2

1

)()(

hh

hEhE

หรือ

2

2

121 )()( ⎟⎟

⎞⎜⎜⎝

⎛≈

hhhEhE

และเมื่อแทนคากลับลงในสมการเดิม เราได

2

2

12122 )()()()( ⎟⎟

⎞⎜⎜⎝

⎛+≈+=

hhhEhIhEhII

และเมื่อจัดเรียงสมการใหม เพื่อหาคา เราจะได )( 2hE

221

212 )/(1

)()()(hhhIhIhE

−−

และทายสุด เราสามารถนําคาดังกลาวมาปรับปรุงการ Estimate ในครั้งที่สองไดเปน

[ ])()(1)/(

1)()()( 12221

222 hIhIhh

hIhEhII −⎥⎦

⎤⎢⎣

⎡−

+≈+=

เราสามารถแสดงใหเห็นไดวา คา Error ที่ไดจากการ Estimate นี้มี ซึ่งไดจากการรวม Trapezoidal Rule สองอัน แตละอันมี เขาดวยกัน ในกรณีที่เราใชระยะหางของแตละจุดเทาๆกัน ซึ่งจุดที่เหมาะสมคือที่

และสมการขางบนจะเปน

)( 4hO)( 2hO

2/12 hh =

)(31)(

34)]()([

121)( 121222 hIhIhIhIhII −=−−

+≈

Example 9.9 จาก Function เดิม เปรียบเทียบการทํา Trapezoidal Rule โดยใชวิธีของ Error Correction กับวิธีปกติ

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

5432 400900675200252.0)( xxxxxxf +−+−+=

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 150

ในชวงจาก จนถึง 0=a 8.0=bคําตอบ

ในตัวอยางกอนๆ เราทํา Single Application และ Multiple Application โดยใช Trapezoidal Rule ของ Function นี้มาแลว ซึ่งผลสรุปในตารางขางลาง

ตารางที่ 9.5 แสดงผลการคํานวณสําหรับตัวอยางที่ 9.9

Segment h Integral %,te 1 0.8 0.1728 89.5 2 0.4 1.0688 34.9 4 0.2 1.4848 9.5

ในการ Estimate จาก หนึ่งและสอง Segment เราได

36746667.1)1728.0(31)0688.1(

34

=−≈I

%6.16,27306667.036746667.164053334.1 ==−= tt eE สําหรับการ Estimate จาก สองและสี่ Segment เราได

62346667.1)0688.1(31)4848.1(

34

=−≈I

%0.1,01706667.062346667.164053334.1 ==−= tt eE

วิธีการของ Richardson’s Extrapolation สามารถนํามาทําตอ โดยใชการ Estimate ที่ไดใน ที่กลาวมาแลวสองอัน มาทําการ Estimate ใหมอีกหน ซึ่งจะใหความถูกตองยิ่งขึ้นไปอีกใน ในกรณีที่เราใชคาระยะหางแตละจุดเทาๆกัน ซึ่งการ Estimate แตละครั้งเราใชขนาดของ Step เปนครึ่งหนึ่งของอันเดิม สมการของ สามารถพิสูจนไดวาอยูในรูป

)( 4hO)( 6hO

)( 6hO

lm III151

1516

−≈

โดยที่ คือคาการ Estimate ที่ถูกตองมากกวา และ คือการ Estimate ที่ถูกตองนอยกวา(ใช Step Size ขนาดใหญกวาเปนสองเทา) ในทํานองเดียวกันถาเราทําตอไปอีก โดยการรวมสอง Estimate ที่มี เราจะไดคา Estimate ที่มีความถูกตองใน และสามารถแสดงเปนสมการสําหรับกรณีที่ Step Size เทากัน เปน

mI lI)( 6hO

)( 8hO

lm III631

6364

−≈

Example 9.10 ทดลองใชการ Estimate ใน สําหรับขอมูลในตัวอยางที่ 9.9 และเปรียบเทียบ Error )( 6hO

คําตอบ

เราได 64053334.1)36746667.1(151)62346667.1(

1516

151

1516

=−=−≈ lm III

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

สังเกตวาในกรณีนี้เราไดคําตอบที่ถูกตองถึงตัวเลขนัยสําคัญ 9 หลัก

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 151

9.5.2 Romberg Integration Algorithm จากที่กลาวในหัวขอกอน ในการปรับปรุงคาของ Integration ใหดีขึ้นเรื่อยๆสําหรับแตละ Step สําหรับการใช

ระยะหางแตละจุดที่เทาๆกัน และเปนครึ่งหนึ่งของ Step กอนหนานี้ ซึ่งเราสามารถเขียนเปนสมการทั่วไปไดในรูปของ

14

41

1,1,11

, −−

≈ −−−+

kkjkj

k

kj

III

โดยที่ และ คือคา Integration ที่ถูกตองมากกวา และถูกตองนอยกวา ตามลําดับ ที่ไดกอนหนานี้ สวนคา คือคา Estimate อันใหม โดยที่เมื่อ

1,1 −+ kjI 1, −kjI

kjI , 1=k เราได Trapezoidal Rule เดิม, สวน 2=k หมายถึงการ Estimate อันใหมที่เปน และ คือการ Estimate ที่เปน และตอไปเรื่อยๆ สําหรับคา)( 4hO 3=k )( 6hO j ใชเพื่อแสดงถึงความแตกตางของการ Estimate สองครั้งมี่มีความถูกตองมากกวา )1( +j และนอยกวา ของการใช Trapezoidal Rule เริ่มจาก Single Segment Application, 2 Segment, 4 Segment และตอไปเรื่อยๆ

)( j

สมการที่กลาวขางบน เปนสมการแสดงระบบสําหรับการหาคา Integration รูจักกันในนามของ Romberg Integration รูปที่ 9.9 ขางลางแสดงถึงขบวนการของการหาคา Integration จากตัวอยางเดิม โดยใชวิธีนี้ ซึ่ง Column แรกไดจากการใช Trapezoidal Rule ตามปกติ กลาวคือเปนคาของ โดยที่เมื่อ1,jI 1=j หมายถึง Single Segment Application ดวย Step Size = , ที่ ab − 2=j เปน 2-Segment Application ดวย Step Size , ที่ 2/)( ab − 3=j เปน 4-Segment Application ดวย Step Size 4/)( ab − และตอไปเรื่อยๆ สวนของ Column อื่นๆไดจากการประมาณคาที่ดีกวา โดยใชวิธีที่กลาวขางตนทําตอไปเรื่อยๆ

จํานวนครั้งของรอบหรือ Iteration ของการ Estimate ที่ตองใชขึ้นอยูกับคา Error ที่ตองการ โดยโปรแกรมจะหยุดเมื่อ

se

sa ee < ซึ่งคา Estimate Error ของแตละ Iteration หรือ ae สามารถหาไดจาก

%100,1

1,1,1 ×−

= −

k

kka I

IIe

จากรูปขางลาง สังเกตวา ไดคาที่ถูกตองแลวในระดับ 9 Significant Digit และเมื่อเปรียบเทียบกับวิธีการเดิม จากรูปกราฟที่แสดงใหดูกอนหนานี้ พบวา Simpson’s 1/3 Rule ตองใชถึง 256 Segment ที่จะไดคา Estimate เปน 1.64053332 และเราจะไมไดคาที่ดีกวานี้เนื่องมาจาก Round Off Error ในขณะที่ Romberg Integration ไดคาที่ถูกตอง(ถึง 9 หลัก) โดยใชพ้ืนฐานจากการรวมกันของ 1, 2, 4, และ 8-Segment Trapezoidal Rule

1,4I

เราจะขอจบสวนนี้ดวย Pseudo Code สําหรับ Romberg Integration สําหรับ MATLAB Implementation นั้นขอใหดูในภาคผนวกของบทนี้ โดย Pseudo Code แสดงขางลางนี้ จะเรียกใช Function สําหรับหาคา Integration โดยใช Trapezoidal Rule ซึ่งเราจะตองปอนคาจํานวน Segment และคาเริ่มตน และจะ Return คาอยูใน Variable ช่ือ ‘integral’ ซึ่ง Function ดังกลาวจะตองเขียนเพิ่มเองขึ้นอยูกับวา นั้นเปนอะไร

n ba,)(xf

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 152

)( 2hO )( 4hO )( 6hO )( 8hO (IT =1) 0.17280000 1.36746667 1.06880000 (IT =2) 0.17280000 1.36746667 1.64053334 1.06880000 1.62346667 1.48480000 (IT =3) 0.17280000 1.36746667 1.64053334 1.64053334 1.06880000 1.62346667 1.64053334 1.48480000 1.63946667 1.60080000

รูปท่ี 9.9 แสดงกรรมวิธีของ Romberg Integration

Pseudocode สําหรับ Romberg Integration: INPUT a,b (integration limits) INPUT es (stopping criterion) INPUT maxit (maximum iteration) n=1 CALL traprule(n,a,b,integral) I(1,1)=integral Ea=1.1*es i=0 DOWHILE (ea > es) and (i < maxit) i=i+1 n=2^i CALL traprule(n,a,b,integral) I(i+1,1)=integral DOFOR k = 2 to i+1 j= 2+i-k I(j,k)=(4^(k-1)*I(j+1,k-1)-I(j,k-1))/(4^(k-1)-1) ENDDO ea = abs((I(1,i+1)-I(1,i))/I(1,i+1))*100 ENDDO

9.6 สรุปและเปรียบเทียบวิธีการหาคา Integration แบบตางๆ

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

ตารางการหาคา Derivative ไดสรุปใหแลวในสวนทายของหัวขอ 9.2 ในที่นี้เราจะกลาวเฉพาะการ Integration ซึ่งตารางขางลางเปนตารางสรุปเปรียบเทียบในแตละวิธี ซึ่งขอมูลที่ใหไดรวมวิธีของ Gauss Quadrature ไวดวย แมวาจะไมไดกลาวในรายละเอียด

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 153

ตารางที่ 9.6 เปรียบเทียบการ Intrgration ในแตละวิธี

Method

Data Points Required for

One Application

Data Points Required for

Application

n Truncation Error Application

Programming Effort Comments

Trapezoidal Rule

2 1+n )(''3 ξfh≅ Wide Easy

Simpson’s 1/3 Rule

3 12 +n )()4(5 ξfh≅ Wide Easy

Simpson’s 1/3 and 3/8 Rule

3 or 4 3≥ )()4(5 ξfh≅ Wide Easy

Higher-Order Newton-Cotes

5 or More N/A )()6(7 ξfh≥ Rare Easy

Romberg Integration

3 Requires Be

Known )(xf

Moderate ไมเหมาะกับ Data ที่เปนตาราง

Gauss Quadrature

2 or More N/A Requires Be

Known )(xf

Easy ไมเหมาะกับ Data ที่เปนตาราง

9.7 Homework Chapter IX 1. จงคํานวณคา Derivative ใหมีความถูกตองในระดับ ของ ที่ )( 4hO 152 +−= xxey 2.0,2 == hx

2. ขอมูลตอไปน้ีไดจากการเก็บตําแหนงของวัตถุเมื่อเทียบกับเวลา จงใชวิธีการทาง Numerical Method หาความเร็วและความเรงของวัตถุที่เวลาตางๆ

เวลา ms )(t 0 1 2 3 4 5

ตําแหนง(เมตร) 0 2.1 7.8 18.2 31.9 50.3

3. จงประมาณคา Integral ของ โดยใช Trapezoidal Rule กําหนด มุมของ sin มีหนวยเปน Radian

∫1

0

32 sin15 xdxex x π 6=n

4. จงประมาณคา Integral ของ โดยใช Simpson’s 1/3 Rule กําหนด มุมของ sin มีหนวยเปน Radian

∫1

0

32 sin15 xdxex x π 6=n

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

5. จงประมาณคา Integral ของ โดยใช Simpson’s 3/8 กําหนด มุมของ sin มีหนวยเปน Radian

∫1

0

32 sin15 xdxex x π 6=n

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 154

6. จงประมาณคา Integral ของ โดยใช Romberg Integration กําหนด มุมของ sin มีหนวยเปน Radian

∫1

0

32 sin15 xdxex x π %01.0=se

7. ขอมูลจากการทดลองหนึ่ง เปนการหาความเขมของสาร เมื่อเทียบกับระยะหางจากจุดอางอิง ในสภาพแวดลอมหนึ่ง ไดคาเปนตารางดังนี้

ระยะ เมตร )(x 1 2 3 4 5 6 7

ความเขม(Micro Mole)

19.85 14.23 6.89 11.17 3.58 1.24 3.75

จงใช Simpson’s 1/3 Rule ประมาณคา Integral ในชวง 1 เมตร ถึง 7 เมตร จากนั้นประมาณคา Error ที่ได

9.8 ภาคผนวกแสดง MATLAB Program Source Code ขางลางเปน MATLAB Program ที่ใชคํานวณสําหรับ Function ในตัวอยาง ในกรณีของ Function

อื่นนักศึกษาจะตองแกไขเอาเอง สําหรับ Trapezoidal Rule และ Simpson Rule นั้น นักศึกษาสามารถแกไขโปรแกรมที่จะรับคา Data Point มาทําการคํานวณได โดยปอน Array ของ Data Point ที่ตองการคํานวณในลักษณะของ Vector ทั้งนี้ นักศึกษาตองแกไขโปรแกรมที่ใหไวขางลางเพื่อที่จะรับคาและคํานวณ

9.8.1 Trapezoidal Rule in Example 5432 400900675200252.0)( xxxxxxf +−+−+=function In=traprule1(n,a,b) % function In=traprule1(n,a,b) % % This function calculate integral of function % f(x)=0.2+25x-200x^2+675x^3-900x^4+400x^5 % using Trapezoidal Rule % Input n=no.segment,a= start, b= end h=(b-a)/n In=0; x0=a; x1=a+h; true = 1.6405333333333333333333333333333; for i = 1:n fx0=0.2+25*x0-200*x0^2+675*x0^3-900*x0^4+400*x0^5; fx1=0.2+25*x1-200*x1^2+675*x1^3-900*x1^4+400*x1^5; In=In+h*(fx0+fx1)/2; x0=a+i*(b-a)/n; x1=a+(i+1)*(b-a)/n; end et=(true-In)/true*100; In et

9.8.2 Simpson’s 1/3 Rule in Example 5432 400900675200252.0)( xxxxxxf +−+−+=function In=simp13rule1(n,a,b) % function In=traprule1(n,a,b) % % This function calculate integral of function % f(x)=0.2+25x-200x^2+675x^3-900x^4+400x^5 % using Simpson's 1/3 Rule

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

% Input n=no.segment,a= start, b= end

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 155

% n must be even number h=(b-a)/n segment = n/2 In=0; x0=a; x1=a+h; x2=a+2*h; true = 1.6405333333333333333333333333333; for i = 1:segment fx0=0.2+25*x0-200*x0^2+675*x0^3-900*x0^4+400*x0^5; fx1=0.2+25*x1-200*x1^2+675*x1^3-900*x1^4+400*x1^5; fx2=0.2+25*x2-200*x2^2+675*x2^3-900*x2^4+400*x2^5; In=In+h*(fx0+4*fx1+fx2)/3; x0=a+i*2*(b-a)/n; x1=a+(i*2+1)*(b-a)/n; x2=a+(i*2+2)*(b-a)/n; end et=(true-In)/true*100; In et

9.8.3 Simpson’s 3/8 Rule in Example 5432 400900675200252.0)( xxxxxxf +−+−+=function In=simp38rule1(n,a,b) % function In=traprule1(n,a,b) % % This function calculate integral of function % f(x)=0.2+25x-200x^2+675x^3-900x^4+400x^5 % using Simpson's 3/8 Rule % Input n=no.segment,a= start, b= end % n must be multiple of 3 h=(b-a)/n segment = n/3 In=0; x0=a; x1=a+h; x2=a+2*h; x3=a+3*h; true = 1.6405333333333333333333333333333; for i = 1:segment fx0=0.2+25*x0-200*x0^2+675*x0^3-900*x0^4+400*x0^5; fx1=0.2+25*x1-200*x1^2+675*x1^3-900*x1^4+400*x1^5; fx2=0.2+25*x2-200*x2^2+675*x2^3-900*x2^4+400*x2^5; fx3=0.2+25*x3-200*x3^2+675*x3^3-900*x3^4+400*x3^5; In=In+3*h*(fx0+3*fx1+3*fx2+fx3)/8; x0=a+i*3*(b-a)/n; x1=a+(i*3+1)*(b-a)/n; x2=a+(i*3+2)*(b-a)/n; x3=a+(i*3+3)*(b-a)/n; end et=(true-In)/true*100; In et

9.8.4 Romberg Integration in Example 5432 400900675200252.0)( xxxxxxf +−+−+=function I=romberg1(a,b,es) % function In=romberg1(a,b,es) % % This function calculate integral of function % f(x)=0.2+25x-200x^2+675x^3-900x^4+400x^5 % using Romberg Integration

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

% Input a= start, b= end, es = end criteria

PART III : NUMERICAL MTD :: CHAPTER 9: Numerical Diff. and Integration 156

% This function will call function 'traprule1()' n=1 In = traprule1(n,a,b); I2(1,1)=In ea=1.1*es; true = 1.6405333333333333333333333333333; i=0; while (ea > es) & (i < 10) i=i+1 n=2^i In=traprule1(n,a,b); I2(i+1,1)=In for k = 2:i+1 j = 2+i-k I2(j,k)=(4^(k-1)*I2(j+1,k-1)-I2(j,k-1))/(4^(k-1)-1) end I2(1,i+1) ea=abs((I2(1,i+1)-I2(1,i))/I2(1,i+1))*100 et=abs((true-I2(1,i+1))/true)*100 end

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

PART III : NUMERICAL MTD :: CHAPTER 10: Ordinary Differential Equations 157

CHAPTER X ORDINARY DIFFERENTIAL EQUATIONS

ONE-STEP METHODS

10.1 กลาวนํา บทนี้จะเปนบทที่ 4 และเปนบทสุดทายที่เราจะกลาวใน Part ที่ 3 นี้ โดยจะเปนหัวขอเกี่ยวกับการนํา

คอมพิวเตอรมาแกสมการของ Differential Equation ซึ่งเนื้อหาจะครอบคลุมเฉพาะสมการที่ประกอบดวยหนึ่ง Independent Variable เทานั้น หรือเปนสมการที่เราเรียก Ordinary Differential Equation (ODE) ซึ่งถาสมการมีมากกวาหนึ่ง Independent Variable เราจะเรียก Partial Differential Equation(PDE)

ปกติการจัดสมการของ Differential Equation จะบงบอกเปน Order ของสมการ ซึ่งคือคา Order ของ Derivative ที่สูงที่สุดในสมการนั้น นอกจากนี้แลว สมการของ Differential Equation ยังจัดเปนไดอีกหลายแบบ ที่สําคัญคือ Linear Constant Coefficient Differential Equation ซึ่งรายละเอียดและคําจํากัดความเหลานี้ นักศึกษาควรจะไดเรียนมาบางแลวในวิชา Calculus

Solution ของสมการ Ordinary Differential Equation นั้นคือ Function ของ Independent Variable และคา Parameter ที่ทําใหสมการเปนจริง ยกตัวอยาง Function ขางลาง

15.81045.0 234 ++−+−= xxxxy

ซึ่งเปน Polynomial ที่มี Order เทากับสี่ ถาเราทําการ Differentiate สมการดังกลาว เราจะได Ordinary Differential Equation

5.820122 23 +−+−= xxxdxdy

สมการที่ไดจะอธิบายพฤติกรรมของ Polynomial ขางบน แตในมุมมองที่ตางกัน ซึ่งแทนที่สมการจะแสดงความสัมพันธในคาของ ตอคาของy x แตมันจะแสดงอัตราการเปลี่ยนแปลงของคาของ ตอการเปลี่ยนแปลงของy x(ซึ่งก็คือคา Slope) ที่จุดตางๆของ x รูปขางลางแสดง Plot ของ Function และ Derivative ของมัน

จาก Differential Equation ที่ได ถาเราพยายามหา Solution ของมัน คือ Function เดิม ในกรณีนี้ เราทําไดโดยการ Integration ดังนี้

[ ]

Cxxxx

dxxxxy

++−+−=

+−+−= ∫5.81045.0

5.820122234

23

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

ซึ่งจะอยูในรูปแบบที่เหมือนสมการดั้งเดิม ยกเวนที่จุดเดียว คือในการทําการ Differentiate และ Integrate กลับมานั้น เราไดสูญเสียขอมูลของคา Constant ไป ซึ่งถาขาดคานี้แลวจะทําให Solution ที่ไดมีจํานวนที่ไมจํากัด ขึ้นอยูกับคา C ที่เปนไปได ซึ่งไมจํากัดเชนกัน (ดูรูปถัดไป)

PART III : NUMERICAL MTD :: CHAPTER 10: Ordinary Differential Equations 158

อยางไรก็ตาม คําตอบที่ถูกตองจะมีคําตอบเดียว และในการที่จะหาคําตอบดังกลาว เราตองกําหนดสภาวะชวย(Auxiliary Condition) สําหรับสมการของ First-Order ODE สภาวะชวยดังกลาวก็คือ Initial Condition ที่จะใชในการหาคา Constant ยกตัวอยางเชนถาเรากําหนด Initial Condition ที่ 1,0 == yx เมื่อแทนคาในสมการที่ได C++−+−= )0(5.8)0(10)0(4)0(5.01 234

เราสามารถแกสมการและหาคา และเราจะได Unique Solution และเมื่อแทนคาที่ไดกลับในสมการของ Solution เราจะได คําตอบของ Differential Equation ที่ตองการ

1=C

การหา Solution ของ N-Order Differential Equation นั้น เราจะตองการ Condition ทั้งหมด N ตัวในการหา Unique Solution ถาทุกๆ Condition ที่ได ถูกกําหนดไวที่คาของ Independent Variable ตัวเดียวกัน การแกปญหาของเราจะเรียก Initial-Value Problem แตถาคา Condition ถูกกําหนดที่คาตางกันของ Independent Variable ปญหานี้จะเรียก Boundary-Value Problem ในบทนี้ จะคํานึงถึงปญหาประเภท Initial-Value Problem เทานั้น

0 0.5 1 1.5 2 2.5 3 3.5 41

1.5

2

2.5

3

3.5

4

4.5

5

0 0.5 1 1.5 2 2.5 3 3.5 4-8

-6

-4

-2

0

2

4

6

8

10

x

x

y

dy

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

รูปท่ี 10.1 แสดง Function และ Derivative ของ Function

PART III : NUMERICAL MTD :: CHAPTER 10: Ordinary Differential Equations 159

0 0.5 1 1.5 2 2.5 3 3.5 4-2

-1

0

1

2

3

4

5

6

7

8

x

y

2−=C

1−=C

0=C

1=C

2=C

3=C

4=C

รูปท่ี 10.2 แสดง Solution ของ Differential Equation ท่ีเปนไปได

10.2 วิธีการของ One-Step Methods เราจะมุงความสนใจสําหรับการแกปญหาสมการ Ordinary Differential Equation ที่อยูในรูป

),( yxfdxdy

=

ซึ่งการใชวิธีการของ Numerical มาแกปญหานั้น สมการที่ใชจะอยูในรูปของ คาใหม = คาเกา + Slope X Step Size หรือเขียนในลักษณะของสมการทางคณิตศาสตร hyy ii φ+=+1

ซึ่งจากสมการ คา Estimate ของ Slope φ จะถูกใชในการ Extrapolate ในการหาคาใหม จากคาเกา ในชวงของระยะทาง ซึ่งสมการสามารถกระทําทีละ Step ในการคํานวณหาเสนทางของ Solution ที่ตองการ

1+iy iyh

วิธีการดังกลาว เรียกวา One-Step Method ซึ่งในกรรมวิธีที่จะกลาวตอไป จะอยูในรูปของสมการนี้ เพียงแตความแตกตางจะอยูในสวนของการ Estimate คา Slope ซึ่งวิธีการที่งายที่สุดก็คือการ Estimate จาก First Derivative ที่จุด โดยใชวิธีที่กลาวมาในบทกอน วิธีนี้เราเรียก Euler’s Method จะเปนวิธีแรกที่เราจะศึกษา ix

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

วิธีอื่นๆที่เราจะกลาวตอไปนั้น จะแตกตางที่การปรับปรุงการหาคา Slope ใหดียิ่งขึ้น ไดแก Heun’s Method และ Polygon Method ในสวนสุดทายของบท เราจะกลาวถึงวิธีที่นิยมใชกันมากที่สุด คือ Runge-Kutta Method

PART III : NUMERICAL MTD :: CHAPTER 10: Ordinary Differential Equations 160

10.3 Euler’s Method (Euler’s Cauchy หรือ Point-Slope Method) คา First Derivative ที่ไดจากการ Estimate โดยตรงของ Slope ที่จดุ จะหาไดจาก ix

),( ii yxf=φ โดยที่ คือคาของสมการ Differential Equation ที่จุด และ ดังนั้นสมการของ Solution จะเปน ),( ii yxf ix iy

hyxfyy iiii ),(1 +=+

สมการที่เขียนขางบนรูจักกันในนามของ Euler’s Method (หรือ Euler-Cauchy Method หรือ Point-Slope Method) โดยที่คา คาใหมหาไดจากการทํานายโดยใชคา Slope จากคาเกา (ดูรูป) ทําการ Extrapolate ดวย Step Size เทากับ

yh

Predicted

TrueError

h

ixx

y

1+ix

รูปท่ี 10.3 แสดงวิธีการของ Euler’s Method

Example 10.1 จงใช Euler’s Method ทําการหาคา Integrate ของสมการ 5.820122),( 23 +−+−= xxxyxf

จากจุด ถึงจุด โดยใช Step Size 0.5 ดวยคา Initial Condition 0=x 4=x 1,0 == yx หรือ 1)0( =y ซึ่งคําตอบที่แทจริงคือสมการที่แสดงกอนหนานี้ คือ 15.81045.0 234 ++−+−= xxxxy

คําตอบ จาก เราได 1)0( =y 25.55.0)1,0()0()5.0( =+= fyy ซึ่ง Solution ที่แทจริงของจุดนี้คือ

21875.31)5.0(5.8)5.0(10)5.0(4)5.0(5.0)5.0( 234 =++−+−=y

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

เราได %1.63,03125.225.521875.3 −=−=−= tt eE

PART III : NUMERICAL MTD :: CHAPTER 10: Ordinary Differential Equations 161

จาก เราได 25.5)5.0( =y 875.55.0)25.5,5.0()5.0()0.1( =+= fyy True Solution และ 0.3)1( =y %8.95−=te จากนั้นเราคํานวณตอที่ ผลลัพธที่ไดแสดงดังตารางขางลาง ซึ่ง

จะสังเกตไดวา แมวา Solution ที่ไดจะมีลักษณะการเปลี่ยนแปลงตาม True Solution แต Error ที่เกิด คอนขางจะมาก )4(),5.3(),3(),5.2(),2(),5.1( yyyyyy

ตารางที่ 10.1 แสดงผลการคํานวณของตัวอยางที่ 10.1

Relative Error, ,%te

x truey Eulery Global Local(ดูตอขางลาง) 0.0 1.0000 1.0000 0.0000 0.0000 0.5 3.2188 5.2500 -63.1068 -63.1068 1.0 3.0000 5.8750 -95.8333 -28.1250 1.5 2.2188 5.1250 -130.9859 -1.4085 2.0 2.0000 4.5000 -125.0000 20.3125 2.5 2.7188 4.7500 -74.7126 17.2414 3.0 4.0000 5.8750 -46.8750 3.9063 3.5 4.7188 7.1250 -50.9934 -11.2583 4.0 3.0000 7.0000 -133.3333 -53.1250

Truncation Error ที่เกิดจาก Euler’s Method ที่แสดงในตารางขางบนจะแบงเปนสองสวน สวนแรกคือ Local

Truncation Error เปน Error ที่เกิดจากการคํานวณในหนึ่ง Step (เริ่มจาก Initial Condition ที่ถูกตองที่จุดกอนหนานี้ และทําการ Estimate จุดตอไป) สวนที่สองคือ Propagated Truncation Error เปนผลจาก Error ที่เกิดขึ้นในการคํานวณของ Step กอนหนา ผลรวมของทั้งสอง Error จะเปน Global Truncation Error ที่แสดงในตาราง (ดูการคํานวณจาก Source Code ทายบท ถายังไมเขาใจ)

ในการวิเคราะหคา Truncation Error นั้น สามารถทําไดจาก Taylor Series Expansion ซึ่งไดกลาวในบทกอน โดยเมื่อ ),(/' yxfdxdyy == เราสามารถเขียน

nn

nii

iii Rhnyhyhyyy +++++=+ !2

''')(

21 L

ในวิธีของ Euler’s Method นั้น เราทําการ Estimate จนถึงเทอม hyhyxf '),( = ดังนั้นคาของ Error จะอยูใน และเราสามารถแสดงไดวาคา Estimate Local Truncation Error จะอยูในรูป )( 2hO

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

)(2

),(' 22 hOhyxfEa ==

PART III : NUMERICAL MTD :: CHAPTER 10: Ordinary Differential Equations 162

0 0.5 1 1.5 2 2.5 3 3.5 41

2

3

4

5

6

7

8

True

h=0.125

h=0.25

h=0.5

รูปท่ี 10.4 แสดง Error ท่ีลดลง Euler’s Method เม่ือลด Step Size

คา Truncation Error ที่เกิดสามารถลดลงไดโดยการลดขนาดของ Step Size ซึ่งถาเราลดขนาด Step Size ลงครึ่งหนึ่ง คาของ Local และ Global Error จะเหลือประมาณหนึ่งในสี่ รูปขางบนแสดง Solution ที่ไดจากการลดของ Step Size ลง อยางไรก็ตามแมวาเราจะลด Step ลงถึง 001.0=h ซึ่งเราตองใชการคํานวณทั้งหมด 4000 Step จาก

ถึง ในกรณีนี้ คาของ Error ยังคงไมไดถึง 0.1% ดังนั้นวิธีการของ Euler’s Method จะใชการคํานวณที่มากเกินไปถาเราตองการ Error ตํ่าๆ และเราจําเปนตองหาวิธีอื่นที่ดีกวา อยางไรก็ตาม วิธีของ Euler’s Method นั้นงาย และนาสนใจสําหรับการหาคาประมาณของ Solution ที่ตองการ

0=x 4=x

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

รูปขางลางไดจากการ Run ของ Euler Method เมื่อลดขนาดของ Step Size ลง (เลขที่แสดงคือคา log ฐาน 10 ของจํานวน Step ที่ใช เริ่มตั้งแต 8 Step )5.0( =h จนถึง 4000 Step )01.0( =h ) ของปญหาใน Example 10.1 จาก

ถึง สังเกตวา คา Average Global Error ลดจาก 88.09% ลงเปน 0.135% ซึ่งนับวายังสูงสําหรับการคํานวณที่ตองใชถึง 4000 Step

0=x 4=x

PART III : NUMERICAL MTD :: CHAPTER 10: Ordinary Differential Equations 163

0.5 1 1.5 2 2.5 3 3.5 4-1

-0.5

0

0.5

1

1.5

2

log10 of No. of Steps

log1

0 A

vera

ge R

elat

ive G

loba

l Erro

r,%

8 4000

0.135%

80.09%

รูปท่ี 10.5 แสดง Plot ของ Error กับจํานวน Step ใน Euler’s Method

10.4 การปรับปรุงวิธีการของ Euler’s Method: Heun’s Method และ Polygon Method สวนใหญ Error ที่เกิดจาก Euler’s Method นั้นเปนผลมาจากการหา Derivative ในสวนตนของชวง และเปน

Derivative ที่จะใชตลอดชวงนั้น วิธีการงายๆที่จะแกไขความผิดพลาดที่เกิด คือการปรับการหาคา Derivative ซึ่งในสวนนี้จะกลาวสองวิธีงายๆที่ใชการปรับปรุงจากการพิจารณากราฟของ Function ซึ่งทั้งสองวิธีนี้ ความจริงแลวเปนวิธีที่อยูในเทคนิคการหา Solution ที่เรียก Runge-Kutta Methods อยางไรก็ตามรายละเอียดของ Runge-Kutta Methods นั้นจะขอกลาวในสวนหนา

10.4.1 Heun’s Method วิธีนี้จะพิจารณาคา Derivative สองคา คาแรกคือที่จุดเริ่มตนของชวง และคาที่สองคือคาที่จุดปลายของชวง และ

คา Derivative ทั้งสองจะถูกเฉลี่ย และนํามาใชสําหรับชวงนั้น ซึ่งวิธีนี้เราเรียก Heun’s Method จากที่กลาวใน Euler’s Method คา Slope ที่จุดเริ่มตนของ Interval จะเปน

),(' iii yxfy = และเรานํามาใชในการ Extrapolate หาคา 1+iy

hyxfyy iiii),(0

1+=

+

ซึ่งสมการนี้เราเรียก Predictor Equation สังเกตวาเราใช Notation ซึ่งเปน Solution ใน Euler’s Method 01+iy

ในการ Estimate คา Slope ที่ปลายของ Interval เราใชคา ทําการ Estimate และเราได 01+iy

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

),( 0111 +++ =′ iii yxfy

PART III : NUMERICAL MTD :: CHAPTER 10: Ordinary Differential Equations 164

เมื่อเรารวมคา Slope ทั้งสอง และหาคาเฉลี่ยของ Slope ในชวงนั้น เราจะได

2),(),(

2'

0111 +++ +

=′+′

= iiiiii yxfyxfyyy

ซึ่งคาดังกลาวจะถูกใชในการ Extrapolate จาก ไปยัง โดยใชสมการเสนตรง ดวยวิธีเดิมของ Euler’s Method iy 1+iy

hyxfyxfyy iiiiii 2

),(),( 011

1++

++

+=

และสมการขางบนเราเรียก Corrector Equation

Slope= ),( ii yxf

h

ixx

y

1+ix

h

ixx

y

1+ix

Slope= ),( 011 ++ ii yxf

Slope=2

),(),( 011 +++ iiii yxfyxf

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

รูปท่ี 10.6 แสดงวิธีการของ Heun’s Method

PART III : NUMERICAL MTD :: CHAPTER 10: Ordinary Differential Equations 165

Heun’s Method จัดวาเปนวิธีที่เรียก Predictor-Corrector Approach และยังเปน One-Step Method ซึ่งใน Class ของ Multistep Method จะใชหลักการนี้ทั้งนั้น อยางไรก็ตาม วิธีของ Multistep Method จะไมกลาวในชั้นนี้ ดังนั้น Heun’s Method จะเปนวิธีเดียวของ Predictor-Corrector ที่เราจะกลาวถึง และสรุปไดดังนี้

Predictor: hyxfyy iiii),(0

1+=

+

Corrector: hyxfyxf

yy iiiiii 2

),(),( 011

1++

+

++=

สมการของ Corrector สามารถทําเปน Iteration ได โดยนําผลที่ไดกลับมาปอนสมการเดิมเพื่อที่จะใด Solution ที่ดีขึ้น ดังนี้

Iterative Corrector: hyxfyxfyyjiiii

iji 2

),(),( 111

1

−++

++

+=

โดยที่ และ เปนคาของ Corrector ที่ Iteration jiy 1+

11−+jiy j และ 1−j ตามลําดับ และดังนั้นเราสามารถกําหนด

Termination Criteria ของแตละ Step โดยใช Error Estimate ดังนี้

Estimate Error: %1001

111

ji

ji

ji

a yyy

e+

−++ −

=

คาของ Error ที่เกิดใน Heun’s Method จะดีกวา Euler’s Method โดยมีคา Local Error อยูที่ และคา Global Error อยูที่ ในขณะที่ Global Truncation Error ของ Euler’s Method อยูที่

)( 3hO)( 2hO )(hO

Example 10.2 จงใช Heun’s Method ทําการหาคา Integrate ของสมการ จาก ถึง โดยใชขนาดของ Step Size = 1 ตา Initial Condition คือ

yey x 5.04' 8.0 −= 0=x 42)0( =f

คําตอบ คําตอบที่แทจริงของสมการ(ผูสนใจการแกสมการสามารถศึกษาไดในวิชา Calculus(Differential Equation)) คือ

xxx eeey 5.05.08.0 2)(3.1

4 −− +−=

การคํานวณใน Step ท่ี 1 : Iteration ท่ี 1 คาของ Predictor ที่ หาไดจาก ซึ่งคือคาที่ไดจาก Euler’s

Method 1=x 51)]2(5.04[2 00

1 =×−+= ey

คา Slope ที่ คํานวณไดเทากับ ),( 00 yx 3)2(5.04' 00 =−= ey

โดยที่ คา Estimate 40216371.6)5(5.04),(' )1(8.00111 =−−== eyxfy

และดังนั้นคาเฉลี่ยของ Slope จะเปน 70108186.42

40216371.63=

+

ทายสุด สมการ Corrector สามารถคํานวณไดเปน 70108186.6)1)(70108186.4(211 =+=y

เมื่อเทียบกับคําตอบที่แทจริงคือ เราได 19463138.6 %18.8−=te

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

การคํานวณใน Step ท่ี 1 : Iteration ท่ี 2 และ 3 เราทําดังนี้

PART III : NUMERICAL MTD :: CHAPTER 10: Ordinary Differential Equations 166

เราใชคา ปอนกลับในสมการเดิม และได 11y

%31.1;27581139.612

)]070108186.6(5.043[2)1(8.0

21 ==×

−++= te

ey

%03.3;38212901.612

)]27581139.6(5.043[2)1(8.0

31 ==×

−++= te

ey

สังเกตวาใน Iteration ที่ 3 Error จะเพิ่มขึ้น นั่นหมายความวาขบวนการ Iterative อาจจะไม Converge สําหรับ True Error แตอยางไรก็ตาม มันจะ Converge สําหรับ Estimate Error ตารางขางลางแสดงผลการ Run แตละ Step เปรียบเทียบการ Run 1 Iteration และ 15 Iteration สําหรับแตละ Step และภาคผนวกแสดง Program MATLAB สําหรับคํานวณ

ตารางที่ 10.2 แสดงผลการคํานวณของ Heun’s Method ในตัวอยางที่ 10.2

Result 0f 1 and 15 Iterations and Error

1 Iteration 15 Iterations

x truey heuny %,te heuny %,te

0 2.00000000000000 2.00000000000000 0.00 2.00000000000000 0.00

1 6.19463137720937 6.70108185698494 8.17563546458700 6.36086548685535 2.68351899448886

2 14.84392190764649 16.31978193789828 9.94252084748262 15.30223665973187 3.08755836184566

3 33.67717176796817 37.19924889686475 10.45835188644487 34.74327609067792 3.16565871402471

4 75.33896260915857 83.33776733540077 10.61708901904872 77.73509619396161 3.18047063805967

10.4.2 The Improved Polygon Method (Modified Euler’s Method) วิธีการงายๆอีกวิธีหนึ่งที่สามารถนํามาปรับปรุงวิธีการของ Euler’s Method เดิม คือการใชวิธีของ Euler’s

Method แตเราทําการ Predict คาของ ที่จุดกึ่งกลางของ Interval แทนที่จะเปนจุดเริ่มตน ดังแสดงในรูป ซึ่งวิธีการน้ี เราเรียก Improved Polygon หรือ Modified Euler Method

y

จากรูปที่ 10.7 เราใช Euler’s Method ทําการ Predict คาของ ที่จุดกึ่งกลางของ Interval ไดเปน y

2

),(2/1hyxfyy iiii +=+

ซึ่งคาที่ Predict ไดจะถูกใชในการ Estimate คา Slope ที่จุดกึ่งกลางดังนี้ ),( 2/12/12/1 +++ =′ iii yxfy

จากนั้นคา Slope ที่ไดจะถูกนํามาใชในการ Extrapolate แบบ Linear จาก ไปยัง ดวย Euler’s Method ix 1+ix

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

hyxfyy iiii ),( 2/12/11 +++ +=

PART III : NUMERICAL MTD :: CHAPTER 10: Ordinary Differential Equations 167

คา Local Error และ Global Error ของ Improved Polygon Method พบวาอยูใน และ ตามลําดับ

)( 3hO )( 2hO

Slope= ),( ii yxf

2/h

ixx

y

2/1+ix

Slope= ),( 2/12/1 ++ ii yxf

h

ixx

y

1+ix

Slope= ),( 2/12/1 ++ ii yxf

รูปท่ี 10.7 แสดงวิธีการของ Polygon Method

10.5 Runge-Kutta Method กรรมวิธีของ Runge-Kutta (RK Method) เปนวิธีที่ใหความถูกตองโดยไมตองมีการคํานวณคา Derivative ใน

ระดับที่สูงๆ ซึ่งวิธีนี้สามารถเขียนเปนรูปแบบทั่วไปไดดังนี้

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

hhyxyy iiii ),,(1 φ+=+

PART III : NUMERICAL MTD :: CHAPTER 10: Ordinary Differential Equations 168

โดยที่ ),,( hyx iiφ เรียก Increment Function ซึ่งเปนคาที่แสดงถึงคา Slope ของ Function โดย Increment Function นี้สามารถเขียนไดในรูปของ kakaka n+++= L2211φ คา เปนคาคงที่ และคา กําหนดดังนี้ ia ik

),(

),(),(

),(

11,122,111,11

22212123

11112

1

hkqhkqhkqyhpxfk

hkqhkqyhpxfkhkqyhpxfk

yxfk

nnnnninin

ii

ii

ii

−−−−−− +++++=

+++=++=

=

L

M

สังเกตวาคา มีความสัมพันธกันแบบ Recurrence Relation ซึ่งเปนผลใหวิธีการของ RK มีประสิทธิภาพเมื่อนํามาเขียนเปนโปรแกรม

ik

ดวยการเปลี่ยนวิธีการหาเทอมตางๆตามสมการขางบน จากคา เราสามารถเปลี่ยนแปลงกรรมวิธีของ Runge-Kutta ไดหลายแบบ สังเกตวาในกรณีของ First-Order Runge-Kutta ดวยคา

n1=n ที่จริงแลวก็คือ Euler’s Method ใน

การนํา Runge-Kutta Method ไปใช เมื่อเราเลือกคาของ (หรือ Order ในกรณีที่มี Order ตํ่าๆ) คาของ และ สามารถหาไดโดยตั้ง

n ji pa ,

lkq , hhyxyy iiii ),,(1 φ+=+ เทากับเทอมใน Taylor Series Expansion เราจะเริ่มจากการศึกษา Second-Order Runge-Kutta Method กอน ซึ่งในกรณีนี้เราจะไดคําตอบที่แทจริงถา

คําตอบของสมการอยูในรูปสมการ Quadratic และในวิธีนี้จะมีคา Local Truncation Error อยูที่ และ Global Truncation Error อยูที่ ตอจากนั้น เราจะศึกษา Third-Order และ Forth-Order ซึ่งมีคา Global Truncation Error อยูที่ และ ตามลําดับ

)( 3hO)( 2hO

)( 3hO )( 4hO

10.5.1 Second-Order Runge-Kutta Methods สมการของ Second-Order RK จะอยูในรูป

hkakayy ii )( 22111 ++=+ โดยที่ ),(1 ii yxfk =

),( 11112 hkqyhpxfk ii ++= คา Constant ตางๆ สามารถหาไดจากการตั้งสมการใหเทากับ Taylor Series Expansion

2

),('),()(2

22111hyxfhyxfyhkakayy iiiiiii ++=++=+

โดยที่คา สามารถหาไดจากกฎ Chain-Rule ของการหาคา Derivative ),(' ii yxf

dxdy

dydf

dxdfyxf ii +=),('

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

และเราได

PART III : NUMERICAL MTD :: CHAPTER 10: Ordinary Differential Equations 169

2

),()(2

22111h

dxdy

dydf

dxdfhyxfyhkakayy iiiii ⎟⎟

⎞⎜⎜⎝

⎛+++=++=+

จากนั้น เมื่อเราใช Taylor Series Expansion สําหรับ Two-Variable Function ซึ่งมีรูปแบบดังนี้

L+++=++dydgs

dxdgryxgsyrxg ),(),(

กับสมการของ เราจะได 2k

)(),(),( 2111111112 hOdydfhkq

dxdfhpyxfhkqyhpxfk iiii +++=++=

และเมื่อนําไปแทนคาในสมการ Second-Order RK และจัดเรียงเทอมที่เหมือนกัน เราได

)(),()],(),([ 3211212211 hOh

dydfyxfqa

dxdfpahyxfayxfayy iiiiiiii +⎥

⎤⎢⎣

⎡++++=+

เมื่อเปรียบเทียบกับสมการของ Taylor Series Expansion ของ และทําการ Equate Term เราสรุปไดวา 1+iy

2/12/11

112

12

21

===+

qapaaa

ชุดของสมการขางบนประกอบดวยสามสมการ แตมี 4 Unknown และจะไมมีคําตอบอันเดียว การหาคําตอบสามารถทําไดโดยเลือกคา Constant อันหนึ่งกอน จากนั้นใชสามสมการขางบนหาคา Constant ที่เหลือ ดังนั้น Second-Order RK Method จะมีหลาย Variation และที่สําคัญมีดังนี้

1. Heun’s Method with a Single Corrector: ถาเราสมมุติคา 2/12 =a เราแกสมการได เมื่อนําไปแทนคาในสมการของ RK เราได 1,2/1 1111 === qpa

),(),(

21

21

12

1

211

hkyhxfkyxfk

hkkyy

ii

ii

ii

++==

⎟⎠⎞

⎜⎝⎛ ++=+

ซึ่ง ที่จริงแลวคือคา Slope ที่สวนตนของ Interval และ คือคา Slope ที่สวนทายของ Interval และสมการดังกลาวก็คือ Heun’s Method ที่มี 1 Iteration

1k 2k

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

2. The Improved Polygon Method: ถาเราสมมุติคา 12 =a เราแกสมการได เมื่อนําไปแทนคาในสมการของ RK เราได

2/1,0 1111 === qpa

),(),(

121

21

2

1

21

hkyhxfkyxfkhkyy

ii

ii

ii

++=

=+=+

และสมการดังกลาวก็คือ Improved Polygon Method

PART III : NUMERICAL MTD :: CHAPTER 10: Ordinary Differential Equations 170

3. Ralston’s Method: ถาเราสมมุติคา 3/22 =a เราแกสมการได 4/3,3/1 1111 === qpa เมื่อนําไปแทนคาในสมการของ RK เราได

),(),(

32

31

143

43

2

1

211

hkyhxfkyxfk

hkkyy

ii

ii

ii

++=

=

⎟⎠⎞

⎜⎝⎛ ++=+

สมการนี้รูจักกันในนาม Ralston’s Method ซึ่งจะใหคา Truncation Error ของ Second-Order RK ที่เปน Minimum Bound

Example 10.3 จงใช Second-Order RK Methods ทั้งสามวิธี เปรียบเทียบการหาคา Integrate ของสมการ 5.820122),(' 23 +−+−== xxxyxfy

จาก ถึง โดยใชขนาดของ Step Size = คา Initial Condition คือ 0=x 4 5.0 1)0( =f

Answer: คําตอบที่แทจริงคือ(จากตัวอยางที่ 10.1) 15.81045.0 234 ++−+−= xxxxy

คาคําตอบของทั้งสามวิธี และคา Error สรุปไดในตารางขางลาง สําหรับ Source Code ของ MATLAB ดูไดจากภาคผนวก

ตารางที่ 10.3 แสดงผลการคํานวณของ ตัวอยางที่ 10.3

Single Corrector Heun Improved Polygon Second-Order Ralston x truey y ,%te y ,%te y ,%te

0.0 1.00000000000000 1.00000000000000 0 1.00000000000000 0 1.00000000000000 0 0.5 3.21875000000000 3.21875000000000 6.8 3.10937500000000 3.4 3.27734375000000 1.8 1.0 3.00000000000000 3.00000000000000 12.5 2.81250000000000 6.3 3.10156250000000 3.4 1.5 2.21875000000000 2.21875000000000 21.1 1.98437500000000 10.6 2.34765625000000 5.8 2.0 2.00000000000000 2.00000000000000 25.0 1.75000000000000 12.5 2.14062500000000 7.0 2.5 2.71875000000000 2.71875000000000 17.2 2.48437500000000 8.6 2.85546875000000 5.0 3.0 4.00000000000000 4.00000000000000 9.4 3.81250000000000 4.7 4.11718750000000 2.9 3.5 4.71875000000000 4.71875000000000 4.6 4.60937500000000 2.3 4.80078125000000 1.7 4.0 3.00000000000000 3.00000000000000 0 3.00000000000000 0 3.03125000000000 1.0

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

รูปขางลางแสดงการ Plot เปรียบเทียบคําตอบที่ไดจากแตละวิธี

PART III : NUMERICAL MTD :: CHAPTER 10: Ordinary Differential Equations 171

0 0.5 1 1.5 2 2.5 3 3.5 41

2

3

4

5

6

7

8

Euler’s Method

Ralston Method

Improved Polygon Method

Heun’s Method

True Solution

รูปท่ี 10.8 เปรียบเทียบผลการคํานวณหา Solution ดวยวิธีตางๆ

10.5.2 Third-Order Runge-Kutta Methods ในกรณีที่ เราจะได Third-Order Runge-Kutta Methods และผลลัพธจะประกอบไปดวยการหา 8

Unknown จาก 6 สมการ ดังนั้นเราจะตองกําหนดคาของสอง Unknown และหาคาคา Constant ที่เหลืออีก 6 ตัว และจะมีคําตอบไดมากมาย คําตอบหนึ่งที่นิยมใชกันไดแกชุดสมการตอไปนี้

3=n

[ ]hkkkyy ii )4( 32161

1 +++=+

)2,(),(

),(

213

121

21

2

1

hkhkyhxfkhkyhxfk

yxfk

ii

ii

ii

+−+=

++=

=

สังเกตวา ถา Function ของสมการประกอบดวยคา x อยางเดียว ชุดสมการขางบนก็คือ Simson 1/3 Rule คา Local Truncation Error และ Global Truncation Error ของ Third-Order Runge-Kutta Method อยูใน และ ตามลําดับ ในกรณีที่สมการเปน Cubic Polynomial เราได Solution เปน Quartic ดังนั้นคําตอบของ Third-Order จะใหคาที่แทจริง

)( 4hO)( 3hO

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

Example 10.4 จงใช Third-Order RK Method หา Solution ของสมการ

PART III : NUMERICAL MTD :: CHAPTER 10: Ordinary Differential Equations 172

yedxdy x 5.04 8.0 −=

จากคา จนถึง โดยใช Step Size = 1 กําหนดให 0=x 1=x 2)0( =y คําตอบ คําตอบไดจากการ Run MATLAB Program ทายบทนี้

» [x,y,e]=o3rk(0,1,1,2) x = 0 1 y = 2.00000000000000 2.00000000000000 6.19463137720937 6.17567668094419 e = 0 0.30598586277341

10.5.3 Fourth-Order Runge-Kutta Methods เชนเดียวกับที่กลาวในหัวขอกอน Fourth-Order Runge-Kutta Method จะมี Variation ที่ไมมีที่สิ้นสดุ อยางไรก็

ตาม Fourth-Order RK Method เปนวิธีที่นิยมมากที่สุด ในที่นี้จะกลาวกรรมวิธีที่เรียก Classical Fourth-Order Runge-Kutta Method ซึ่งเปนชุดของสมการตอไปน้ี

[ ]hkkkkyy ii )22( 432161

1 ++++=+

),(),(),(

),(

34

221

21

3

121

21

2

1

hkyhxfkhkyhxfkhkyhxfk

yxfk

ii

ii

ii

ii

++=

++=

++=

=

Example 10.5 จงใช Fourth-Order RK Method หา Solution ของสมการ 5.820122),(' 23 +−+−== xxxyxfy

จากคา จนถึง โดยใช Step Size = 0.5 กําหนดให 0=x 1=x 1)0( =y คําตอบ คําตอบไดจากการ Run MATLAB Program ทายบทนี้

x = 0 0.50000000000000 1.00000000000000 y = 1.00000000000000 1.00000000000000 3.21875000000000 3.21875000000000 3.00000000000000 3.00000000000000 e = 0 0 0

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

สังเกตวาในกรณีนี้เราจะไดคําตอบที่แทจริง เนื่องจาก Solution เปน Quartic และกรรมวิธีของ Fourth-Order RK จะใหคําตอบที่แทจริงของ Fourth-Order Polynomial

PART III : NUMERICAL MTD :: CHAPTER 10: Ordinary Differential Equations 173

10.5.4 Higher-Order Runge-Kutta Methods and System of ODEs ถาตองการคําตอบที่ถูกตองกวานี้ เราสามารถใช Order ที่สูงกวาของ Runge-Kutta Method ยกตัวอยางเชนใน

กรณีของ Fifth-Order Method ที่รูจักกันในนามของ Butcher’s Method ประกอบดวยชุดของสมการดังนี้ [ ]hkkkkkyy ii )73212327( 6543190

11 +++++=+

),(),(

),(),(

),(),(

578

4712

3712

272

173

6

4169

1163

43

5

3221

21

4

281

181

41

3

141

41

2

1

hkhkhkhkhkyhxfkhkhkyhxfk

hkhkyhxfkhkhkyhxfk

hkyhxfkyxfk

ii

ii

ii

ii

ii

ii

+−++−+=

+++=

+−+=

+++=

++=

=

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

ปญหาในทางวิศวกรรม บางครั้งประกอบดวยชุดของสมการ Differential Equation ซึ่งในกรณีนี้เราจําเปนตองแกสมการหลายๆสมการไปพรอมๆกัน ซึ่งสมการเหลานี้สามารถเขียนไดอยูในรูป

),,,,(

),,,,(

),,,,(

21

2122

2111

nnn

n

n

yyyxfdxdy

yyyxfdxdy

yyyxfdxdy

K

M

K

K

=

=

=

ในกรณีเชนนี้ เราสามารถนําวิธีใดๆก็ไดที่กลาวถึงมาดัดแปลงเพื่อแกชุดของสมการดังกลาว ซึ่งในกรณีนี้เราตองการ Initial Condition ทั้งหมด ตัว กลาวคือ และแกชุดของสมการทุกๆสมการในแตละ Step ซึ่งรายละเอียดจะไมกลาวถึง

n )(,),(),( 21 inii xyxyxy K

10.6 สรุปของ One-Step Method รูปขางลางแสดงการเปรียบเทียบในแตละวิธีที่กลาวมาขางตนสําหรับการแกสมการ

ซึ่ง Plot ระหวางคา Absolute ของ Percent Relative Error กับจํานวนของการคํานวณ(Effort) โดยคา Effort ในที่นี้ใหนิยามวาเปนจํานวนครั้งของการหาคาของ Function ที่ตองใชเพื่อใหไดผลลัพธ และแสดงเปนสมการไดดังนี้

yedxdy x 5.04/ 8.0 −=

habnEffort f

−=

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

โดยที่คา หมายถึงจํานวนครั้งของการหาคาของ Function ที่ใชใน Runge-Kutta Method และในกรณีที่ คานี้คือคาของ Order ของวิธีที่ใช สวนคา

fn

4≤n hab /)( − คือจํานวนชวงที่ตองคํานวณ ซึ่งคา Effort จะสะทอนถึงเวลาที่ตองใชในการคํานวณ

PART III : NUMERICAL MTD :: CHAPTER 10: Ordinary Differential Equations 174

รูปท่ี 10.9 เปรียบวิธีการตางๆของ Runge-Kutta Method และการคํานวณ (Chapra and Canale, 1988)

10.7 Homework Chapter X 1. จงใช Euler’s Method แกปญหา Initial-Value Problem ของสมการ ขางลางในชวง ถึง

โดยใชขนาดของ Step เทากับ 0.5 และเปรียบเทียบกับขนาดของ Step 0.25 กําหนดให 0=x 2=x

1)0( =y

yyxdxdy

−= 2

2. ทําการแกปญหาในขอ 1 ใหมดวยวิธีของ Heun’s Method โดยใชการทํา Interation ของ Corrector จนได %1=se

3. ทําการแกปญหาในขอ 1 ใหม โดยใช Ralston’s Method 4. จากสมการ Differential Equation ขางลาง จงใช Third-Order Runge-Kutta Method แกสมการ

ในชวง 0=x ถึง โดยใชขนาดของ Step เทากับ 0.5 และเปรียบเทียบกับขนาดของ Step 0.25 2=x

1)0(, == yyxdxdy

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

5. ทําการแกปญหาในขอ 4 ใหม โดยใช Fourth-Order Runge-Kutta Method

PART III : NUMERICAL MTD :: CHAPTER 10: Ordinary Differential Equations 175

10.8 MATLAB Source Code 10.8.1 Euler’s Method สําหรับ Example 10.1 function [xs,ys,yt,et,el]=euler1(xl,xh,h,xi,yi) % function [xs,ys,yt,et,el]=euler1(xl,xh,h,xi,yi) % Calculate Solution of ODE in Ex 10.1 % using Euler's method of equation % dy/dx=-2x^3+12x^2-20x+8.5 % Soln. y=-.5x^4+4x^3-10x^2+8.5x+1 % xl and xh is lower and upper limit od soln % h = step size, xi,yi are initial conditions n=(xh-xl)/h +1; xs=zeros(n,1); ys=zeros(n,1); yt=zeros(n,1); et=zeros(n,1); el=zeros(n,1); xs(1)=xi; ys(1)=yi; yt(1)=yi; for i=2:n fxy=-2*xs(i-1)^3+12*xs(i-1)^2-20*xs(i-1)+8.5; xs(i)=xi+(i-1)*h; ys(i)=ys(i-1)+fxy*h; yt(i)=-.5*xs(i)^4+4*xs(i)^3-10*xs(i)^2+8.5*xs(i)+1; et(i) = (yt(i)-ys(i))*100/yt(i); yl=yt(i-1)+fxy*h; el(i) = (yt(i)-yl)*100/yt(i); end

10.8.2 Heun’s Method สําหรับ Example 10.2 function [y,et]=heun(xl,xh,step,it,xi,yi) % function [y,et]=heun(xl,xh,step,it,xi,yi) % Calculate solution of differential equation using % Heun's Method of Equation y'=4e^0.8x-0.5y % xl, xh are lower limit and upper limit % step is step size, it is max iteration required % xi, yi are initial conditions n=(xh-xl)/step; y = zeros(n,it); et = zeros(n,it); yp0=4*exp(0.8*xi)-0.5*yi y01=yi+yp0*step for i=1:n x=xi+step*i yp1=4*exp(0.8*x)-0.5*y01 yt=(4/1.3)*(exp(0.8*x)-exp(-0.5*x))+2*exp(-0.5*x) for j=1:it y(i,j)=yi+(yp0+yp1)/2; et(i,j)=abs((yt-y(i,j))/yt)*100; yp1=4*exp(0.8*x)-0.5*y(i,j); end yi=y(i,it); y01=yi+(4*exp(0.8*x)-0.5*yi)*step; yp0=4*exp(0.8*x)-0.5*yi; end

10.8.3 Second-Order Runge-Kutta Method สําหรับ Example 10.3

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

function [x,y,e]=o2rk(xl,xh,step)

PART III : NUMERICAL MTD :: CHAPTER 10: Ordinary Differential Equations 176

% function [x,y,e]=o2rk(xl,xh,step,xi,yi) % Calculate solution of differential equation using % Three Different Second-Order Runge-Kutta Method of % Equation f(x,y)=-2x^3+12x2-20x+8.5 % xl, xh are lower limit and upper limit % step is step size, % initial cond f(0)=1 % Real Solution is f(x)=-.5x^4+4x^3-10x^2+8.5x+1 n=(xh-xl)/step; y = zeros(n+1,4); e = zeros(n+1,3); x=zeros(n+1,1); for i=0:n x(i+1)=xl+step*i; end for i=1:4 y(1,i)=1; end for i=1:3 e(1,i)=0; end for i=2:n+1 y(i,1)=-0.5*x(i)^4+4*x(i)^3-10*x(i)^2+8.5*x(i)+1; end for i=1:n % Single Corrector Heun's Method xi=x(i); yi=y(i,2); k1=-2*xi^3+12*xi^2-20*xi+8.5; xi=xi+step; yi=yi+step*k1; k2=-2*xi^3+12*xi^2-20*xi+8.5; y(i+1,2)=y(i,2)+(k1+k2)*step/2; e(i+1,1)=abs((y(i+1,1)-y(i+1,2))/y(i+1,1))*100; % Improved Polygon Method xi=x(i); yi=y(i,2); k1=-2*xi^3+12*xi^2-20*xi+8.5; xi=xi+step/2; yi=yi+step*k1/2; k2=-2*xi^3+12*xi^2-20*xi+8.5; y(i+1,3)=y(i,3)+ k2*step; e(i+1,2)=abs((y(i+1,1)-y(i+1,3))/y(i+1,1))*100; % Ralston Method xi=x(i); yi=y(i,2); k1=-2*xi^3+12*xi^2-20*xi+8.5; xi=xi+3*step/4; yi=yi+3*step*k1/4; k2=-2*xi^3+12*xi^2-20*xi+8.5; y(i+1,4)=y(i,4)+(k1+2*k2)*step/3; e(i+1,3)=abs((y(i+1,1)-y(i+1,4))/y(i+1,1))*100; end

10.8.4 Third-Order Runge-Kutta Method สําหรับ Example 10.4 function [x,y,e]=o3rk(xl,xh,step,yi) % function [x,y,e]=o3rk(xl,xh,step,xi,yi) % Calculate solution of differential equation using % Three Different Third-Order Runge-Kutta Method of % Equation dy/dx=4e^0.8x-0.5y % xl, xh are lower limit and upper limit % step is step size,

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

% initial cond f(xl)=yi;

PART III : NUMERICAL MTD :: CHAPTER 10: Ordinary Differential Equations 177

% Real Solution is y=(4/1.3)(e^0.8x-e^-0.5x)+2e^-0.5x h=step; n=(xh-xl)/h; y = zeros(n+1,2); e = zeros(n+1,1); x=zeros(n+1,1); x(1)=xl; for i=1:n x(i+1)=xl+h*i; end y(1,1)=yi; y(1,2)=yi; e(1)=0; for i=2:n+1 y(i,1)=(4/1.3)*(exp(0.8*x(i))-exp(-0.5*x(i)))+2*exp(-0.5*x(i)); end for i=1:n % Single Corrector Heun's Method xx=x(i); yy=y(i,2); k1=4*exp(0.8*xx)-0.5*yy; xx=x(i)+0.5*h; yy=y(i,2)+0.5*h*k1; k2=4*exp(0.8*xx)-0.5*yy; xx=x(i)+h; yy=y(i,2)-h*k1+2*h*k2; k3=4*exp(0.8*xx)-0.5*yy; y(i+1,2)=y(i,2)+(k1+4*k2+k3)*h/6; e(i+1)=abs((y(i+1,1)-y(i+1,2))/y(i+1,1))*100; end

10.8.5 Fourth-Order Runge-Kutta Method สําหรับ Example 10.5 function [x,y,e]=o4rk(xl,xh,step) % function [x,y,e]=o4rk(xl,xh,step,xi,yi) % Calculate solution of differential equation using % Three Different Fourth-Order Runge-Kutta Method of % Equation f(x,y)=-2x^3+12x^2-20x+8.5 % xl, xh are lower limit and upper limit % step is step size, % initial cond f(0)=1; % Real Solution is f(x)=-.5x^4+4x^3-10x^2+8.5x+1 h=step; n=(xh-xl)/h; yi=1; y = zeros(n+1,2); e = zeros(n+1,1); x=zeros(n+1,1); x(1)=xl; for i=1:n x(i+1)=xl+h*i; end y(1,1)=yi; y(1,2)=yi; e(1)=0; for i=2:n+1 y(i,1)=-.5*x(i)^4+4*x(i)^3-10*x(i)^2+8.5*x(i)+1; end for i=1:n % Single Corrector Heun's Method xx=x(i); yy=y(i,2); k1=-2*xx^3+12*xx^2-20*xx+8.5;

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท

xx=x(i)+0.5*h;

PART III : NUMERICAL MTD :: CHAPTER 10: Ordinary Differential Equations 178

yy=y(i,2)+0.5*h*k1; k2=-2*xx^3+12*xx^2-20*xx+8.5; xx=x(i)+0.5*h; yy=y(i,2)+0.5*h*k2; k3=-2*xx^3+12*xx^2-20*xx+8.5; xx=x(i)+h; yy=y(i,2)+h*k3; k4=-2*xx^3+12*xx^2-20*xx+8.5; y(i+1,2)=y(i,2)+(k1+2*k2+2*k3+k4)*h/6; e(i+1)=abs((y(i+1,1)-y(i+1,2))/y(i+1,1))*100; end

CPE 332 Computer Engineering Math II ดร.อรรจน โกญจนาท