Upload
vanhanh
View
230
Download
6
Embed Size (px)
Citation preview
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 ดร.อรรจน โกญจนาท