+ All Categories
Home > Documents > 5 (Interpolation) [12sep2011-rev.2] - Pirun Web...

5 (Interpolation) [12sep2011-rev.2] - Pirun Web...

Date post: 06-Aug-2019
Category:
Upload: doandung
View: 213 times
Download: 0 times
Share this document with a friend
25
Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011 66 บทที5 การประมาณคาในชวง (Interpolation) [12sep2011-rev.2] เมื่อพิจารณาปญหาทางวิศวกรรม รวมถึงการทดลองทางวิทยาศาสตรตางๆ เราจะพบวาขอมูลที่เราได โดยสวนใหญ จะเปนจุดไมตอเนื่อง (discrete points) เราอาจมีความตองการที่จะวาดเสนกราฟที่ตอเนื่องผานจุด เหลานั้น (to fit a curve over those data points) เพื่อเปนการอธิบายขอมูล หรือตองการทราบคาที่อยูระหวางจุด ของขอมูลที่เรามี ในทางวิศวกรรมจะอาศัยเทคนิคที่เรียกวา curve fitting ซึ่งสามารถกระทําได 2 แนวทาง คือ 1. Interpolation 2. Regression (1) วิธีการ Interpolation เราจะลากเสนกราฟ (ซึ่งก็คือ ฟงกชั่น) ผานจุดทุกจุดของขอมูลที่มี (ดูรูปที5.1 ประกอบ) เทคนิคนี้เหมาะสําหรับจุดขอมูลที่เราทราบ หรือแนใจวามีความถูกตองสูง เชน ขอมูลที่ไดจากการ คํานวณที่ซับซอน หรือไดการทําการทดลองตามวิธีมาตรฐานดวยเครื่องมือวัดที่มีความถูกตองสูง (ซึ่งมีคาใชจาย ในการวัดสูงดวย ซึ่งเปนสาเหตุหนึ่ง ที่ไมสามารถวัดออกมาไดหลายๆ จุด) เปนตน ในบทที5 นีเราจะกลาวถึง เทคนิคการ Interpolation 3 วิธี ตอไปนี- Newton’s Interpolating Polynomials - Lagrange Interpolating Polynomials - Splines () fx รูปที5.1 กราฟของเทคนิคการ Interpolation (2) วิธีการ Regression เราจะสรางเสนกราฟ หรือลาก curve ใหผานจุดขอมูลที่เรามี ใหมากที่สุด โดยเสนกราฟ ที่สรางขึ้นจะเปนตัวแทนของขอมูล บอกวาขอมูลมีความสัมพันธกันแบบใดหรือมีแนวโนมจะเปลี่ยนแปลงไป อยางไรเมื่อปริมาณในแกนหนึ่งเพิ่มขึ้น เทคนิคนี้จะเหมาะกับ ขอมูลที่ไดจากการทดลอง (experimental data)
Transcript
Page 1: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

66

บทท่ี 5 การประมาณคาในชวง (Interpolation)

[12sep2011-rev.2] เม่ือพิจารณาปญหาทางวิศวกรรม รวมถึงการทดลองทางวิทยาศาสตรตางๆ เราจะพบวาขอมูลท่ีเราได

โดยสวนใหญ จะเปนจุดไมตอเนื่อง (discrete points) เราอาจมีความตองการที่จะวาดเสนกราฟที่ตอเน่ืองผานจุดเหลานั้น (to fit a curve over those data points) เพื่อเปนการอธิบายขอมูล หรือตองการทราบคาที่อยูระหวางจุดของขอมูลที่เรามี ในทางวิศวกรรมจะอาศัยเทคนิคที่เรียกวา curve fitting ซึ่งสามารถกระทําได 2 แนวทาง คือ

1. Interpolation 2. Regression

(1) วิธีการ Interpolation เราจะลากเสนกราฟ (ซึ่งก็คือ ฟงกช่ัน) ผานจุดทุกจุดของขอมูลที่มี (ดูรูปที่ 5.1 ประกอบ) เทคนิคน้ีเหมาะสําหรับจุดขอมูลที่เราทราบ หรือแนใจวามีความถูกตองสูง เชน ขอมูลที่ไดจากการคํานวณที่ซับซอน หรือไดการทําการทดลองตามวิธีมาตรฐานดวยเคร่ืองมือวัดที่มีความถูกตองสูง (ซึ่งมีคาใชจายในการวัดสูงดวย ซึ่งเปนสาเหตุหนึ่ง ท่ีไมสามารถวัดออกมาไดหลายๆ จุด) เปนตน ในบทที่ 5 นี้ เราจะกลาวถึงเทคนิคการ Interpolation 3 วิธี ตอไปน้ี

- Newton’s Interpolating Polynomials - Lagrange Interpolating Polynomials - Splines

( )f x

รูปที่ 5.1 กราฟของเทคนิคการ Interpolation

(2) วิธีการ Regression เราจะสรางเสนกราฟ หรือลาก curve ใหผานจุดขอมูลท่ีเรามี ใหมากที่สุด โดยเสนกราฟ ท่ีสรางข้ึนจะเปนตัวแทนของขอมูล บอกวาขอมูลมีความสัมพันธกันแบบใดหรือมีแนวโนมจะเปล่ียนแปลงไปอยางไรเมื่อปริมาณในแกนหนึ่งเพิ่มข้ึน เทคนิคน้ีจะเหมาะกับ ขอมูลท่ีไดจากการทดลอง (experimental data)

Page 2: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

67

โดยเฉพาะขอมูลจากการทดลองภาคสนาม(ซึ่งมีความแปรปรวนไดมาก) เราอาจรูจักเทคนิคน้ีในช่ือ Least Square Regression ซึ่งจะอธิบายโดยละเอียดในบทตอไป เทคนิค Least Square Regression น้ี ยังแบงยอยออกเปนหลายวิธี เชน

- Linear Regression - Nonlinear Regression - Polynomial Regression - Multiple Regression

( )f x

รูปที่ 5.2 กราฟของเทคนิค Least Square Regression

เราจะเริ่มตนในการศึกษาหัวขอ Interpolation หรือในภาษาไทย เรียกวา การประมาณคาในชวง โดยศึกษาหลักการของ Newton’s Interpolating Polynomials ซึง่เปนวิธีที่งายแกการทําความเขาใจ

5.1 วิธี Newton’s Interpolating Polynomials วิธีนี้ ยังเปนที่รูจักในอีกช่ือวา Newton’s divided-different interpolating polynomials หรือการประมาณคาในชวงโดยการใชผลตางจากการแบงยอยของนิวตัน หลักการในภาพรวมก็คือ การหาฟงกช่ัน f(x) ฟงกช่ันหนึ่งจากขอมูลตามตําแหนงตางๆ ทั้งหมดที่กําหนดมาให เชน ถาเราทราบเพียง 2 ตําแหนง คือ f(x0) และ f(x2) เราก็สามารถสรางฟงกช่ันของเสนตรงใหผานทั้งสองจุดนี้ได กําหนดให P1(x) เปน a function of a straight line หรือเปน polynomial function ท่ีมี order สูงสุด = 1

P1(x) = a⋅x + b (eqn. 5.1)

หากมีขอมูล 3 ตําแหนง คือ f(x0), f(x1) และ f(x2) เราก็สามารถสรางฟงกช่ันเสนโคงโพราโบลา [parabolic function, f2(x)] ใหผานทั้งสามจุดน้ีได กําหนดใหใชสัญลักษณ P2(x) คําอธิบายคือ เปน polynomial function ท่ีมี order สูงสุด = 2 (โปรดดูกราฟในรูปที่ 5.3 ประกอบ)

Page 3: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

68

P2(x) = a⋅x2 + b⋅x + c

= a0 + a1⋅x + a2⋅x2 (eqn. 5.2)

รูปที่ 5.3 กราฟเปรียบเทยีบการประมาณฟงกช่ัน f(x) ดวย ฟงกช่ันพหุนาม P1(x) และ P2(x)

เราเร่ิมจะเห็นแนวโนมของการใชฟงกช่ันพหุนาม (Polynomial function) ท่ี order ตางๆ กับจํานวนขอมูลหรือจํานวนจุดท่ีมี ฉะน้ันเราสามารถกลาวโดยทั่วไปไดวา nth-degree polynomial, Pn(x) ใชอธิบายขอมูลได n+1 จุด รูปทั่วไปของ Pn(x) เขียนไดดังสมการ (eqn. 5.3)

Pn(x) = a0 + a1⋅x + a2⋅x2 + … + an⋅xn (eqn. 5.3)

Note: Remember that polynomials always satisfy Uniqueness Theorem

“A polynomial of degree n passing exactly through n+1 discrete points is unique”

5.1.1 การประมาณคาในชวงแบบเชิงเสน (Linear Interpolation) จากกราฟรูปที่ 5.4 เรามีความสัมพันธระหวาง 2 ปริมาณ (x กับ y) ตามธรรมชาติ ที่เราตองการทราบ กําหนดใหเปน ฟงกช่ัน f(x) แตเนื่องจากขอมูลจากการศึกษา/ทดลองของเรามีจํากัด เราอาจทราบขอมูลเพียง 2 จุดเทานั้น คือ จุด (x0 , y0) กับ จุด (x1 , y1) จากความรูทางคณิตศาสตรท่ีเราเรียนมา เราสามารถสรางสมการเสนตรงที่ unique ผานจุดท้ังสองน้ี สมการเสนตรงที่เราหาได กําหนดใหเปนสมการ y = P1(x) ท่ีนิยามในชวง

Page 4: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

69

x X [x0 , x1] หากเราตองการทราบคาของฟงกช่ัน f(xi) ที่ตําแหนง x ใดๆ กําหนดใหเปน xi ดังรูปที่ 5.4 ในที่น่ีเราจะพบวาจุดตางๆ บนแกน x เรียงตัวกันดังนี้ คือ x0< xi < *

1x < x1 เนื่องจากเราไมทราบ f(x) ในธรรมชาติ เราเพียงแคมีจุดขอมูล 2 จุด และสมการเสนตรงที่ผาน 2 จุดนั้น เราจึงทําการประมาณฟงกช่ันจริงในธรรมชาติ ดวยฟงกช่ันหรือสมการเสนตรงที่เราสรางข้ึน f(x) y P1(x) ฉะน้ันคาของฟงกช่ันที่เราสนใจ f(xi) ก็จะประมาณไดดวย P1 (xi) นั่นเอง

สมการหลัก (key function) ที่ใชอธิบายกราฟเสนตรงผานจุด 2 จุด คือ สมการเสนตรง หรือสมการ Polynomial อันดับหน่ึง เขียนไดดังสมการ (eqn. 5.4)

f(x) y P1(x) = f (x0) + 01

01 )f(x-)f(xxx −

(x- x0) (eqn. 5.4)

รปูที่ 5.4 กราฟการประมาณคา f(xi) ดวยฟงกช่ันพหนุาม อนัดับหนึ่ง

จากรูปที่ 5.4 เราสนใจคาของฟงกช่ันที่ตําแหนง xi ซึ่งอยูระหวาง x0 กับ x1 เม่ือคํานวณหาสมการเสนตรง ตามสมการ (eqn. 5.4) จะไดสมการ P1(x) คาฟงกช่ันในตําแหนงที่เราสนใจจะมีคา f(xi) y P1(xi) หากกําหนดชวง ขอมูลที่เราศึกษาใหแคบลง จาก x1 เปน *

1x เม่ือเราคํานวณหาสมการเสนตรงในชวง x X [x0 , *1x ] จะได

สมการ *1P (x) และไดคาฟงกช่ันเทากับ f(xi) y *

1P (x )i ซึ่งจะเขาใกลคาจริง f(xi) มากกวา จะเห็นไดวาชวงขอมูล (interval) ท่ีมีความยาวตางกัน ก็จะมีผลตอความถูกตองในการคํานวณหรือประมาณคาฟงกช่ันที่ตําแหนง xi แตกตางกันไปดวย เราจะมาดู effect นี้ จากตัวอยางที่ 5.1

***

Page 5: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

70

ตัวอยาง 5.1 จงประมาณคา ln(2) = ? ดวยวิธี Linear Interpolation โดยเปรียบเทียบระหวางชวง (x0 , x1) = (1, 6) กับชวงที่แคบกวา (1, 4) กําหนดให f(x0) ln(1) = 0 f(x1) ln(4) = 1.3862944 f( *

1x ) ln(6) = 1.7917595

วิธีทํา -กรณี (x0 , x1) = (1, 6), คํานวณหาฟงกช่ัน P1(x) ของกรณีน้ี จากสมการ (eqn. 5.4) f(x) y P1(x) = f (1) +

16(1) f-(6) f

−(x-1)

= 0 + 5

0-1.7917595 (x-1) = 5

1.7917595 (x-1)

ln(2) y P1(2) = 5

1.7917595 (2-1) = 0.3583190

นําไปเปรียบเทียบกับคา ln(2) จริง, ln(2) = 0.69314718

คํานวณคา ε, ε = 0.69314718

0.69314718-0.3583190 = 0.4830 = 48.30%

-เปรียบเทียบกับกรณี (x0 , *1x ) = (1, 4) ซึ่งเปน interval ที่แคบกวา, หาฟงกช่ัน *

1P (x) f(x) y *

1P (x) = f (1) + 14

(1) f-(4) f−

(x-1)

= 0 + 3

0-1.3862944 (x-1) = 3

1.3862944 (x-1)

ln(2) y *1P (2) =

31.3862944 (2-1) = 0.46209812

นําไปเปรียบเทียบกับคา ln(2) จริง และคํานวณคา ε, ε =

0.693147180.69314718-0.46209812 = 0.3333 = 33.33%

In conclusion, เราสามารถสรุปไดวา ถาเราใชชวงที่แคบกวาในการคํานวณ/ประมาณคา f(xi) เราก็จะไดคาที่ใกลเคียงกับคาจริงมากย่ิงข้ึน

Ans.

Page 6: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

71

5.1.2 การประมาณคาในชวงกําลังสอง (Quadratic Interpolation) จากตัวอยาง 5.1 ถาเราทราบขอมูล เพิ่มข้ึนอีก 1 จุด (รวมเปนทั้งหมด 3 จุด คือ x0, x1, x2) เราสามารถเพิ่มความถูกตอง (accuracy) ในการประมาณคา f(xi) ดวยการใชฟงกช่ันพหุนาม อันดับ 2 หรือ P2(x) เราเรียกฟงกช่ันน้ีวา quadratic polynomial หรือ parabola (ดูรูปที่ 5.3 ประกอบ) เขียนในรูปทั่วไปไดดังสมการ (eqn. 5.5)

f(x) y P2(x) = b0 + b1⋅(x- x0) + b2⋅(x- x0)(x- x1) (eqn. 5.5) = b0 + b1x - b1x0 + b2x2+ b2x0x1 - b2x⋅x0 - b2x⋅x1

collecting similar terms, และจัดใหอยูในรูปฟอรม P2(x) = a0 + a1⋅x + a2⋅x2 โดยที่ a0 = b0 - b1x0 + b2x0x1 a1 = b1 - b2x0 - b2x1 a2 = b2

กลับไปพิจารณาสมการ (eqn. 5.5) ถาแทนคา x=x0 , จะไดวา P2(x0) = b0 b0 = f(x0) x=x1 และ b0 = f(x0), b1 =

01

01 )f(x-)f(xxx −

x=x2 , b0= f(x0) และ b1= 01

01 )f(x-)f(xxx −

, b2 = 02

01

01

12

12 )f(x-)f(x-)f(x-)f(x

xxxxxx

−−−

ตัวอยาง 5.2 จง fit ฟงกช่ันพหุนาม อันดับ 2 กับจุดขอมูลท้ัง 3 จุดที่ใชในตัวอยาง 5.1 แลวประมาณคา ln(2) = ? กําหนดให x0 = 1 f(x0) = 0 x1 = 4 f(x1) = 1.3862944 x2 = 6 f(x2) = 1.7917595

วิธีทํา -คํานวณ สปส. b0, b1 และ b2 จากสมการ (eqn. 5.6) b0 = f(x0) = 0 b1 =

140-1.3862944

− = 0.46209813

*** (eqn. 5.6)

***

Page 7: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

72

b2 = 16

0.46209813-4-61.3862944-1.7917595

− = - 0.051873116

นําคา b0, b1 และ b2 ท่ีได แทนลงในสมการ (eqn. 5.5) เพือ่หาฟงกช่ัน P2(x)

จะไดวา P2(x) = 0 + 0.46209813⋅(x-1) - 0.051873116⋅(x-1)(x-4) แทนคา x = 2, ln(2) ≈ P2(2) = … = 0.56584436

นําไปเปรียบเทียบกับคา ln(2) จริง และคํานวณคา ε,

ε = 0.69314718

0.69314718-0.56584436 = 18.40%

In conclusion, ถาเราใชฟงกช่ันพหุนามที่อันดับสูงข้ึน คา f(xi) ท่ีเราคํานวณ/ประมาณได ก็จะใกลเคียงกับคาจริงมากย่ิงข้ึน (คือมี error นอยลง) Ans.

5.1.3 การประมาณคาในชวงฟงกช่ันพหุนามในรูปทั่วไป (General Form of Newton’s Interpolating Polynomials)

หลังจากไดศึกษาหัวขอ 5.1.1 และ 5.1.2 แลว เราพอจะสรุปใจความของการนําฟงกช่ันพหุนาม มาประมาณคาในชวงของขอมูลแบบจุด (ไมตอเนื่อง) ท่ีเรามี โดยความคิดที่วา จุดขอมูลที่เรามีทุกๆ จุด (ในที่น่ีมี n+1 จุด) จะเสมือนมีเสนฟงกช่ันที่แทจริงในอุดมคติ, f(x) ลากผาน จากความรูในเรื่อง Newton’s Interpolating Polynomial เราจะสามารถ fit หรือประมาณคาฟงกช่ัน f(x) นั้น ดวยฟงกช่ันพหุนาม อันดับ n ใดๆ, Pn(x) – ดูกราฟในรูปที่ 5.5 ประกอบ - แลวจึงทําการคํานวณคาที่เราตองการทราบหรือสนใจ, f(xi) ≈ Pn(xi)

รูปที่ 5.5 กราฟฟงกช่ันพหนุาม อันดับ n, Pn(x)

Page 8: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

73

The nth-order polynomial is written as

fn(x) = b0 + b1⋅(x- x0) + b2⋅(x- x0)(x- x1) + … + bn⋅(x- x0)(x- x1)(x- x2)…(x- xn-1) (eqn. 5.7)

โดยที่คา b0 , b1 , b2, …, bn สามารถคํานวณไดจากสมการตอไปน้ี

b0 = f(x0) b1 = f [x1 , x0] b2 = f [x2 , x1 , x0] M bn = f [xn , xn-1 ,…, x1 , x0]

เราจะสังเกตเห็นฟงกช่ันตั้งแตบรรทัด b1 ข้ึนไป ใชวงเล็บกามปู (square bracket, ไมใชวงเล็บปกกา, bracket {-} และก็ไมใชวงเล็บธรรมดา หรือ parenthesis) นั่นก็คือ f […] เรียกวา bracket function หรือ “finite divided differences” หรือในภาษาไทย เรียกวา คาผลตางจากการแบงยอย ซึ่งสามารถคํานวณไดดังน้ี

f [xi , xj] = ji xx −

)f(x-)f(x ji

f [xi , xj , xk] = ki xx −

] x, [x f-] x, [x f kjji (eqn. 5.8)

M f [xn , xn-1 ,…, x1 , x0] =

0

02-n1-n11-nn ] x,..., x, [x f-] x,..., x, [x fxxn −

หากสังเกตวิธีการคํานวณคา finite divided differences ในกลุมสมการ (eqn. 5.8) จะพบวาสามารถทําการคํานวณแบบสืบเน่ืองไปทีละข้ันทีละตอน (recursive) ดังแสดงในตารางที่ 5.1

ตารางที่ 5.1 Graphical interpretation of the recursive nature of finite divided differences Order

i xi f(xi) First, b1 Second, b2 Third, b3 Fourth, b4 0 x0 f(x0) f [x1 , x0] f [x2 , x1 , x0] f [x3 , x2 , x1 , x0] f [x4 , x3 , x2 , x1 , x0] 1 x1 f(x1) f [x2 , x1] f [x3 , x2 , x1] f [x4 , x3 , x2 , x1] 2 x2 f(x2) f [x3 , x2] f [x4 , x3 , x2] 3 x3 f(x3) f [x4 , x3] 4 x4 f(x4)

Page 9: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

74

5.2 วิธี Lagrange Interpolating Polynomials วิธี Lagrange interpolating polynomials หรือในภาษาไทย คือ ฟงกช่ันพหุนามของลากรานจ เปนวิธีท่ีนิยมใชมากวิธีหน่ึง และจะเปนรากฐานในการศึกษาวิธีการคํานวณเชิงตัวเลขข้ันสูง เชน วิธีไฟไนตเอลิเมนต หลักการของวิธีนี้แทท่ีจริงก็ตั้งอยูบนพื้นฐานเดียวกันกับ Newton’s polynomials แตท่ีแตกตาง ก็คือ เราไมตองคํานวณคา divided differences สมการหลักโดยทั่วไปของวิธีน้ีคือสมการ (eqn. 5.9)

fn(x) = )()(0

i

n

ii xfxL∑

=

⋅ (eqn. 5.9)

โดยที่ Li(x) คือ ฟงกช่ันการประมาณคาในชวงของลากรานจ (Lagrange interpolation functions, ใหใชตัวยอวา “Lif”) เขียนไดดังสมการ (eqn. 5.10)

Li(x) = ∏≠= −

−n

ijj ji

j

xxxx

0

(eqn. 5.10)

Note: สัญลักษณ Π คือ อักษรกรีก ตัว pi พิมพใหญ (capital letter of pi) มีความหมายวา “the product of…” – ใหเปรียบเทียบกับ Σ ท่ีหมายถึง “the sum of…”

เพื่อใหเห็นภาพของสมการ (eqn. 5.9 และ 5.10) และเขาใจสัญลักษณทางคณิตศาสตรที่เก่ียวของ เราจะทดลองกระจาย terms ของสมการขางตน ดังน้ี

ท่ี n=1, f1(x) = )()(1

0i

ii xfxL∑

=

⋅ = L0(x)⋅f(x0) + L1(x)⋅f(x1)

= M [พักไวกอน... หันมาพิจารณา L0(x) และL1(x)]

[อยาลืมวาตอนน้ี i=0] Li(x) = L0(x) = 1

1

0

01

0 xxxx

xxxx

xxxx

ii

n

ijj ji

j

−−

⋅−−

=−

−∏=

≠=

= 10

1

xxxx

−−

[i=1] L1(x) = 01

0

xxxx

−−

ฉะนั้น f1(x) = 10

1

xxxx

−−

⋅f(x0) + 01

0

xxxx

−−

⋅f(x1)

ท่ี n=2, f2(x) = )()(2

0i

ii xfxL∑

=

⋅ = L0(x)⋅f(x0) + L1(x)⋅f(x1) + L2(x)⋅f(x2)

= ))((

))((

2010

21

xxxxxxxx−−−−

⋅f(x0) + ))((

))((

2101

20

xxxxxxxx−−−−

⋅f(x1) + ))((

))((

1202

10

xxxxxxxx−−−−

⋅f(x2)

พจนน้ีไมมี เพราะ j≠i ฉะนั้น พจนที ่j=0 จึง ถูกตัดออก

Page 10: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

75

5.2.1 การประมาณคาในชวงเชิงเสน – First order, n=1 กอนอ่ืนเรามาดูคุณสมบัติของ Lif, Li(x) ซึ่งกรณี first order, n=1 นี้ จะมี Lif อยู 2 ตัว ไดแก L0(x) และ L1(x) ซึ่งมีรูปรางลักษณะดังน้ี

L0(x) = ⎩⎨⎧01

L1(x) = ⎩⎨⎧10

Note: ฟงกช่ัน Lif, Li(x) น้ี ในวิธีไฟไนตเอลิเมนต เราจะเรียกวา Shape Function เม่ือทราบรูปรางของฟงกช่ัน Lif แลว หันมาพิจารณารูปฟอรมของสมการ กําหนด, สมการเสนตรง L0(x) = A(x - x1) (eqn. 5.11) A = slope ท่ีตําแหนง x= x0 , L0(x0) = A(x0 - x1) impose properties (จากขางบน) 1 = A(x0 - x1) A =

10

1xx −

สมการ (eqn. 5.11) กลายเปน L0(x) = 10

1xx −

(x- x1)

หรือในรูปทั่วไป L0(x) = 10

1

xxxx

−− ………………………………...... (eqn. 5.12)

ในทํานองเดียวกัน, สมการ L1(x) = B(x - x0) (eqn. 5.13) ท่ี x= x1 , 1 = B(x1 - x0) B =

01

1xx −

สมการ (eqn. 5.13) กลายเปน L1(x) = 01

1xx −

(x- x0)

หรือในรูปทั่วไป L1(x) = 01

0

xxxx

−− ………………………………...... (eqn. 5.14)

เมื่อ x = x0

เมื่อ x = x1 (เทากับศูนย elsewhere, beside x0)

เมื่อ x = x0

เมื่อ x = x1 (เทากับหนึ่ง ที่ตําแหนงของฟงกช่ัน x1)

Page 11: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

76

5.2.2 การประมาณคาในชวงกําลังสอง – Second order, n=2 กรณี second order, n=2 นี้ จะมี Lif อยู 3 ตัว ไดแก L0(x), L1(x) และ L2(x) ซึ่งมีรูปรางลักษณะดังน้ี

L0(x) = ⎪⎩

⎪⎨

001

L1(x) = ⎪⎩

⎪⎨

010

L2(x) = ⎩⎨⎧01

สําหรับรูปฟอรมของ L0(x), L1(x) และ L2(x) ดูไดจากตัวอยางตอไปน้ี

ตัวอยาง 5.3 จงใชขอมูลที่จุด (หรือ nodes) ตอไปนี้ x0=2, x1=2.5 และ x2=4 ในการหาฟงกช่ัน Lif อันดับสอง สําหรับฟงกช่ัน f(x) =

x1 และใช Lif’s ท่ีได ประมาณคาของ

31 = ? [หรือคาฟงกช่ันที่ node, x = 3 หรือหา P2(3)

น่ันเอง] วิธีทํา

เมื่อ x = x0

เมื่อ x = x1 เมื่อ x = x2

เมื่อ x = x0

เมื่อ x = x1 เมื่อ x = x2

เมื่อ x = x2

Elsewhere, ที่ตําแหนงอื่นๆ ที่ไมใช x2)

Page 12: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

77

5.2.3 การประมาณคาในชวงฟงกช่ันพหุนามแบบลากรานจรูปฟอรมทั่วไป (General form of nth-order Lagrange Interpolating Polynomials)

เราไดเรียนรูสมการหลักของการประมาณคาในชวง ดวยพหุนามรูปฟอรมทั่วไป (nth-order) แบบ ลากรานจ จากสมการ (eqns. 5.9 และ 5.10) มาแลว จะไดวา

fn(x) = )()(0

i

n

ii xfxL∑

=

และ

Li(x) = ∏≠= −

−n

ijj ji

j

xxxx

0

จากความรูในสองหัวขอยอย (5.2.1 และ 5.2.2) ที่ผานมา เราทราบวารูปแบบของ Lif ของแตละกรณี ไมวาจะเปน first order หรือ second order จะมีคุณสมบัติรวมกันก็คือ ท่ีตําแหนง x= xi ใดๆ Li(xi)=1 และจะมีคาเปนศูนยท่ีตําแหนง x อื่นๆ จากคุณสมบัติดังกลาว จะทําใหในกรณี nth-order ฟงกช่ัน Li(x) จะมีรูปรางลักษณะดังน้ี

รูปที่ 5.6 ลักษณะของฟงกช่ันประมาณคาในชวงแบบพหนุามของลากรานจ, Lif รปูฟอรมทั่วไป (nth-order)

5.3 วิธี Cubic Splines หัวขอนี้ในภาษาไทย จะตรงกับหัวขอ การประมาณคาในชวงดวยเสนโคง (ประเภท Splines) ซึ่งมีหลักการแตกตางโดยสิ้นเชิง เม่ือเปรียบเทียบกับการประมาณคาในชวงดวยฟงกช่ันโพลีโนเมียล ท้ังแบบนิวตัน และแบบลากรานจ ซึ่งในวิธีแบบ Interpolating Polynomials เราจะไดฟงกช่ัน (ตอเน่ือง) ที่พยายามลากผานทุกๆ จุดของขอมูล ย่ิงจํานวนจุดขอมูลมากข้ึน ก็จะตองใชฟงกช่ันพหุนาม ลําดับที่สูงข้ึน (higher order) ซึ่งทําใหไดรูปกราฟที่เปนเสนโคงกับไปกลับมา (ดูรูปที่ 5.7 ประกอบ) โดยมีขอสังเกตวา จํานวนจุดวกกลับ = n-1 (เทากับ จํานวนอันดับลบหน่ึง เชน n=2, กราฟเปนรูปพาราโบลา มีจุดวกกลับ = 2-1 เทากับ 1 จุด) ซึ่งวิธีการเชนน้ีจะ

Page 13: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

78

กอใหเกิดปญหากับขอมูลบางกรณี เชน ในกรณีของ step function หรือฟงกช่ันรูปข้ันบันได ดังรูปที่ 5.7 ซึ่งในกรณีเชนน้ี หลักการประมาณคาในชวงดวย Splines จะใชไดผลดี

รูปที่ 5.7 เปรียบเทียบการประมาณคาในชวง ดวยฟงกช่ันพหุนาม nth-order

กับ แบบใช Splines (Linear Splines)

หลักการของ Splines ก็คือ เราจะแทนจุดขอมูล n+1 จุด ดวย Spline จํานวน n เสน เราจะเริ่มจากงายท่ีสุด กรณี Spline เปนเสนตรง (linear spline), อันดับตอไปก็คือ Spline ท่ีเปนเสนโคงอันดับสอง (พาราโบลา) เรียกวา Quadratic spline และสุดทายเปนอันท่ีใชกันมากที่สุด คือ Spline ท่ีเปนเสนโคงอันดับสาม เรียกวา Cubic spline เรามาดูรายละเอียดของ Spline แตละชนิด

(1) Linear Splines (กรณี 1st-order) สมมติวา เรามีจุดขอมูล 4 จุด ท่ีตําแหนง x0 , x1 , x2 และ x3 โดยหลักการเราสามารถ fit 3 linear Splines

(คือ S0 , S1 และ S2) กับจุดขอมูลเหลานี้ ดังกราฟในรูปที่ 5.8 ในที่น่ี ฟงกช่ัน f(x) อาจเปนฟงกช่ันจริงที่ลากผานขอมูลทั้ง 4 จุด [หรือพูดอีกนัยหน่ึงวา ขอมูล 4 จุดนี้ถูกวัดคา หรือถูก sampling หรือถูกเก็บขอมูลออกมาฟงกช่ัน f(x)] ฉะนั้น Splines, Sj จะเปนการประมาณคาฟงกช่ันจริง f(x) ในแตละชวงของคา x ท่ี Spline ตัวน้ันๆ อยู

Note: Sj เปน linear function ชนิด piece-wise continuous function

รูปที่ 5.8 กราฟของ Linear splines x0 x1 x2 x3

S0 S1 S2

f(x)

series of Linear Splines

Page 14: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

79

จุดดอยของ linear spline ท่ีเห็นไดชัดเจน ก็คือ Sj (spline ใดๆ) ในหัวขอยอยน้ี จะไมตอเน่ืองท่ีจุดขอมูล หรือท่ี node(s) รูปฟอรมของ linear spline เขียนเปนสมการ (ซึ่งก็คือสมการเสนตรง) ดังน้ี

Sj(x) = aj+ bj(x-xj) (eqn. 5.15) (2) Quadratic Splines (กรณี 2nd-order)

เราแกปญหาของความไมตอเน่ืองท่ี node โดยใช splines ที่มี order สูงข้ึน ในที่น้ีก็คือ Quadratic splines (order=2) ซึ่งจะทําให slines 2 อันตอเนื่องที่ node แบบ first derivative พิจารณากราฟในรูปที่ 5.9 ประกอบ

รูปที่ 5.9 กราฟของ Quadratic splines

แตถึงแม splines จะตอเนื่องกัน (แบบ first derivative หรือ slope) ในบางกรณีท่ีขอมูลเปล่ียนแปลงกะทันหัน ในชวงระยะ x ที่สัน้เกินไป Quadratic splines ก็จะเบี่ยงเบนจากคาที่ควรจะเปน หรือคาของฟงกช่ันจริงไปมาก ลองพิจารณา สวนโคง S2 ในรูปที่ 5.9 รูปฟอรมของ quadratic spline เขียนเปนสมการ (ซึ่งก็คือสมการพาราโบลา) ดังนี้

Sj(x) = aj + bj(x-xj) + cj(x-xj)2 (eqn. 5.16)

จะละไว ไมขออธิบายหัวขอ Linear splines และ Quadratic splines โดยละเอียด รวมทั้งไมขยายความ สมการ (eqns. 5.15 และ 5.16) เพื่อท่ีจะใชเน้ือท่ีที่เหลือในบทนี้ กลาวถึง หลักการ fit curve แบบ Cubic splines ซึ่งไดกลาวไปในตอนตนแลววา เปนวิธีที่ใชมากที่สุดในทางปฏิบัติ (ถาจะใหเห็นภาพก็ใหลองนึกถึง โปรแกรมกราฟกตางๆ โดยเฉพาะประเภท CAD/CAM ท่ีมีการลากเสนโคง แบบท่ีไมใชวงกลม สวนใหญจะใชกลไกการคํานวณแบบ Cubic splines) เหตุผลก็คือ วิธี Cubic splines จะ fit curve ได smooth มากๆ ถึงแมวา เสนโคงที่ไดจะประกอบจาก Splines หลายๆ ตัวตอกัน แตเวลามองดวยสายตามนุษย จะเห็นเสมือนเปนเสนเดียวลากยาว-ตลอด น่ีคือ คําอธิบายของคําวา “smooth มากๆ” เหตุผลอีกประการก็คือ นอกจากจะได smooth curve แลว ยังใช order ของ polynomial ไมมากเกินไป คือแคอันดับสาม (อันดับตอจาก cubic คือ อันดับสี่ เรียกวา Quartic splines)

x0 x1 x2 x3

S1

f(x) S0 S2

Page 15: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

80

(3) Cubic Splines (กรณี 3nd-order) รูปที่ 5.10 แสดงการ fit curve ผานจุด 4 จุด ดวยเสนโคงอันดับสาม หรือ Cubic splines เม่ือเปรียบเทียบ

กับ splines อันดับสองและหนึ่ง จะพบวามีความใกลเคียงกับฟงกช่ัน f(x) จริงมากที่สุด และเสนโคง Sj ที่ลากตอๆ กันมีความ smooth ไมมีสะดุด เหมือนเปนเสนเดียวกัน ที่เปนเชนนี้ ก็เพราะ cubic splines มีความตอเนื่องที่ nodes จนถึง 2nd Derivatives

Note: ขอขยายความเรื่อง ความตอเนือ่งที่ node แบบตางๆ (1) ในแบบแรก เสนตรงสองเสนวิ่งมาบรรจบกันที่จุดเดียวกัน หรือปลายเสนทบักัน โดยเสนทั้งสองอาจมีความชัน (slope) ไมเทากันที่จุดนั้นก็ได เรียกวา continuous at point หรือตอเนื่องที่จุดแบบ 0th Derivatives ดังตัวอยางในกราฟของ linear splines รูปที ่5.8 ซึ่งเราจะสังเกตเห็นความไมตอเนื่องของ Sj ที่ตรง inner nodes แบบที่สอง (2) นอกจากปลายเสนทบักันแลว ความชันของทั้งสองเสนที่ว่ิงมาพบกัน ยังเทากันอีก แบบนี้เรียกวา continuous of slopes หรือตอเนื่องที่ 1st Derivatives ในความเปนจริง แคนี้สายตามนุษยก็มองวาเสนตอกันแบบ smooth ใชไดแลว และในแบบที่สาม (3) กลาวคือนอกจากปลายเสนทบักัน และมีความชันที่จุดปลายเทากันแลว อัตราการเปล่ียนแปลงของความชัน (2nd Derivatives) ของแตละเสนที่ว่ิงเขาหา node ยังเทากันอีก จึงกลาวไดวาเปนความตอเนื่องที่ smooth มากๆ เรียกวา continuous of 2nd Derivatives

รูปที่ 5.10 กราฟของ Cubic splines

เรามาทบทวนหลักการของ Splines น่ันคือ เรามีจุดขอมูลไมตอเนื่อง n+1 จุด เราจะ fit เสนโคง (ยอย) splines จํานวน n ตัว กับจุดขอมูลเหลานั้น เราเขียนกราฟอธิบาย Cubic splines รูปทั่วไปไดดังกราฟรูปที่ 5.11 โดย Cubic splines จะมีสมการเปน

Sj(x) = aj + bj(x-xj) + cj(x-xj)2 + dj(x-xj)3 (eqn. 5.17)

โดยที่ 0 ≤ j ≤ n-1 , และ Sj(x) เปนสไปลนของชวง (xj , xj+1)

x0 x1 x2 x3

f(x)

S0 S1 S2

***

Page 16: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

81

รูปที่ 5.11 กราฟของ Cubic splines ในรปูทั่วไป (general form)

จากสมการ (eqn. 5.17) cubic spline แตละตัว จะมีคา สปส. (aj , bj , cj , dj) ที่ไมทราบคา 4 ตัว ในกรณีท่ัวไป เรามีจํานวน splines n ตัวฉะน้ันจะมีตัวแปรไมทราบคา (หรือ สปส. ท่ีเราตองการทราบคา) จํานวน 4n ตัว ฉะนั้นเราตองการสมการทั้งหมด 4n สมการ เพื่อคํานวณหา สปส. เหลาน้ัน ซึ่งสมการที่เราตองการ มาจากขอกําหนด ดังตอไปนี้ (พิจารณาที่ inner nodes)

(1) Continuous at points พิจารณาที่ inner nodes (คือต้ังแต x1, x2 … xn-1) จํานวน = n+1-2 = n-1 โหนด เชนที่ตําแหนง xj คาของ

ฟงกช่ันมีคาเทากับ *ja ซึ่งเขียนไดวา Sj-1(xj) = *

ja = Sj(xj) ฉะน้ันที่แตละ inner node จะมี 2 สมการ คือ Sj-1(xj) = aj-1 + bj-1(xj-xj-1) + cj-1(xj-xj-1)2 + dj-1(xj-x j-1)3 = *

ja Sj(xj) = aj + bj(xj-xj) + cj(xj-xj)2 + dj(xj-xj)3 = *

ja ดังนั้นในขอน้ีเราจะไดสมการ = 2(n-1) = 2n-2 สมการ

(2) Continuous of slopes ท่ีแตละ inner node ความชันที่ node xj เทากัน จะไดวา )('

1 jj xS − = )('jj xS ขอนี้เราจะไดสมการ

จํานวน = n-1 สมการ

(3) Continuous of 2nd Derivatives ท่ีแตละ inner node คาของ 2nd Derivative ที่ node xj เทากัน จะไดวา )("

1 jj xS − = )("jj xS ขอน้ีเราจะ

ไดสมการอีกจํานวน = n-1 สมการ

(4) ที่จุดปลาย (outer nodes) ทั้งสองขาง ท่ีตําแหนง x0 และ xn เราทราบคา y กลาวคือ S0(x0) = y0 และ Sn-1(xn) = yn เราก็จะไดอีก 2 สมการ เม่ือมาถึงข้ันตอนที่ (4) น้ี เราไดสมการรวมท้ังหมด = (2n-2) + (n-1)+ (n-1) + 2 = 4n-2 สมการ ฉะนั้นยังขาดอีก 2 สมการ

*

(x0,y0) (xn, yn)

∆x=h0

hj

Page 17: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

82

(5) พิจารณา Boundary conditions ท่ีจุดปลายทั้งสองขาง สภาวะของปลายเสนทั้งสองขาง สามารถเปนไปได 2 กรณี คือ (1) ปลอยอิสระ เรียกวา free or natural boundary และ (2) จับยึดไว เรียกวา Clamped boundary ซึง่ในแตละกรณีจะไดอีก 2 สมการ (ที่เหลือ) ดังน้ี (a) )( 0

" xS = 0 และ )("nxS = 0 ในกรณี free or natural boundary, หรือ

(b) )( 0' xS = )( 0

' xf และ )('nxS = )(' nxf ซึ่งหมายถึง เราทราบความชันที่ปลายสาย ในกรณี

clamped boundary Note: ในกรณีที่ splines มีสภาวะ (5a) เราจะเรียกวา natural spline และถาเขากรณี (5b) เรียกวา clamped spline

เม่ือเราทราบสภาวะขอ (1) - (5) กอปรกับพิจารณารูปกราฟทั่วไปของ cubic splines ดังรูปที่ 5.11 เราจะสามารถทําการหาสูตรทั่วไปของ cubic splines ได [มาถึงตอนนี้ เราจะละวิธีการ derive หาสูตร สําหรับคํานวณ หา สปส. (aj , bj , cj , dj) ของ cubic splines เอาไว สําหรับผูท่ีสนใจ ก็สามารถหาดูไดจากเอกสารอางอิงที่ใหไว] สรุปวิธี Cubic splines ดังน้ี

1. โจทยจะกําหนดจุดขอมูลมาให n+1 คือคูลําดับ (x0 , y0), (x1 , y1), …, (xn , yn) 2. คํานวณ สปส. aj = yj 3. คํานวณ สปส. cj คํานวณจากคา aj และ hj (หรือคา ∆x น่ันเอง, และถาจุดหางเทาๆ กัน hj = h = คาคงที่)

โดยที่ hj = xj+1 - xj มีรายละเอียดดังน้ี - สมการตั้งตนในการหา cj คือ [A]{cj}={b}

โดยที่ [A] = tridiagonal matrix (หรืออาจใชวา the matrix A is strictly diagonally dominant) ท่ีมี สมาชิกคํานวณจาก hj ในกรณี natural cubic spline และ clamped cubic spline สิ่งที่จะ ตางกัน คือสมาชิกในแถวที่ 1 และแถวที่ n เน่ืองจากความแตกตางของ boundary conditions ในขอที่ (5a และ 5b) ดูตารางที่ 5.2 เพื่อเปรียบเทียบ

{b} = column vector ที่มีสมาชิกคํานวณจากคา aj และ hj สวนรายละเอียดอื่นๆ ก็อธิบายได เชนเดียวกันกับกรณีของเมตริกซ [A]

4. คํานวณ สปส. bj = j

jj

hcc

31 −+

5. คํานวณ สปส. dj = )2(3 1

1

1

1jj

j

j

jj cch

haa

++−

−−

Page 18: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

83

ตารางที่ 5.2 Graphical interpretation of the recursive nature of finite divided differences

Natural Spline Clamped Spline A=

b=

6. เม่ือไดคา สปส. aj , bj , cj , dj ทั้งหมดแลว ก็จะสามารถคํานวณคาฟงกช่ันในตําแหนงที่เราสนใจไดจากสมการ (eqn. 5.17) หรือ Sj(x) = aj + bj(x-xj) + cj(x-xj)2 + dj(x-xj)3 ของสไปลนที่สัมพันธกับตําแหนงน้ัน

ตัวอยาง 5.4 จง fit curve ผานขอมูล หรือ nodes จากตารางตอไปน้ี ดวยวิธี Cubic spline และจงหาฟงกช่ัน f(0.66) = ? ซึ่งในความเปนจริงขอมูลน้ีมีความสัมพันธกันตามธรรมชาติ (exact function) ดังสมการ

f(x) = 22 xe x− x 0.00 1.00 1.50 2.25

f(x) 2.0000 4.4366 6.7134 13.9130 วิธีทํา

Page 19: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

84

5.4 ฟงกชั่นของ Matlab ทีเ่กี่ยวของกับการประมาณคาในชวง (Interpolation) คําสั่ง Matlab ท่ีนาสนใจ ท่ีควรจะเรียนรู ณ ท่ีน้ี มีอยู 2 คําสั่ง คือ [1] interp1() เปนคําสั่งที่เก่ียวกับ

linear interpolation หรือเราอาจคุนเคยกับคําวา lookup table (การเปดตารางเพื่อดูคา หรือคํานวณคาที่เราตองการจากตารางขอมูลท่ีมีอยู) และ [2] spline() เปนคําสั่งประมาณคาในชวงโดยใชเทคนิค cubic spline

5.4.1 การประมาณคาในชวงแบบเชิงเสนดวยคําส่ัง interp1() คําสั่ง interp1 ใน Matlab หมายถึง 1-D Interpolation คือจะประมาณคาในชวง โดยรับ input

เพียงตัวเดียว ในทางวิศวกรรมจะใชมากในการคํานวณคาที่ไมทราบจากการเปดตารางแลวไมมีคาความสัมพันธ (คาฟงกช่ัน หรือ คา y) ท่ีตําแหนง (คา x) ท่ีเราตองการ การใชงาน interp1 มีรูปแบบคําสั่ง ดังนี้

yy = interp1(x,y,xx,‘OPTION’)

โดย x, y จะเปนเวกเตอรของขอมูล x และ y หรือขอมูลในตาราง ในกรณีของ linear interpolation เวกเตอร x และ y จะตองมีขอมูลอยางนอยที่สุด 2 คา เชน x=[1 3] และ y=[2 6]

xx แทนจุดท่ีตองการทราบคาประมาณ, เปนขอมูลตัวเลข ท่ีอยูในชวงของเวกเตอร x yy แทนตัวแปรที่ใชเก็บคาที่ไดจากการประมาณคาในชวง ท่ีตําแหนง xx

‘OPTION’ เปนตัวเลือกของวิธีการ interpolation ในกรณีของ linear interpolation เราจะใช ‘linear’ หรือจะละไว (ไมตองมี option) ซึ่งในความเปนจริง Matlab ยังมีตัวเลือกวิธีการ interpolate อ่ืนๆ อีก ผูสนใจสามารถพิมพ help interp1 เพื่อดูรายละเอียด

จากขอมูลขางบน เราตองการทราบคาฟงกช่ันที่ x=2 หรือ x=2.5 ใน Matlab จะทําไดดังน้ี >> x=[1 3];

>> y=[2 6];

>> interp1(x,y,2)

ans =

4

>> yy=interp1(x,y,2.5,’linear’)

yy =

5

5.4.2 การประมาณคาในชวงดวยเทคนิค Cubic splines ใน Matlab เราจะใชคําสั่ง spline ซึ่งมีรูปแบบการใชงานคลายกันกับ interp1 โดยจะ

คํานวณคาประมาณในชวง โดยรับ input เพียง 1 คา และให output ออกมา 1 คาเชนกัน การใชงานคําสั่ง spline มีรูปแบบ ดังน้ี

Page 20: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

85

yy = spline(x,y,xx)

โดย x, y จะเปนเวกเตอรของขอมูล x และ y และควรจะมีขอมูลในแตละเวกเตอรอยางนอย 4 คา ไมเชนนั้น เชน หากมีขอมูลเพียง 2 คา ก็จะคํานวณคําตอบดวยเทคนิค linear spline หรือมีขอมูล 3 คา ก็จะใชเทคนิค quardratic spline หรือ spline แบบโคงกําลังสอง

xx แทนจุดท่ีตองการทราบคาประมาณดวยวิธี cubic splines, เปนขอมูลตัวเลข yy แทนตัวแปรที่ใชเก็บคาที่ไดจากการประมาณคาในชวง ท่ีตําแหนง xx การนําคําสั่ง spline ไปใชงาน อาจทําทีละบรรทัด (แบบ interactive – โตตอบ) เชนเดียวกันกับ interp1 ซึ่งก็จะใหคําตอบไดทีละคา (ทีละ 1 จุด) เพื่อใหเกิดความเขาใจในเทคนิคนี้ดีข้ึน เราจะทําตัวอยางที่ซับซอนข้ึน โดยการ fit curve ดวยเทคนิค cubic splines ตลอดชวงขอมูลท่ีกําหนด เพื่อใหเห็นภาพการทํางานโดยรวมของคําสั่ง spline

ตัวอยาง 5.5 สมมติวาเรามีขอมูลที่ไดจากการทดลองเพียง 9 จุด ซึ่งในความเปนจริงขอมูลน้ีมีความสัมพันธกันตามธรรมชาติ ดังสมการ

f(x) = 2

11 25x+

ขอมูลที่ได เขียนในรูปตารางไดดังน้ี x -1 -0.75 -0.5 -0.25 0 0.25 0.5 0.75 1

f(x) 0.0385 0.0664 0.1379 0.3902 1.0000 0.3902 0.1379 0.0664 0.0385

จงทําการ fit curve ขอมูลชุดน้ี ดวยเทคนิค cubic splines

วิธีทํา เราเร่ิมตนดวยการพลอตขอมูลท่ีใหมาดวย Matlab

[เราอาจพลอตขอมูลโดยการคียขอมูล x,y เปนเวกเตอรและใชคําสั่ง plot(x,y,’o’) ตามปกติ แตในที่นี้ เราจะลัดข้ันตอนดวยการพลอตฟงกช่ันขางบน จํานวน 9 จุดแทน ดังน้ี]

>> x=-1:.25:1;

>> y=1./(1+25*x.^2);

>> plot(x,y,’o’,x,y,’:’)

กราฟที่ไดมีลักษณะเปน peak ยอดแหลมซึ่งเปนไปตามรูปที่ 5.12 (ก) เราจะสังเกตเห็นจุดขอมูลพลอตเปนวงกลม ตั้งแต x=[-1,1] จากกราฟที่ได เราจงใจเติมเสนปะเพื่อใหเห็นวาจุดขอมูลหางกัน ทําใหเสนกราฟไม smooth (เราทําการพลอตจุดสีแดง เพื่อใหเห็นวา กราฟน้ีเปนกราฟสวนกลับ inverted ของโคงพาราโบลานั่นเอง)

Page 21: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

86

รูปที่ 5.12 กราฟสําหรบัตัวอยาง 5.5

จากนั้น เราจะใชคําสั่ง spline()เพื่อคํานวณจุดบนเสนโคงอันดับสาม (cubic splines) ซึ่งสอดคลองกับขอมูลที่ใหมา ดังนี้

>> xx=-1:.05:1;

>> yy=spline(x,y,xx); >> hold on

>> plot(xx,yy,'+')

จะเห็นไดวาเรากําหนดชวงของคา x เสียใหมใหถ่ีมากข้ึน (ใหเปนตัวแปร xx) จากนั้นจึงทําการคํานวณตําแหนงบนโคงอันดับสามและเก็บไวในตัวแปร yy นําไปพลอตลงบนกราฟเดียวกัน (โดยใชคําสั่ง hold on ชวย) โดยพลอตเปนจุด ‘+’ (เพื่อแสดงจุดท่ีเราคํานวณใหม) แสดงแนวเสนโคงที่ได จะไดดังรูปที่ 5.12 (ข) เราจะสังเกตเห็นวา จุดขอมูลวงกลมจะอยูบนเสนโคงอันดับสามนี้ดวย

เราอาจปรับปรุงกราฟ cubic spline ใหชัดเจน โดยพลอตเปนเสนทึบ (solid line) โดยใชคําสั่งตอไปน้ีเพิ่มเติม

>> plot(xx,yy,'r')

Ans.

Note: โปรแกรม Matlab อํานวยความสะดวกในการคํานวณการประมาณคาในชวง (Interpolation) แบบ Cubic Splines โดยมี Toolbox ท่ีช่ือวา Spline Tool เราสามารถเรียกใชใน Matlab ดวยคําสั่ง >>splinetool ใน Command Window รูปที่ 5.13 เปนการทําตัวอยาง 5.5 ดวย Spline Tool โดยกําหนดเงื่อนไขจุดปลาย (outer nodes) เปนแบบ free ends หรือ natural splines

(ก) (ข)

Page 22: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

87

รูปที่ 5.13 หนาตางของ Spline Tool ในโปรแกรม Matlab ของตัวอยาง 5.5

5.4.3 การหาคาสัมประสิทธ์ิของ Spline แตละตัว ในระเบียบวิธี Cubic splines ในบางกรณีเราตองการทราบคาสปส.ของสไปลนแตละตัว (S0, S1, S2, …, Sn-1) เราทราบวาสไปลน แตละตัวมีสปส. 4 ตัว คือ a, b, c และ d เชนเดียวกันกับหัวขอท่ีผานมา เราจะใชคําสั่ง spline แตมีรูปแบบคําสั่ง ดังน้ี

pp = spline(x,y)

โดย x, y จะเปนเวกเตอรของขอมูลดิบ x และ y pp คือ output ซึ่งเก็บ คุณสมบัติของ piecewise polynomials (หรือ cubic splines) และคาของสปส. a, b, c

และ d ของสไปลนแตละตัวก็จะอยูในตัวแปรยอยของ pp ที่ช่ือวา coefs วิธีการเรียกดูคาเหลานี้ แสดง ดังตัวอยาง

Note: เราอาจใชคําสั่ง ppval(pp,xx)เพื่อทําการคํานวณการประมาณคาในชวงที่ตําแหนง xx ท่ีเราสนใจ ซึ่งก็จะใหผลลัพธเชนเดียวกับคําสั่ง spline() หัวขอที่ 5.4.2

Page 23: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

88

ตัวอยาง 5.6 เราจะทําตัวอยาง 5.4 อีกคร้ัง (end condition เปนแบบ free end) โดยใช Matlab ชวย ดังน้ี >> x = [0 1 1.5 2.25]; >> y = [2.0000 4.4366 6.7134 13.9130]; >> cs = spline(x,y);

cs = form: 'pp' breaks: [0 1 1.5000 2.2500] coefs: [3x4 double] pieces: 3 order: 4 dim: 1

ซึ่งจะเห็นไดวา ในบรรทัดท่ี 3 ของผลลัพธ จะมีตัวแปรยอยช่ือ coefs ซึ่งเปนเมตริกซขนาด 3 × 4 ซึ่งก็สอดคลองกับจํานวนสไปลน 3 ตัว ซึ่งแตละตัวจะมี 4 สปส. (aj , bj , cj , dj) จากตัวอยางขางบน เราจะได piecewise cubic splines จํานวน 3 ตัว อยูในตัวแปรช่ือ cs.coefs ซึ่งเปนตัวแปรแบบ Structure เราจะเรียกดูคาของตัวแปรนี้ โดยพิมพคําสั่ง ดังน้ี >> cs.coefs

ans = 1.1668 -1.5056 2.7754 2.0000 1.1668 1.9948 3.2645 4.4366 1.1668 3.7450 6.1344 6.7134

เราพลอตกราฟสไปลนในชวง x = [0,1] ซึ่งก็คือสไปลนตัวแรก หรือสไปลน S0 โดยพิมพดังน้ี >> xx1=0:0.01:1; >> yy1=1.1668*(xx1-0).^3-1.5056*(xx1-0).^2+2.7754*(xx1-0)+2; >> plot(xx1,yy1,':m')

Sj(x) = dj(x-xj)3 + cj(x-xj)2 + bj(x-xj) + aj โดยที่ x = [xj , xj+1]

รูปที่ 5.14 กราฟ Cubic Spline ของตัวอยาง 5.6 0.66

3.5114

Page 24: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

89

คํานวณหาคาฟงกช่ันที่ตําแหนง x=0.66 หรือ f(0.66) ซึ่งอยูในชวง x = [0,1] ดังนั้นใชสไปลนตัวเดียวกัน โดยพิมพคําสั่งดังน้ี >> yy1=1.1668*(0.66).^3-1.5056*(0.66).^2+2.7754*(0.66)+2

yy1 = 3.5114

Ans.

เราจะทําอีกสักตัวอยาง โดยจะใช end condition แบบ clamped end ใหทําตามคําสั่ง Matlab ขางลาง และสังเกต ความแตกตางจากตัวอยางที่ผานมา

ตัวอยาง 5.7 (ตัวอยาง Cubic Spline แบบ clamped end) >> x = -4:4; y = [0 .15 1.12 2.36 2.36 1.46 .49 .06 0]; >> cs = spline(x,[0 y 0]); >> xx = linspace(-4,4,101); >> plot(x,y,'o',xx,ppval(cs,xx),'-');

Remark: โปรดสังเกตคําสั่ง Matlab บรรทัดที่สอง ที่เราเพิ่มคา y อีก 2 คาที่ตําแหนงหัว-ทาย, [0 y 0] การที่เวกเตอรคา y มีจํานวนมากกวา เวกเตอรคา x อยู 2 คา จะหมายถึง เราให Matlab ทําการ fit curve แบบ Clamped cubic splines โดยตัวเลขที่เพิ่มเขามาที่ตําแหนงหัว-ทาย คือคาความชันที่ปลายเสนโคง ซึ่งในที่น้ี ความชันทั้งหัว-ทาย มีคาเปนศูนยท้ังคู หมายถึง เสนกราฟตรงสองจุดนี้จะแบนราบ (กรณีปกติ ขนาดเวกเตอร x จะเทากับเวกเตอร y ซึ่งจะมีสภาวะ end condition จะเปนแบบ not-a-knot หรือตามความเขาใจของเราคือ free end น่ันเอง)

รูปที่ 5.15 กราฟ Cubic Spline ของตัวอยาง 5.7

Page 25: 5 (Interpolation) [12sep2011-rev.2] - Pirun Web Serverpirun.ku.ac.th/~fengslj/02212471/doc54a/chap05_rev2.pdf · “A polynomial of degree n passing exactly through n+1 discrete points

Ch.5 Curve Fitting I : Interpolation 02212471 Semester I - 2011

90

จากตัวอยางคําสั่ง Matlab ท่ีผานมา เราจะไดคุณสมบัติของ piecewise cubic splines จํานวน 8 ตัว อยูในตัวแปรช่ือ cs.coefs เราจะเรียกดูคาของตัวแปรนี้ โดยพิมพคําสั่งดังตอไปนี้ >> cs cs = form: 'pp' breaks: [-4 -3 -2 -1 0 1 2 3 4] coefs: [8x4 double] pieces: 8 order: 4 dim: 1

และ >> cs.coefs ans = 0.2034 -0.0534 0 0 -0.0903 0.5569 0.5034 0.1500 -0.3921 0.2859 1.3462 1.1200 0.1488 -0.8904 0.7417 2.3600 0.1370 -0.4441 -0.5929 2.3600 0.1332 -0.0331 -1.0701 1.4600 -0.0600 0.3666 -0.7366 0.4900 -0.0633 0.1867 -0.1833 0.0600

Ans. Note: ชุดของสปส. aj , bj , cj , dj ของสไปลนทั้งหมด ที่ไดจากคําสั่ง Matlab จะเรียงจาก สไปลน S0 ในบรรทัดแรกของ output ไปจนถึงสไปลนตัวสุดทาย ซึ่งในที่นี้ คือ สไปลน S7

* * * * *

S0 S1

S7

สปส. ของสไปลนทั้งหมด 8 ตัว


Recommended