Computational Physics in Thai

276
ฟสิกสเชิงคํานวณ Computational Physics PH 615 ภาควิชาฟสิกส คณะวิทยาศาสตร มหาวิทยาลัยรามคําแหง รองศาสตราจารย ดร. นิพนธ ตั้งประเสริฐ

description

Lecture note

Transcript of Computational Physics in Thai

Page 1: Computational Physics in Thai

ฟสกสเชงคานวณ Computational Physics PH 615

ภาควชาฟสกส คณะวทยาศาสตร มหาวทยาลยรามคาแหง

รองศาสตราจารย ดร. นพนธ ตงประเสรฐ

Page 2: Computational Physics in Thai

สารบญ

หนา คานา สารบญ บทท 1 การวเคราะหเชงตวเลข 1 1.1 การตกอยางอสระของวตถ 1 1.2 การวเคราะหเชงตวเลข 5 1.3 ภาษาคอมพวเตอร 10 บทท 2 รากของสมการ 15 2.1 วธกราฟ 15 2.2 วธแบงสวน 17 2.3 วธฟอลสโพซชน 25 บทท 3 การแกสมการ 37 3.1 วธทาซาจดคงท 37 3.2 วธนวตน – ราฟสน 41 3.3 วธซแคน 52 3.4 วธปรบปรงซแคน 59 3.5 รากซา 64 3.6 ระบบหลายสมการไมเปนเชงเสน 72 บทท 4 ระบบสมการ 83 4.1 วธกราฟ 83 4.2 วธใชหลกของเครเมอร 86 4.3 วธกาจดตวแปร 89 4.4 วธ Naive Gauss Elimination 90 4.5 วธเกาส – จอรแดน 115

Page 3: Computational Physics in Thai

หนา บทท 5 การสรางเมทรกซ LU และอนเวรสของเมทรกซ 119 5.1 LU ดคอมโพซชน 119 5.2 อนเวรสของเมทรกซ 129 5.3 การคณเมทรกซ 139 บทท 6 เมทรกซพเศษและการแกปญหาทางฟสกส 145 6.1 เมทรกซไทรไดอะโกนอล 145 6.2 โชลเลสกดคอมโพซชน 147 6.3 เกาส – ซเดล 149 6.4 การประยกตทางดานฟสกส 156 บทท 7 การหาคามากสด 165 7.1 การหาโดยวธโกลเดน – เซกชน 165 7.2 การประมาณคาโดยอาศย Quadratic function 170 7.3 วธนวตน 175 บทท 8 การปรบเสน และการประมาณคา 183 8.1 การถดถอยเชงเสน 184 8.2 การถดถอยไมเปนเชงเสน 195 8.3 การถดถอยโพลโนเมยน 201 8.4 การถดถอยเชงเสนหลายตวแปร 214 8.5 การประมาณคา 224 8.6 อนกรมฟเรยร 227 บทท 9 การอนทเกรท 231 9.1 ทราเปซอยดอลรล 232 9.2 วธซมปสน 237 9.3 การอนทเกรทโดยแตละ segment มคาไมเทากน 248

Page 4: Computational Physics in Thai

หนา 9.4 การอนทเกรทโดยวธรอมเบรก 248 9.5 การอนทเกรทโดยวธเกาสควอดราเจอร 253 บทท 10 อนพนธและสมการดฟเฟอเรนเชยล 257 10.1 วธ finite difference 257 10.2 การหาอนพนธโดยวธรชารดสน 261 10.3 การแกสมการดฟเฟอเรนเชยลโดยวธออยเลอร 262 10.4 การแกสมการดฟเฟอเรนเชยลโดยวธรงกตตา 268 10.5 ปญหาคาทขอบเขตและคาไอเกน 276 10.6 เลขสม 277 บรรณานกรม 281

Page 5: Computational Physics in Thai

คานา หนงสอเลมนกลาวถงความรเบองตนเกยวกบการคานวณเชงตวเลขทสามารนาไปใชแกปญหาทางฟสกส เหมาะสาหรบนกศกษาทเรมตนศกษาขนตอนการคานวณเชงตวเลขเนอหาประกอบดวย การวเคราะหเชงตวเลข รากของสมการ การแกสมการ ระบบสมการ การสรางเมทรกซ LU และอนเวรสของเมทรกซ เมทรกซพเศษและการแกปญหาทางฟสกส การหาคามากสด การปรบเสนและการประมาณคา การอนทเกรท อนพนธและสมการดฟเฟอ เรนเชยล ในแตละบท จะมโปรแกรมคอมพวเตอรภาษาฟอรแทรนประกอบคาอธบาย ซงโปรแกรมเหลานจะชวยนกศกษาเมอนาไปใชกบการแกปญหาทนกศกษากาลงศกษาอยจรง ซงจะทาใหการแกปญหาเปนไปอยางรวดเรวและถกตอง โปรแกรมทงหมดนไดผานการตรวจสอบ เรยบรอยแลว นกศกษาสามารถพมพโปรแกรมแลวรนโปรแกรมไดเลย ผลลพธทแสดงตอทาย โปรแกรม เปนผลลพธทไดจากการ print screen โดยตรง โดยไมมการพมพใหม ดงนนเมอนกศกษารนโปรแกรม ผลลพธทไดจะเหมอนกบทนกศกษาเหนอยในหนงสอ ในการพมพครงแรกน ผเขยนคาดวาจะตองมขอผดพลาดอยบาง ถาทานผอานพบหรอ ตองการใหคาแนะนาใดๆ ผเขยนยนดทจะนอมรบไวเพอจะไดแกไขในการพมพครงตอไป ผเขยนขอขอบคณทกทานทมสวนชวยเหลอในการจดทาหนงสอเลมน นพนธ ตงประเสรฐ

Page 6: Computational Physics in Thai

บทท 1 การวเคราะหเชงตวเลข

ปจจบนคอมพวเตอรเขามามบทบาททสาคญตอชวตประจาวนของมนษยมากมายหลายดาน การนาคอมพวเตอรมาชวยแกปญหาทางฟสกสทาใหการเรยนรฟสกสแขนงใหมกาวหนาอยางรวดเรวและมประสทธภาพ การศกษาระบบไมใชเชงเสนจะไมสามารถกระทาไดเลยถาไมมคอมพวเตอรทมความเรวสงและมประสทธภาพในการคานวณ ในบทนจะกลาวถงการนาคอมพวเตอรมาชวยแกปญหาทางฟสกสทนกศกษาคนเคยกอน คอ การตกของวตถอยางอสระภายใตแรงดงดดของโลก นกศกษาจะไดทบทวนการคานวณโดยอาศยทฤษฎทางฟสกสดงเดม จากนนนกศกษาจะไดเรยนรวธการวเคราะหเชงตวเลข(numerical analysis)ในการแกปญหาเดยวกน แลวนาผลลพธทไดมาเปรยบเทยบกน

1.1 การตกอยางอสระของวตถ (Freely falling objects) วตถทตกอยางอสระหมายถงวตถทเคลอนทอยางอสระภายใตแรงดงดดของโลกอยาง

เดยว โดยไมคานงถงการเคลอนทเรมตน วตถอาจจะถกปลอยตกจากมอ หรอขวางขนขางบนกได จากกฎขอทสองของนวตน จะได

dtdv =

mF (1.1)

เมอ v เปนความเรว (เมตร/วนาท) t เปนเวลา (วนาท) สมมตวา มแรงตานทานของอากาศในทศขนมคาเทากบ Fair และแรงเนองจากแรงโนมถวงเทากบ Fgrav ดงนน แรงลพธ (F) F = Fgrav - Fair

PH615 1

Page 7: Computational Physics in Thai

สมมตวา แรงตานของอากาศแปรตามความเรวของวตถ

Fair = kv เมอ k = คาคงทเรยกวาสมประสทธของความตานทาน จากสมการ (1.1) จะได

dtdv =

mcvmg −

= g - vmc (1.2)

สมการ (1.2) เปนสมการดฟเฟอเรนเชยล ซงจากคณตศาสตร จะมผลเฉลยคอ

v(t) = c

gm (1 – e-(c/m)t ) (1.3)

PH615 2

Page 8: Computational Physics in Thai

ตวอยางท 1.1 นกโดดรมมวล 68.1 กโลกรม กระโดดจากลกบอลลนทหยดนง จงคานวณหาความเรวของนกโดดรมหลงจากเวลาผานไป กาหนดใหสมประสทธของความตานทานเทากบ 12.5 กโลกรม/วนาท

วธทา จากสมการ (1.3) แทนคาทโจทยกาหนดให

v(t) = c

gm (1 – e-(c/m)t )

( ) ( )( )12.5 68.19.8 68.1( ) 1

12.5tv t e−= −

( )0.18355( ) 53.39 1 tv t e−= −

แทนคา t เปนวนาท จะได

t (วนาท) v (เมตร/วนาท) 0 2 4 6 8 10 12

Μ ∞

0.00 16.40 27.77 35.64 41.10 44.87 47.49

Μ 53.39

ความเรวเมอ t มคามากเรยกวา ความเรวเทอรมนล (terminal velocity) จะมคาคงท เพราะ ณ เวลานแรงเนองจากแรงดงดดของโลกจะเทากบแรงตานจากอากาศ ทาใหแรงลพธเทากบศนย นกกระโดดรมจงเคลอนทโดยไมมความเรง ซงกคอมความเรวคงท

PH615 3

Page 9: Computational Physics in Thai

รปท 1.2 ความเรวของนกกระโดดรมทเวลาใด ๆ คานวณจากผลเฉลยจรง (exact solution)

กราฟระหวางความเรวของนกกระโดดรมทเวลาตาง ๆ เขยนกราฟโดยใชโปรแกรม sigma plot แสดงในรปท 1.2 จะสงเกตเหนวาเมอ t มคามาก ความเรวจะมคาคงทท 53.39 เมตร/วนาท สมการ (1.3) มชอเรยกวาผลเฉลยวเคราะห (analytical solution) หรอผลเฉลยแทจรง (exact solution) เพราะวาเปนผลเฉลยทไดจากการแกสมการดฟเฟอเรนเชยล อยางไรกตาม ยงมสมการทางคณตศาสตรอกมากมายซงไมสามารถแกสมการไดโดยตรงเชนน จะตองใชวธการวเคราะหเชงตวเลขมาชวยในการประมาณคาผลเฉลยของสมการ

PH615 4

Page 10: Computational Physics in Thai

1.2 การวเคราะหเชงตวเลข (numerical analysis)

การเปลยนแปลงของความเรว สามารถประมาณคาไดดวยสมการ

dtdv ≅

tv

ΔΔ = ( ) ( )

ii

ii

tttvtv

−−

+

+

1

1 (1.4)

เมอ Δv และ Δt เปนการเปลยนแปลงของความเรวในชวงเวลา Δt V(ti) = ความเรวทเวลาเรมตน ti V(ti+1) = ความเรวทเวลาผานไป ti+1 สมการ (1.4) เปนการประมาณคาเดอรเวทฟดวยวธ finite divided difference แทนลงในสมการ (1.2) จะได

( ) ( )ii

ii

tttvtv

−−

+

+

1

1 = g - ( )itvmc

จดรปสมการใหม จะได

(1( ) ( ) ( )i i i icv t v t g v t t tm+

⎡ ⎤ )1 i+= + − −⎢ ⎥⎣ ⎦ (1.5)

วธการวเคราะหเชงตวเลขสามารถกระทาไดโดยกาหนดคาเรมตนของความเรวทเวลา

ti กอน (v(ti)) แลวแทนลงในสมการ (1.5) จะไดความเรวทเวลา ti+1(v(ti+1)) นาคา v(ti+1) ทไดแทนลงในสมการ (1.5) อกครงหนง จะไดความเรวทเวลา ti+2( v(ti+2)) ทาซาเชนนไปเรอย ๆ จะไดความเรวทเวลา t ตาง ๆ เขยนวธการเชนนในรกสมการไดวา

คาใหม = คาเกา + ความชน x ชวงขน

วธการเชนนเรยกวา วธออยเลอร (Euler’s method)

PH615 5

Page 11: Computational Physics in Thai

ตวอยางท 1.2 จงคานวณความเรวของนกกระโดดรมทเวลา t ใด ๆ ตามตวอยาง 1.1 โดยใชวธการวเคราะหเชงตวเลข โดยใชสมการ (1.5) กาหนดใหชวงขนเทากบ 2 วนาท วธทา ทเวลาเรมตน (ti = 0) ความเรวของนกกระโดดรมเทากบ 0 (v(ti) = 0) แทนลงในสมการ (1.5) โดยใช ti+1 = 2 วนาท จะได

( )12.50 9.8 0 2 19.6 /68.1

v m⎡ ⎤= + − =⎢ ⎥⎣ ⎦s

แทนคา v = 19.60 เมตร/วนาท ลงในสมการ (1.5) อกครงหนง จะได

( )12.519.6 9.8 19.6 2 32 /68.1

v m⎡ ⎤= + − =⎢ ⎥⎣ ⎦s

ทาเชนนหลาย ๆ ครง จะไดความเรวของนกกระโดดรมทเวลา t ใด ๆ ดงแสดงในตารางตอไปน

t (วนาท) v (เมตร/วนาท) 0 2 4 6 8 10 12

Μ ∞

0.00 19.60 32.00 39.85 44.82 47.97 49.96

Μ 53.39

เมอนาคาในตารางมาเขยนกราฟ จะไดกราฟดงรปท 1.3 ซงเมอ t มคามาก

ความเรวจะมคาคงทท 53.39 เมตร/วนาท ตรงกบการคานวณจากผลเฉลยจรง

PH615 6

Page 12: Computational Physics in Thai

รปท 1.3 ความเรวของนกกระโดดรมทเวลาใด ๆ คานวณจากการวเคราะหเชงตวเลข

(numerical solution) กราฟระหวางความเรวของนกกระโดดรม เมอเปรยบเทยบคาทไดจากการคานวณโดยตรงกบคาทไดจากการคานวณโดยวธ

วเคราะหเชงตวเลขจะพบวา ความเรวของวตถทเวลา t ใด ๆ มคาใกลเคยงกน ดงแสดงในกราฟรปท 1.4

รปท 1.4 เปรยบเทยบความเรวจากการวเคราะหเชงตวเลขและคาทแทจรง

PH615 7

Page 13: Computational Physics in Thai

ความเรวของนกกระโดดรมคานวณโดยวธวเคราะหเชงตวเลข จะขนกบชวงเวลา Δt

เมอ Δt มคามาก ความเรวทคานวณไดจะแตกตางจากคาทแทจรงมากกวาเมอ Δt มคา

นอย รปท 1.5 แสดงคาความเรวเมอ Δt = 0.5, 1 และ 2 วนาท จะเหนไดวา เมอ t

นอยกวา 20 วนาท ความเรวจะมคาขนกบ Δt แตเมอ t มากกวา 20 วนาท ความเรว

จะมคาเทากนไมวา Δt จะมคาเทาไร และมคาเทากบความเรวเทอรมนล

รปท 1.5 ความเรวของนกกระโดดรม คานวณโดยวธวเคราะหเชงตวเลข โดยใช

Δt = 0.5, Δt = 1 และ Δt = 2 วนาท โปรแกรมภาษาฟอรแทรนตอไปน คานวณความเรวของนกกระโดดรม โดยวธการ

วเคราะหเชงตวเลข โดยใชชวงเวลา Δt = 0.5, Δt = 1 และ Δt = 2 วนาท

PH615 8

Page 14: Computational Physics in Thai

PROGRAM VELANA REAL VR,VA,ER,T,DT VR= 0. DT= 4. ER= 0. DO 10 I=1,3 T = 0. VA= 0. DT = DT/2. WRITE(*,*)' DT =',DT,' SEC.' WRITE(6,100) 100 FORMAT(5X,'Times(sec.)',5X,'V real', + 12X,'VA',11X,'% ERROR') DO 20 N=1,6 T = T+DT VR= 53.39*(1.-EXP(-0.18355*T)) VA= VA+((9.81-12.5*VA/68.1)*DT) ER= (VA-VR)*100/VA WRITE(6,200) T,VR,VA,ER 200 FORMAT(F10.1,6F16.2) 20 CONTINUE 10 CONTINUE STOP END

เอาทพทจากโปรแกรม VELANA คอ

PH615 9

Page 15: Computational Physics in Thai

เมอเปรยบเทยบกบความเรวทแทจรง จะเหนไดวาความเรวจากวธการวเคราะหเชงตวเลข

เมอใช Δt = 0.5 วนาท มคาใกลกบความเรวทแทจรงมากทสด

รปท 1.6 เปรยบเทยบความเรวของนกกระโดดรม คานวณโดยวธวเคราะหเชงตวเลขโดยใช

Δt ตาง ๆ กนกบคาทแทจรง

1.3 ภาษาคอมพวเตอร คอมพวเตอรจะทางานตามคาสงทไดรบ การเขยนคาสงหรอเขยนโปรแกรมจะตองเขยนดวยภาษาคอมพวเตอร ซงมกฎเกณฑและวธการเขยนทแนนอน ภาษาคอมพวเตอรมววฒนาการมาโดยลาดบ โดยแบงออกเปน ภาษาเครอง (Machine language) ภาษาแอสเซมบล (Assembly language) ซงเปนภาษาชนตา (Low level language) และภาษาชนสง (High level language) เชน ภาษาเบสก (Basic), พาสคาล (Pascal), โคบอล (Cobol), ฟอรแทรน (Fortran) และภาษาซ (C) เปนตน สาหรบตวอยางในตาราเลมน จะเขยนดวยภาษาฟอรแทรน ซงเปนภาษาทถกออกแบบมาสาหรบงานคานวณทางดาน

PH615 10

Page 16: Computational Physics in Thai

ปจจบนมโปรแกรมประยกตทใชในการคานวณทางดานวทยาศาสตรหลายโปรแกรมดวยกน ซงนกศกษาสามารถใชงานไดงายกวาการเขยนดปรแกรมดวยภาษาฟอรแทรน เชน MATLAB, Mathematica, Mathcad และ Maple ซงเปนโปรแกรมประยกต มประสทธภาพในการคานวณสง และยงมความสามารถในการเขยนกราฟ ซงทาใหนกศกษาเขาใจระบบททาการศกษาไดดยงขน นอกจากนนนกศกษาอาจใชโปรแกรม Excel ชวยในการเกบและวเคราะหขอมล หรอใชโปรแกรม Sigma Plot เพอใชในการเขยนกราฟ ซงทงสองโปรแกรมยงมโมดลยอยชวยในการวเคราะหทางสถตไดดวย อยางไรกตามการศกษาการแกปญหาทางฟสกส โดยเรมตนจากการเขยนโปรแกรมดวยภาษาฟอรแทรนจะทาใหนกศกษาเขาใจวธการศกษาการแกปญหาไดดและถกตองยงขน สาหรบคอมไพเลอรทใชกบโปรแกรมภาษาฟอรแทรนตามตวอยางในหนงสอเลนน ชอ FORCE 2.0 เปนทงคอมไพเลอรและอดเตอรบนวนโดว เปนโปรแกรมฟร นกศกษาสามารถดาวนโหลดไดจากอนเตอรเนท www.forceproject.hpq.com.hr โดยไมตองเสยคาใชจายใด ๆ ทงสน

PH615 11

Page 17: Computational Physics in Thai

แบบฝกหดบทท 1

1. จงพมพและ execute โปรแกรมภาษาฟอรแทรน COUNT โดยสงเอาทพทเปน hard copy

* A program to count the number of students who pass a quiz, * that is, score 60 or above. The total number of quiz scores * is less than 100. The end of the list is marked by entering * a negative value for the Latest score. PROGRAM COUNT NTOT = 0. NPASS= 0. 1 DO 3 I=1,100 PRINT *,'Enter next quiz score' 2 READ *,SCORE NTOT = NTOT+1 IF(SCORE.GT.100.) THEN PRINT *,'Input Error' PRINT *,'You entered a score greater than 100' PRINT *,'Re-enter the correct value' NTOT = NTOT-1 GO TO 2 ELSEIF(SCORE.LT.0.) THEN NPASS = NPASS+1 ELSEIF(SCORE.LT.0.) THEN GO TO 99 ENDIF 3 CONTINUE 99 PRINT *,'The number of students who passed was ',NPASS PRINT *,'out of ',NTOT STOP END

2. จงพมพและ execute โปรแกรมภาษาฟอรแทรน GASTBL โดยสงเอาทพทเปน

hard copy

PROGRAM GASTBL * INTEGER TC REAL P,V,T,R,N N = 1.0 R = 8.3144 * * Print overall headings outside of all Loops * PRINT *,'Pressure of a container of ',N,' moles of ideal gas.' * * Outer Loop is the volume of the container, from 0.1 to 0.5 m^3 * DO 2 V=0.1,0.5,0.1 * * For each value of the outer Loop parameter, print a heading

PH615 12

Page 18: Computational Physics in Thai

* for this table. * PRINT *,'Pressure as a function of Temperature for V = ',V PRINT *,' P(n/m^2) T(K) ' PRINT *,' ---------- ----------' * * The inner Loop steps through the range of Temperatures and * prints one Line for each value of T from 0 to 100 degrees C * in steps of 10 degrees. * DO 1 TC = 0, 100, 10 T = TC+273. P = N*R*T/V PRINT *,P,T 1 CONTINUE 2 CONTINUE STOP END

3. สารกมมนตรงสสลายตวตามสมการ

dtdC = -kC

เมอ C = ความเขมของสาร (Bq/L) คาคงท (day-1) K =

จงใชวธการเชงตวเลขแกสมการน เมอ t = 0 ถง 1 วน และ k = 0.1 d-1 ใหใช

Δt = 0.1 และความเขมขนของสารท t = 0 เทากบ 10 Bq/L

PH615 13

Page 19: Computational Physics in Thai

บทท 2 รากของสมการ

สมการ ax2 + bx + c = 0 จะมรากของสมการคอ x = ซงสามารถ

ทจะหาคาไดงาย ๆ แตยงมสมการอนอกมากมายซงไมสามารถหารากไดในลกษณะเชนน a

acbb2

42 −±−

กอนทจะมการประดษฐคอมพวเตอรขน มวธการหลายวธในการหารากของสมการ บางกรณสามารถคานวณรากไดโดยตรง เชน ตวอยางขางบน แตบางกรณไมสามารถหารากได เชน ฟงกชน f(x) = e-x – x ซงจะตองหารากโดยการประมาณคา วธการหนงทใชกนคอ วธกราฟ โดยการเขยนกราฟฟงกชน f(x) กบคา x จดทกราฟตดแกน x จะเปนคารากของสมการ ทจดน f(x) = 0 ซงเราจะไดศกษากนอยางละเอยดตอไป

2.1 วธกราฟ (Graphical method) วธการอยางงายในการหารากของสมการ f(x) = 0 กคอวธกราฟ โดยการเขยนกราฟคาของฟงกชนทางแกน y และ ตวแปร x ทางแกน x จดทกราฟตดแกน x จะเปนคารากของสมการ การหาคารากของสมการโดยวธกราฟเชนน จะไดคารากโดยประมาณเทานน แตกเปนวธการทมประโยชนมากในการตรวจสอบวารากทหาดวยวธการอน มความถกตองใกลเคยงกบคาทแทจรงหรอไม ตวอยางท 2.1 จงอาศยวธกราฟหาคาสมประสทธ c เมอนกกระโดดรมมวล m=68.1 กโลกรม กระโดดลงมาจากลกบอลลนทลอยอยนง โดยมความเรว 40 เมตร/วนาท เมอเวลาผานไป 10 วนาท

วธทา จากกฎขอทสองของนวตน ความเรวของนกกระโดดรมเมอเวลาผานไป t วนาท คอ

v(t) = c

gm (1 – e-(c/m)t )

กาหนดให f(c) = (1 – e-(c/m)t ) - v c

gm

PH 615 15

Page 20: Computational Physics in Thai

จากโจทย t = 10, g = 9.8, v = 40 และ m = 68.1

( )( )68.1 109.8(68.1)( ) 1 40cf c ec

−= − −

( )0.146843667.38( ) 1 40cf c ec

−= − −

แทนคา c ตาง ๆ กน เพอทจะนาไปเขยนกราฟ โดยใชคา c ททาให f(c) เปนทงคาบวกและคาลบ

c ( )f c 4 8 12 16 20

34.115 17.653 6.067 -2.269 -8.401

นาคาในตารางไปเขยนกราฟ จะไดกราฟดงรป 2.1

รปท 2.1 กราฟระหวาง f(c) และ c เพอหาคารากของสมการ

PH 615 16

Page 21: Computational Physics in Thai

จากกราฟจะเหนไดวา c ตดแกน x ทจดระหวาง x = 12 และ x = 16 จากการประมาณดวยสายตาจะไดคา c ประมาณ 15 เพอการตรวจสอบ แทนคา c = 15 ลงในสมการ จะได

= ( )15f ( )( )15146843.0115

38.667 −− e - 40

= - 0.4248319 ซงมคาใกลกบศนย แตไมตรงทเดยว เนองจากวาเปนการประมาณดวยสายตา

2.2 วธแบงสวน (Bisection method)

รปท 2.2 วธแบงสวน

วธแบงสวนเปนวธการงายทสดในการหารากของสมการ สามารถกระทาไดโดยใชเครองคดเลขหรออาจเขยนโปรแกรมคอมพวเตอรมาชวยในการคานวณ ขนตอนในการคานวณมดงตอไปน

PH 615 17

Page 22: Computational Physics in Thai

ขนท 1 เลอกคาตา และคาสง โดยมคารากอยระหวางคาทงสอง นนคอ lx ux

( ) ( ) 0l uf x f x <

ขนท 2 ประมาณคาราก โดย rx

2l u

rx xx +

=

ขนท 3 หาวารากอยระหวางชวงใด ถา รากจะอยในชวงลางให ตงคา u rx x= แลวกลบไปขนท 2 ก) ( ) ( ) 0l uf x f x <

ถา รากจะอยในชวงบนให ตงคา l rx x= แลวกลบไปขนท 2 ข) ( ) ( ) 0l uf x f x >

ค) ถา รากจะเทากบ rx ใหหยดโปรแกรม ( ) ( ) 0l uf x f x =

ทาตามขนตอนดงกลาวซาอกหลาย ๆ ครง จนกระทง คารากมคาใกลเคยงกบคารากทแทจรง ตวอยางท 2.2 ใชวธแบงสวน หาคา c ในตวอยางทผานมา

วธทา ขนแรกเดาคา c สองคา ซงทาให มเครองหมายตรงกนขามในทนได 12 และ 16

( )f c

ดงนน 12 16 14

2rx += =

เปนคาโดยประมาณ มความผดพลาด = 5.3 % (เทยบกบคาทแทจรงของราก คอ 14.7802)

ขนตอไปคานวณผลคณ

(12) (14) 6.067(1.569) 9.517f f = =

PH 615 18

Page 23: Computational Physics in Thai

ซงมคามากกวาศนย ไมมการเปลยนเครองหมายระหวางจดตาและจดกงกลาง ดงนนราก จะอยระหวาง 14 และ 16

14 16 15

2rx += =

ซงจะมความคลาดเคลอน = 1.5 % tε

เราสามารถทาซาอก คอ

( ) ( )1514 ff = 1.569(-0.425) = -0.666 ดงนน รากจะอยระหวาง 14 และ 15 จะได

= rx2

1514 + = 14.5

ซงจะมคาความคลาดเคลอน = 1.9 % tε

นกศกษาสามารถทาซาหลาย ๆ ครง จนกวาจะไดความถกตองตามทตองการ ตวอยางท 2.3 จงเขยนโปรแกรมภาษาฟอรแทรนเพอหารากของสมการ -0.4x2+2.2x+4.7 โดยวธแบงสวน ใช xl = 5 และ xu = 10 วธทา

*-- program bisec *-- *-- The interval a<x<b is known to contain a root of f(x).the *-- estimate of the root is successively improved by finding in *-- which half of the interval the root lies and then replacing *-- the original interval by that half. *---------------------------------------------------------------

PH 615 19

Page 24: Computational Physics in Thai

*Variables *-- REAL X1,X2,X3,F1,F2,F3,A,B,EPS,D,DO INTEGER I,IMAX *-- *-- X1,X3,X2 -- The left,right,and midpoint ot the *-- currert interval *-- F1,F3,F2 -- The function evaluated at these points *-- A,B,DO -- The left and right ends of the original *-- interval and its width (b-a) *-- EPS -- convergence criterion based on the size of *-- the current interval *-- D -- The widih of the current interval (x3-x1) *-- IMAX -- Maximum number of iterrations *-- I -- Current iteration counter *----------------------------------------------------------------- *Statement function for the function f(x) *-- F(X) = -0.4*X*X+2.2*X+4.7 *-- *-- (or any other function) *---------------------------------------------------------------- * Initialization *-- PI = ACOS(-1.) WRITE(*,*)'Enter limits of original search interval, a,b' READ (*,*)A,B WRITE(*,*)'Enter convergence criterion (EPS) and', + 'max.no.of iterations (IMAX)'

PH 615 20

Page 25: Computational Physics in Thai

READ (*,*)EPS,IMAX *-- WRITE(*,*)'The original search interval is from',A,'to',B WRITE(*,*)'The convergence criterion is (interval)<',EPS WRITE(*,*)'The maximum No. of iterations allowed is ',IMAX WRITE(*,*) *-- X1 = A X3 = B F1 = F(X1) F3 = F(X3) DO = (B-A) *-- *-- First verify that there is indeed a root in the interval. *-- IF(F1*F3.GT.0.0)THEN WRITE(*,*)'No root in original interval. It is possible' WRITE(*,*)'that the function is incorrectly coded.' ELSE * Begin Iterations loop *-- DO 3I = 1,IMAX *-- *-- Find which half of the interval containsthe root *-- X2 = .5*(X1+X3) F2 = F(X2) IF(F1*F2.LE.0.0)THEN *--

PH 615 21

Page 26: Computational Physics in Thai

*-- Root is in left half, so *-- D = (X2-X1)/2. F3 = F2 X3 = X2 ELSE *-- *-- Root is in right half,so *-- D = (X3-X2)/2. F1 = F2 X1 = X2 ENDIF *-- *-- Test for convergence *-- IF(D .LT.EPS)THEN *-- *-- Success path *-- WRITE(*,*)'A root at X = ',X2,'was foud' WRITE(*,*)'in',I,'iterations' WRITE(*,*)'The value of the function is ',F2 STOP 'success' ENDIF 3 CONTINUE *-------------------------------------------------------- * Excessive Iterations Path *--

PH 615 22

Page 27: Computational Physics in Thai

WRITE(*,*)'After ',IMAX,' iterations, no root was fouad' WRITE(*,*)' Within the convergence criterion' STOP 'failure' ENDIF END เอาทพทจากโปรแกรม คอ ดงนน รากของสมการ คอ 7.12890625 ตวอยางท 2.4 การประมาณความคลาดเคลอนของวธแบงสวนใหนกศกษาทาซาตามตวอยาง 2.2 จนกระทงความคลาดเคลอนนอยกวา = 0.5 % sε

วธทา จากตวอยาง 2.2 ราก คอ 14 และ 15 ความคลาดเคลอนจากการประมาณ

15 14 100% 6.667%15aε−

= =

ความคลาดเคลอนจรง = 1.5 % ดงนน tε a tε ε>

PH 615 23

Page 28: Computational Physics in Thai

iteration lx ux rx aε tε

1 2 3 4 5 6

12 14 14 14.5 14.75 14.75

16 16 15 15 15 14.875

14 15 14.5 14.75 14.875 14.8125

6.667 3.448 1.695 0.840 0.422

5.279 1.487 1.896 0.204 0.641 0.219

จากตารางจะเหนวาหลงจาก iteration ครงท 6 0.5%aε <

ตวอยางท 2.5 จงคานวณรากของสมการ f(x) = lnx2 – 0.7 โดยวธแบงสวนใช xl = 0.5 และ xu = 2 วธทา ใชโปรแกรมตามตวอยาง 2.3 โดยเปลยน f(x) = lnx2 – 0.7 เอาทพทจากโปรแกรม คอ รากของสมการคอ 1.34375

PH 615 24

Page 29: Computational Physics in Thai

2.3 วธฟอลสโพซชน (False-Position Method)

วธฟอลสโพซชน หรอ เรกกลาฟอลไซ(regula falsi ) หรอ การอนเทอโพเลทเชงเสน (linear interpolation ) หาจากความชนของกราฟ

( )

lr

i

xxxf−

= ( )ur

u

xxxf−

( )( ) ( )( )l r u u r lf x x x f x x x− = − ( ) ( ) ( ) ( )r l u u l l ux f x f x x f x x f x− = −⎡ ⎤⎣ ⎦

หารดวย ( ) ( )l uf x f x−

( ) ( )( ) ( )

u l l ur

l u

x f x x f xx

f x f x−

=−

( )( ) ( )

( )( ) ( )

u l l ur

l u l u

x f x x f xx

f x f x f x f x= −

− −

( )

( ) ( )( )

( ) ( )u l l u

r u ul u l u

x f x x f xx x x

f x f x f x f x= + − −

− −

( )

( ) ( )( )

( ) ( )u u l u

r ul u l

x f x x f xx x

uf x f x f x f x= + −

− −

หรอ

= rx ( )( )( ) ( )ul

uluu xfxf

xxxfx−

−−

จะได ( )( )( ) ( )

u l ur u

l u

f x x xx x

f x f x−

= −−

PH 615 25

Page 30: Computational Physics in Thai

ใชเปนสตรในการคานวณหารากของสมการ

รปท 2.3 วธฟอลสโพซชน ตวอยาท 2.6 จงใชวธฟอลสโพซชน หารากของสมการในตวอยาง 2.1

วธทา เดา และ 12lx = 16ux =

first iteration ( )lf x = 6.0069 12lx =

16ux = ( )uf x = -2.2688

ดงนน ( )( )

2.2688 12 1616 14.9113

6.0669 2.2688rx− −

= − =− −

ซงม True error = 0.89 % tε

PH 615 26

Page 31: Computational Physics in Thai

second iteration ( ) ( ) 1.5426l rf x f x = −

ดงนนรากอยในชวงแรก 12lx = ( )lf x = 6.0069 14.9113ux = ( )uf x = -0.2543

( )( )

2.2688 12 14.911314.9113 14.7942

6.0669 -0.2543rx− −

= − =−

ซงมความคลาดเคลอนจรง = 0.09 และความคลาดเคลอนประมาณ = 0.79 % ถาตองการความถกตองมากกวาน ใหทาการ iterate ตอไป จะเหนไดวา วธ false – position จะไดคารากของสมการเรวกวาวธแบงสวนมาก กราฟรปท 2 เปรยบเทยบ % ความคลาดเคลอนกบจานวนครงของการ iterate โดยวธ false – postion กบวธแบงสวน

รปท 2.4 เปรยบเทยบความคลาดเคลอน

PH 615 27

Page 32: Computational Physics in Thai

ขอเสยของวธฟอลสโพซชน ถงแมวาวธฟอลสโพซชน จะใหคาตอบไดเรวกวาวธแบงสวน แตในบางกรณ วธ ฟอลสโพซชนอาจจะไมใหคาตอบเลย ดงตวอยางตอไปน ตวอยางท 2.7 ใชวธแบงสวนและวธฟอลสโพซชนหาคารากของสมการ

( ) 10 1f x x= −

ระหวาง และ 1.3 0x = วธทา a) วธแบงสวน

iteration lx ux rx tε aε

1 2 3 4 5

0 0.65 0.975 0.975 0.975

1.3 1.3 1.3 1.1375 1.05625

0.65 0.975 1.1375 1.05625 1.015625

35 2.5 13.8 5.6 1.6

100.0 33.3 14.3 7.7 4.0

PH 615 28

Page 33: Computational Physics in Thai

b) วธฟอลสโพซชน

iteration lx ux rx tε aε

1 2 3 4 5

0 0.09430 0.18176 0.26287 0.33811

1.3 1.3 1.3 1.3 1.3

0.09430 0.18176 0.26287 0.33811 0.40788

90.6 81.8 73.7 66.2 59.2

48.1 30.9 22.3 17.1

จะเหนไดวาสาหรบฟงกชนน วธฟอลสโพซชนเขาถงคาตอบไดชากวาวธแบงสวนมาก ทาซาถง 5 ครง ยงมคามากถง 59.2 % กคอยงไมไดคาตอบทถกตอง tε

PROGRAM MOD_FALSE_POSITION WRITE(*,*)'ENTER XL,XR,ES' READ (*,*)XL,XR,ES FXL= FUNC(XL) FXR= FUNC(XR) TEST = FXL*FXR IF(TEST.GE.0.) THEN WRITE(6,10) STOP ENDIF 10 FORMAT(/, ' ROOT IS OUT OF RANGE') XD = XL WRITE(6,20) 20 FORMAT(/, 3X, 'ITERATION NO. ', 9X, 'X', /) DO 100 ITER=1,3000 FXL = FUNC(XL)

PH 615 29

Page 34: Computational Physics in Thai

FXR = FUNC(XR) XFP = (XL*FXR - XR*FXL)/(FXR - FXL) FX1 = FUNC(XFP) TEST = FX1*FXR IF(TEST.LT.0.) THEN XL = XFP ELSE XR = XFP ENDIF WRITE(6,30) ITER, XFP 30 FORMAT(1X, I8, 8X, E14.6) TL = ABS((XFP-XD)*100./XFP) IF(TL.LT.ES) GO TO 50 XD = XFP 100 CONTINUE WRITE(6,40) 40 FORMAT(/, ' ROOT CAN NOT FIND IN THIS CONDITION') GO TO 200 50 WRITE(6,60) XFP 60 FORMAT(/, 3X, 'THE ROOT IS ', E14.6) 200 CONTINUE STOP END *----------------------------------------------------- FUNCTION FUNC(X) FUNC = (X**10)-1 RETURN END

PH 615 30

Page 35: Computational Physics in Thai

เอาทพทจากโปรแกรม คอ รากของสมการ คอ 1.0 โดยทาการ iterate ถง 63 ครงจงจะไดคาตอบถกตอง

PH 615 31

Page 36: Computational Physics in Thai

รปท 2.5 กราฟ f(x) = x10 – 1 แสดงการลของวธฟอลสโพซชน

ตวอยางท 2.8 จงเขยนโปรแกรมภาษาฟอรแทรนเพอหารากของสมการ f(x) = -26 + 82.3x – 88x2 + 45.4x3 – 9x4 + 0.65x5

โดยวธฟอลสโพซชน ใช xl = 0.5, xa = 1 วธทา โปรแกรมทเขยนโดยวธฟอลสโพซชน คอ PROGRAM FALSE_POSITION WRITE(*,*)'ENTER XL,XR,ES' READ (*,*)XL,XR,ES FXL= FUNC(XL) FXR= FUNC(XR) AA = FXL*FXR IF(AA.GE.0.) THEN WRITE(6,10) STOP ENDIF 10 FORMAT(/, ' ROOT IS NOT IN THE GIVEN RANGE') X10LD = XL

PH 615 32

Page 37: Computational Physics in Thai

DO 100 I=1,500 FXL = FUNC(XL) FXR = FUNC(XR) X1 = (XL*FXR - XR*FXL)/(FXR - FXL) FX1 = FUNC(X1) AA = FX1*FXR IF(AA.LT.0.) THEN XL = X1 ELSE XR = X1 ENDIF TOL = ABS((X1-X10LD)*100./X1) IF(TOL.LT.ES) GO TO 40 X10LD = X1 100 CONTINUE WRITE(6,20) 20 FORMAT(/, ' ROOT CAN NOT BE REACHED FOR', + ' THE GIVEN CONDITION' ) GO TO 50 40 WRITE(6,30) X1 30 FORMAT(/, 3X, 'THE ROOT IS ', E14.6) 50 CONTINUE STOP END FUNCTION FUNC(X) FUNC = -26+82.3*X-88*X*X+45.4*X**3-9*X**4+0.65*X**5 RETURN END

PH 615 33

Page 38: Computational Physics in Thai

เอาทพทจากโปรแกรม คอ ดงนน รากของสมการ คอ 0.579331 ตวอยางท 2.9 ความเรวของนกกระโดดรมเปนไปตามสมการ

v(t) = c

gm (1 – e-(c/m)t )

เมอ g = 9.8, c = 14 กก./วนาท จงหามวล m ของนกกระโดดรม ซงมความเรว v = 35 เมตร/วนาท เมอเวลาผานไป 7 วนาท ใชวธฟอลสโพซชนทมความถกตองถง 0.01% วธทา ใชโปรแกรมตามตวอยาง 2.8 โดยเปลยน f(x) เปน v(t) เอาทพทจากโปแกรม คอ ดงนน มวลของนกกระโดดรม = 63.65 กโลกรม

PH 615 34

Page 39: Computational Physics in Thai

ตวอยางท 2.10 จงหารากของสมการ x3.3 = 79 โดยวธฟอลสโพซชน ใช xl = 3, xu = 4 และ = 0.0001 sε

วธทา ใชโปรแกรมตามตวอยาง 2.8 โดยเปลยน f(x) เอาทพทจากโปรแกรม คอ ดงนน รากของสมการ คอ 3.7587072849

PH 615 35

Page 40: Computational Physics in Thai

แบบฝกหดบทท 2

จงหารากของสมการ f(x) = - 2 + 7x – 5x2 + 6x3 1.

ก) โดยวธกราฟ โดยวธแบงสวน โดยใช xl = 0 และ xu = 1 และทาหาร iterate จน aε นอยกวา 10%

ข)

จงหารากของสมการ f(x) = - 26 + 82.3x – 88x2 + 45.4x3 – 9x4 + 0.65x5 2. ก) โดยวธกราฟ ข) โดยวธแบงสวน โดยใช xl = 0.5 และ xu = 1.0 ค) โดยวธฟอลสโพซชน

จงหารากของสมการ f(x) = - 11 - 22x + 17x2 – 2.5x3 3. ก) โดยวธกราฟ ข) โดยวธฟอลสโพซชน

PH 615 36

Page 41: Computational Physics in Thai

บทท 3 การแกสมการ

ในบทนจะกลาวถงการแกสมการโดยวธเปด สมการอาจจะเปนชนดเชงเสนหรอไมเปน เชงเสน โดยทสมการจะอยในรป f(x) = 0 วธเปดจะเรมตนจากจดเดยวหรอสองจดทไมจาเปนตองครอบคลมคารากของสมการ ทาใหงายตอการคานวณ เพราะวาไมจาเปนทจะตองเดาคารากของสมการกอน

3.1 วธทาซาจดคงท (Simple fixed-point iteration)

จดรปแบบฟงกชน f(x) = 0 ใหอยในรป x = g(x) โดยมคา x อยทางดานซายของสมการ

เชน 2 2 3 0x x− + =

2 32

xx +⇒ =

หรอ sin 0x =

sinx x x⇒ = +

ตวอยางท 3.1 จงหารากของสมการ ดวยวธ วธทาซาจดคงท ( ) xf x e− x= −

PH 615 37

Page 42: Computational Physics in Thai

วธทา

ixi ex −= =1 เรมตนจาก 0=ix

i ix ( )%aε ( )%tε

0 1 2 3 4 5 6 7 8 9 10

0 1.000000 0.367879 0.692201 0.500473 0.606244 0.545396 0.579612 0.560115 0.571143 0.564879

100.0 171.8 46.9 38.3 17.4 11.2 5.90 3.48 1.93 1.11

100.0 76.3 35.1 22.1 11.8 6.89 3.83 2.20 1.24 0.705 0.399

ซงรากทแทจรง คอ 0.56714329

ตวอยางท 3.2 จงเขยนโปรแกรมคานวณรากของสมการ f(x) = sin( ) – x โดยวธ x

ทาซาจดคงท โดยใช x0 = 0.5 และทาซาจนกระทง εa ≤ 0.01 วธทา PROGRAM FIX_PT WRITE(*,*)'ENTER X0,ES,IMAX'

PH 615 38

Page 43: Computational Physics in Thai

READ(*,*)X0,ES,IMAX WRITE(*,*)'THE ROOT IS',FIXPT(X0,ES,IMAX) STOP END *--------------------------------------------- FUNCTION FIXPT(X0,ES,IMAX) *--------------------------------------------- F(X)= SIN(SQRT(X)) *--------------------------------------------- XR = X0 DO 10 ITER=1,IMAX XROLD = XR XR = F(XROLD) IF (XR.NE.0.) THEN EA = ABS((XR-XROLD)/XR)*100. ENDIF IF (EA.LT.ES) THEN GO TO 20 ENDIF 10 CONTINUE 20 FIXPT=XR RETURN END *---------------------------------------------- เอาทพทจากโปรแกรม คอ

PH 615 39

Page 44: Computational Physics in Thai

รากของสมการ = 0.768606246 ตวอยางท 3.3 แยกสมการ เปน 2 สวน แลวหารากของสมการโดยวธกราฟ 0xe x− − =

วธทา 1y x= และ 2

xy e−=

x 1y 2y 0.0 0.2 0.4 0.6 0.8 1.0

0.0 0.2 0.4 0.6 0.8 1.0

1.000 0.819 0.670 0.549 0.449 0.368

นาคาในตารางไปเขยนกราฟ จดตดของกราฟทงสองเสน คอ รากของสมการ ในทนจะไดรากของสมการ x = 0.57

PH 615 40

Page 45: Computational Physics in Thai

รปท 3.1 การแกสมการโดยวธกราฟ

3.2 วธนวตน-ราฟสน (The Newton-Raphson Method)

เปนวธการหารากของสมการทนยมมากทสด เรมจากการเดาคาราก xi จากนนลากเสนสมผสจากจดน จดทเสนสมผสตดกบแกน x จะเขาใกลคารากของสมการมากขน ดงแสดงในรปท 3.2

รปท 3.2 วธนวตน-ราฟสน

PH 615 41

Page 46: Computational Physics in Thai

( ) ( )1

0ii

i i

f xf x

x x +

−′ =

สามารถจดไดเปน

⇒ = 1+ix ( )( )i

ii xf

xfx′

ซงเปนสตรทใชในการคานวณหารากโดยวธนวตน-ราฟสน การคานวณสตรขางบนน จะเรมตนจากอนกรมเทยเลอร

( ) ( ) ( ) ( )0 0

22

0 0 02

1 .....2x x x x

df d ff x f x x x x xdx dx= =

= + − + − +

( ) ( ) ( ) ( )0 0

22

0 0 02

10 .....2x x

df d ff x f x x x x xdx dx

= = + − + − +

ถารากใกล 0x

( ) ( ) ( ) ( ) ( )( )0

0 0 0 00x

df0f x f x x x f x f x x

dx′= = + − − = − x

หรอ

( )( )

00

0

f xx x

f x= −

( )( )1

ii i

i

f xx x

f x+⇒ = −′

ตวอยางท 3.4 จงใชวธนวตน-ราฟสน หารากของสมการ

โดยทใชคาเรมตน x = 0 และจงเขยนโปรแกรมโดยวธนวตน-ราฟสน เพอหารากของสมการ เปรยบเทยบกบคาทไดจากเครองคดเลข

( ) xf x e x−= −

PH 615 42

Page 47: Computational Physics in Thai

วธทา ( )xf ′ = 1−− −xe

1 1

i

i

xi

i i x

e xx xe

+ −

−= −

− −

เรมจาก x = 0

i ix ( )%tε

0 1 2 3 4

0 0.500000000 0.566311003 0.567143165 0.567143290

100 11.8 0.147 0.0000220 < 810−

จากตารางจะเหนไดวา การคานวณจะลเขาหารากของสมการไดรวดเรวมาก

โปรแกรมหารากของสมการโดยวธนวตน-ราฟสน คอ PROGRAM NEW-RAPH WRITE(*,*)'ENTER X0,ES,IMAX' READ(*,*)X0,ES,IMAX WRITE(*,*)'THE ROOT IS',FIXPT(X0,ES,IMAX) STOP END *---------------------------------------------------- FUNCTION FIXPT(X0,ES,IMAX) *---------------------------------------------------- F(X)= X-((EXP(-X)-X)/(-EXP(-X)-1.)) *---------------------------------------------------- XR = X0 DO 10 ITER=1,IMAX XROLD = XR

PH 615 43

Page 48: Computational Physics in Thai

XR = F(XROLD) IF (XR.NE.0.) THEN EA = ABS((XR-XROLD)/XR)*100. ENDIF IF (EA.LT.ES) THEN GO TO 20 ENDIF 10 CONTINUE 20 FIXPT=XR RETURN END *---------------------------------------------------- เอาทพทจากโปรแกรม คอ ดงนน รากของสมการ x = 0.567143142 จากเครองคดเลข x = 0.567143290 ซงมคาใกลเคยงกนมาก

ตวอยางท 3.5 การวเคราะหความคลาดเคลอนโดยวธนวตน-ราฟสน ความคลาดเคลอนจะเปนสดสวนกบกาลงสองของความคลาดเคลอนเดม

( )( )

2, 1 ,2

rt i t i

r

f xE E

f x+

′′−≅

จงคานวณความคลาดเคลอน หลงจากการทาซาหลาย ๆ ครง วธทา

PH 615 44

Page 49: Computational Physics in Thai

( ) xf x e x−= −

( ) 1xf x e−′ = − − ( )0.56714329 0.56714329 1.56714329rx f ′= ⇒ = − ( ) xf x e−′′ = ( )0.56714329 0.56714329f ′′ =

จะได ( )

2 2, 1 , ,

0.56714329 0.180952 1.56714329t i t i t iE E E+ ≅ − =−

จากตวอยาง 3.4 ,0 0.56714329tE =

จะได ( )2

,1 0.18095 0.56714329 0.0582tE ≅ =

ซงมคาใกลกบความคลาดเคลอนจรง

สาหรบ iteration ตอไป

( )2,2 0.18095 0.06714329 0.0008158tE ≅ =

ซงมคาใกลกบความคลาดเคลอนจรง 0.0008323

สาหรบ iteration ทสาม

( )2,3 0.18095 0.0008323 0.000000125tE ≅ =

สาหรบ iteration ทส

( )2 15,4 0.18095 0.000000125 2.83 10tE −≅ = ×

ขอเสยของวธนวตน-ราฟสน

PH 615 45

Page 50: Computational Physics in Thai

ถงแมวาวธนวตน-ราฟสน จะมประสทธภาพมาก แตในบางกรณกอาจจะมปญหาในการคานวณได ดงตวอยางตอไปน

ตวอยาง 3.6 จงหารากทเปนบวกของ โดยวธนวตน-ราฟสน โดยใช

( ) 10 1f x x= −

0 0.5x =

วธทา 10

1 9

110i

i ii

xx xx+

−= −

Iteration x 0 1 2 3 4 5

Μ

0.5 51.56 46.485 41.8365 37.65285 33.887565

Μ 1.0000000

จะเหนไดวา สาหรบฟงกชนน การคานวณโดยวธ Newton – Raphson จะเขาถงคาตอบไดชามาก ตวอยางท 3.7 จงเขยนโปรแกรมเพอหารากของสมการ f(x) = - 0.9x2 + 1.7x + 2.5 โดย

วธ ก) วธทาซาจดคงท วธนวตน-ราฟสน ข)

PH 615 46

Page 51: Computational Physics in Thai

ใช x0 = 5, εa < 0.01 % แลวเปรยบเทยบคารากจากทงสองวธ

วธทา ก) วธทาซาจดคงท PROGRAM FIX_PT6 WRITE(*,*)'ENTER X0,ES,IMAX' READ(*,*)X0,ES,IMAX WRITE(*,*)'THE ROOT IS',FIXPT(X0,ES,IMAX) STOP END *--------------------------------------------- FUNCTION FIXPT(X0,ES,IMAX) *--------------------------------------------- F(X)= ((0.9*X*X)-2.5)/1.7 *--------------------------------------------- XR = X0 DO 10 ITER=1,IMAX XROLD = XR XR = F(XROLD) IF (XR.NE.0.) THEN EA = ABS((XR-XROLD)/XR)*100. ENDIF IF (EA.LT.ES) THEN GO TO 20 ENDIF 10 CONTINUE 20 FIXPT=XR RETURN END

PH 615 47

Page 52: Computational Physics in Thai

*---------------------------------------------- เอาทพทจากโปรแกรม คอ ดงนน จงไมสามารถหารากของสมการได ถา x0 = 5

วธนวตน-ราฟสน ข)

PROGRAM NR WRITE(*,*)'ENTER X0,ES,IMAX' READ(*,*)X0,ES,IMAX WRITE(*,*)'THE ROOT IS',FIXPT(X0,ES,IMAX) STOP END *--------------------------------------------- FUNCTION FIXPT(X0,ES,IMAX) *--------------------------------------------- F(X)= X-((-0.9*X*X+1.7*X+2.5)/(-0.9*X+1.7)) *--------------------------------------------- XR = X0 DO 10 ITER=1,IMAX XROLD = XR XR = F(XROLD) IF (XR.NE.0.) THEN EA = ABS((XR-XROLD)/XR)*100.

PH 615 48

Page 53: Computational Physics in Thai

ENDIF IF (EA.LT.ES) THEN GO TO 20 ENDIF 10 CONTINUE 20 FIXPT=XR RETURN END *---------------------------------------------- เอาทพทจากโปรแกรม คอ ดงนน รากของสมการ คอ - 0.971214533 ซงเปนคาทถกตอง จะเหนไดวา วธนวตน-ราฟสนใหคารากทถกตอง สวนวธทาซาจดคงทจะหาคารากไมได เนองจากคาเรมตน x0 = 5 จะไมลเขาหาคาตอบ แตเมอเปลยนคา x0 ใหเขาใกลคารากของสมการ คอใช x0 = - 1.0 จะไดรากของสมการ x = - 1.02089381 ซงเปนคาทถกตอง เอาทพทเมอเปลยน x0 เปน - 1.0 คอ

ตวอยางท 3.8 จงเขยนโปรแกรมหารากของสมการโดยวธนวตน-ราฟสน

PH 615 49

Page 54: Computational Physics in Thai

f(x) = - 2.0 + 6x – 4x2 + 0.5x3 โดยใชคาเรมตน x0 = 4.2 และ x0 = 4.43 แลวเปรยบเทยบคารากทคานวณได วธทา อาศยโปรแกรมจากตวอยาง 3.7 โดยเปลยน f(x) เอาทพทจากโปรแกรม เมอ x0 = 4.2 คอ จะไดรากของสมการคอ x = 0.47457245 เอาทพทจากโปรแกรม เมอ x0 = 4.43 คอ จะไดรากของสมการคอ x = - 0.01764003 จะเหนไดวา รากของสมการเมอใชจดเรมตนตางกน จะไดคาตางกน วธการนวตน- ราฟสน จงขนกบคาเรมตนมาก

PH 615 50

Page 55: Computational Physics in Thai

3.3 วธซแคน (The Secant Method) วธนวตน-ราฟสนมขอเสยทจะตองคานวณอนพนธกอน สวนวธซแคนใชการประมาณคาอนพนธโดยใช

( ) ( ) ( )1

1

i ii

i i

f x f xf x

x x−

−′ ≅

ยายขางสมการจะได

( )( )( ) ( )

11

1

i i ii i

i i

f x x xx x

f x f x−

+−

−= −

รปท 3.3 วธซแคน

ตวอยางท 3.9 โดยวธซแคน จงหาคารากของ โดยใช คาเรมตน และ และเขยนโปรแกรมเพอหาคาราก

( ) xf x e x−= −

0 1.0x = 1 0x− =

วธทา รากแทจรงของสมการ คอ 0.56714329

PH 615 51

Page 56: Computational Physics in Thai

Iteration ครงท 1

1 0x− = ( )1 1.0000f x− =

0 1.0x = ( ) 0.63212f x = −

( )( )1

0.63212 0 11 0.61270

1 0.63212x

− −= − =

− −

8.0%tε = Iteration ครงท 2

0 1x = ( )0 0.63212f x = −

1 0.61270x = ( )1 0.07081f x = −

( )( )2

0.07081 1 0.612700.61270 0.56384

0.63212 0.07081x

− −= − =

− − −

0.58%tε = Iteration ครงท 3 1 0x− = ( )1 0.07081f x = −

2 0.56384x = ( )2 0.00518f x =

( )( )3

0.00518 0.61270 0.563840.56384 0.56717

0.07081 0.00518x

−= − =

− −

0.0048%tε =

โปรแกรมคานวณรากของสมการโดยวธซแคน คอ PROGRAM SECANT WRITE(*,*)'ENTER DELTA,X0,ES,IMAX' READ(*,*) D,X0,ES,IMAX WRITE(*,*)'THE ROOT IS',SECANT(D,X0,ES,IMAX) STOP

PH 615 52

Page 57: Computational Physics in Thai

END *--------------------------------------------- FUNCTION SECANT(D,X0,ES,IMAX) *--------------------------------------------- F(X)= EXP(-X)-X *--------------------------------------------- XR = X0 DO 10 ITER=1,IMAX XROLD = XR DX = D*XROLD XR = XROLD-((DX*F(XROLD))/(F(XROLD+DX)-F(XROLD))) IF (XR.NE.0.) THEN EA = ABS((XR-XROLD)/XR)*100. ENDIF IF (EA.LT.ES) THEN GO TO 20 ENDIF XI1= XROLD 10 CONTINUE 20 SECANT=XR RETURN END *---------------------------------------------- เอาทพทจากโปรแกรม คอ ดงนน รากของสมการคอ 0.567143261 ซงตรงกบการคานวณโดยใชเครองคดเลข

PH 615 53

Page 58: Computational Physics in Thai

ตวอยางท 3.10 จงหารากของสมการ f(x) = sinx + cos(1 + x2) – 1 โดยวธซแคน โดยใช ก) xi-1 = 1.0 และ xi = 3.0

ข) xi-1 = 1.5 และ xi = 2.5 วธทา โปรแกรมการคานวณอกแบบหนง คอ PROGRAM SECANT CALL SECANT(XI1,X0,ES,XR,EA,IMAX) STOP END * ***************************************** FUNCTION F(X) F = SIN(X)+COS(1.+X*X)-1. RETURN END * ***************************************** * SECANT METHOD *////////////////////////////////////////////////////////////////////// SUBROUTINE SECANT(XI1,X0,ES,XR,EA,IMAX) WRITE(6,2) 2 FORMAT(' SECANT METHOD',/,' ENTER XI-1,X0,ES,IMAX') READ(*,*) XI1,X0,ES,IMAX WRITE(6,100) 100 FORMAT(/,8X,'ITER',15X,'XR', + 15X,'%EA') XR = X0 DO 10 I=1,IMAX XROLD = XR * -------------------------------------------------- XR=XROLD-(F(XROLD)*(XI1-XROLD))/(F(XI1)-F(XROLD)) * -------------------------------------------------- IF (XR.NE.0.) THEN EA = ABS((XR-XROLD)/XR)*100.

PH 615 54

Page 59: Computational Physics in Thai

ENDIF XI1= XROLD WRITE(6,200)I,XR,EA 200 FORMAT(I10,10X,F15.9,6X,E10.3) IF (EA.LT.ES) THEN GO TO 20 ENDIF 10 CONTINUE WRITE(6,40) 40 FORMAT(/) WRITE(*,*)' CANNOT FIND ROOT FOR THE GIVEN CONDITIONS' GO TO 30 20 WRITE(6,300) 300 FORMAT(/) WRITE(*,*)'THE ROOT IS ',XR 30 RETURN END *------------------------------------------------------------ เอาทพทจากโปรแกรม คอ

PH 615 55

Page 60: Computational Physics in Thai

ซงไมสามารถหารากของสมการได เมอเปลยน xi-1 = 1.5 และ xi = 2.5 จะไดเอาทพท ซงจะไดรากของสมการ x = 2.5322125 ตวอยางท 3.11 จงใชวธฟอลส-โพซชนและวธซแคน หารากของ โดยใช คาเรมตน และ

( ) lnf x = x

0 1.0x = 1 0x− =

วธทา

วธฟอลส-โพซชน

iteration xl ux rx 1 2 3

0.5 0.5 0.5

5.0 1.8546 1.2163

1.8546 1.2163 1.0585

PH 615 56

Page 61: Computational Physics in Thai

วธซแคน

iteration 1ix − ix 1ix + 1 2

0.5 5.0

5.0 1.8546

1.8546 -0.10438

Diverge⇒ จะหาคารากไมได

รปท 3.4 แสดงการ diverge 3.4 วธปรบปรงซแคน (Modified Secant Method)

PH 615 57

Page 62: Computational Physics in Thai

แทนทจะใชคาสองคาในการหาอนพนธ วธนจะใชคา δxi แทน

( ) ( ) ( )i i ii

i

f x x f xf x

xδδ

+ −′ ≅

เมอ δ = ชวงทมขนาดเลก

( )( ) ( )1

i ii i

i i i

x f xx x

f x x f xδδ+ = −

+ −

ตวอยางท 3.12 ใชวธปรบปรงซแคน หาคารากของ โดยใช คา δ = 0.01 และ คารากทถกตอง คอ 0.56714329 และเขยนโปรแกรมหารากของสมการดวย

( ) xf x e x−= −

0 1.0x =

วธทา

Iteration ครงท 1

0 1.0x = ( )0 0.63212f x = −

0 0 1.01x xδ+ = ( )0 0 0.64578f x xδ+ = − ( )

( )1

0.01 0.632121 0.537263

0.64578 0.63212x

−= − =

− − −

5.3%tε = Iteration ครงท 2

0 0.537263x = ( )0 0.047083f x =

0 0 0.542635x xδ+ = ( )0 0 0.038579f x xδ+ = ( )

1

0.537263 0.632120.537263 0.56701

0.038579 0.047083x

−= − =

0.0236%tε = Iteration ครงท 3

0 0.56701x = ( )0 0.000209f x =

0 0 0.567143x xδ+ = ( )0 0 0.00867f x xδ+ = −

PH 615 58

Page 63: Computational Physics in Thai

( )1

0.00567 0.0002090.56701 0.567143

0.00867 0.000209x = − =

− −

52.365 10 %tε−= ×

โปรแกรมทใชคานวณโดยวธปรบปรงซแคน คอ PROGRAM MODSECANT WRITE(*,*)'ENTER DELTA,X0,ES,IMAX' READ(*,*) D,X0,ES,IMAX WRITE(*,*)'THE ROOT IS',SECANT(D,X0,ES,IMAX) STOP END *--------------------------------------------- FUNCTION SECANT(D,X0,ES,IMAX) *--------------------------------------------- F(X)= EXP(-X)-X *--------------------------------------------- XR = X0 DO 10 ITER=1,IMAX XROLD = XR DX = D*XROLD XR = XROLD-((DX*F(XROLD))/(F(XROLD+DX)-F(XROLD))) IF (XR.NE.0.) THEN EA = ABS((XR-XROLD)/XR)*100. ENDIF IF (EA.LT.ES) THEN GO TO 20 ENDIF XI1= XROLD 10 CONTINUE

PH 615 59

Page 64: Computational Physics in Thai

20 SECANT=XR RETURN END *---------------------------------------------- เอาทพทจากโปรแกรม คอ ดงนน รากของสมการคอ x = 0.567143261 ซงมคาตรงกบคารากทถกตอง ตวอยางท 3.13 จงหารากของสมการ f(x) = x3 – 6x2 + 11x – 6.1

วธนวตน-ราฟสน (xi = 3.5, Iteration = 100) ก) วธซแคน (xi-1 = 2.5 และ xi = 3.5, Iteration = 3) ข)

วธปรบปรงซแคน (xi = 3.5, δ = 0.02, Iteration = 3) ค) วธทา ก) วธนวตน-ราฟสน เอาทพทคอ

PH 615 60

Page 65: Computational Physics in Thai

ข) วธซแคน

เอาทพทคอ

ค) วธปรบปรงซแคน

PH 615 61

Page 66: Computational Physics in Thai

เอาทพทคอ ไดรากของสมการคอ x = -3.050811291

จะเหนไดวาวธปรบปรงซแคนเขาหาคาตอบไดเรวทสด

3.5 รากซา (Multiple roots)

รากซาเปนจดทฟงกชนสมผสกบแกน x ตวอยางเชน

f(x) = (x - 3)(x - 1)(x - 1) จะมรากซาสองคา (double root) ท x = 1 และ f(x) = x4 – 6x3 + 12x2 - 10x + 3 = (x - 3)(x - 1)(x - 1) (x - 1) จะมรากซาสามคา(triple root) ท x = 1 มวธการสองวธในการหารากซาของสมการ

PH 615 62

Page 67: Computational Physics in Thai

รปท 3.5 รากซา

วธท 1 วธนวตน-ราฟสน

ใชสมการ

1+ix = ( )( )i

ii xf

xfmx′

เมอ m = จานวนราก ในการหารากของสมการ

วธท 2 วธปรบปรงนวตน-ราฟสน

กาหนดให

( )xu = ( )( )xfxf′

จะเกดคารากทเดยวกบ f(x)

PH 615 63

Page 68: Computational Physics in Thai

1+ix = ( )( )i

ii xu

xux′

เนองจาก

( )xu′ = ( ) ( ) ( ) ( )( )[ ]2xf

xfxfxfxf′

′′−′′

ดงนน

1+ix = ( ) ( )( )[ ] ( ) ( )xfxfxf

xfxfxi ′′−′′

− 2

ใชสมการนในการหารากของสมการ ตวอยางท 3.14 จงใชวธมาตรฐาน และ วธปรบปรงนวตน-ราฟสน หาคารากของสมการ

( ) 3 25 7 3f x x x x= − + −

วธทา ( ) 7103 2 +−=′ xxxf

วธท 1 มาตรฐาน

1+ix = 7103

3752

23

+−−+−

−ii

iiii xx

xxxx

i xi %tε 0 1 2 3 4 5 6

0 0.4285714 0.6857143 0.8328654 0.9133290 0.9557833 0.9776551

100 57 31 17 8.7 4.4 2.2

PH 615 64

Page 69: Computational Physics in Thai

วธท 2 วธปรบปรงนวตน-ราฟสน

( )( )( ) ( )( )

3 2 2

1 2 3 2

5 7 3 3 10 7

3 10 7 5 7 3 6 10i i i i i

i ii i i i i i

x x x x xx x

x x x x x x+

− + − − += −

− + − − + − −

i ix %tε

0 1 2 3

0 1.105263 1.003082 1.000002

100 11

0.31 0.00024

หารากท x = 3

i standard %tε modified %tε

0 1 2 3 4 5

4 3.4 3.1

3.008396 3.000075 3.000000

33 13 3.3 0.29

0.0025 2 x 10-7

4 2.636364 2.820225 2.961728 2.998479 2.999998

33 12 6.0 1.3

0.051 7.7 x 10-3

โปรแกรมตอไปน คานวณรากของสมการชนดรากซา โดยวธมาตรฐาน PROGRAM STDNEWRAPH CALL MNR(X0,ES,XR,EA,IMAX) STOP END * ***************************************** FUNCTION F(X) F = X**3.+2.*X*X-5.*X+3 RETURN END

PH 615 65

Page 70: Computational Physics in Thai

* ---------------------------------------- FUNCTION DIF_F(X) DIF_F = 3.*X*X+4.*X-5. RETURN END * ***************************************** *////////////////////////////////////////////////////////////////////// * MULTIPLE NEWTON RAPHSON METHOD (M = ...) *////////////////////////////////////////////////////////////////////// SUBROUTINE MNR(X0,ES,XR,EA,IMAX) WRITE(6,2) 2 FORMAT(' MODIFIED NEWTON RAPHSON METHOD ',/, + ' ENTER XI,ES,IMAX') READ(*,*) X0,ES,IMAX WRITE(6,100) 100 FORMAT(/,8X,'ITER',12X,'XR', + 15X,'%EA') *-------------------------------------------------------------- M = 2. XR = X0 DO 10 I=1,IMAX XROLD = XR XR = XROLD-M*((F(XROLD))/(DIF_F(XROLD))) IF (XR.NE.0.) THEN EA = ABS((XR-XROLD)*100./XR) ENDIF IF (EA.LT.ES) THEN GO TO 20 ENDIF *------------------------------------------------------------- WRITE(6,200)I,XR,EA 200 FORMAT(I10,10X,F12.9,6X,E10.3)

PH 615 66

Page 71: Computational Physics in Thai

10 CONTINUE WRITE(6,40) 40 FORMAT(/) WRITE(*,*)' CANNOT FIND ROOT FOR THE GIVEN CONDITIONS' GO TO 50 20 WRITE(6,300) 300 FORMAT(/) WRITE(*,*)'THE ROOT IS ',XR 50 RETURN END *------------------------------------------------------------ โปรแกรมตอไปน คานวณรากของสมการชนดรากซา โดยวธปรบปรงนวตน-ราฟสน PROGRAM MODNEWRAPH CALL MNR2(X0,ES,XR,EA,IMAX) STOP END * ***************************************** FUNCTION F(X) F = X**3.+2.*X*X-5.*X+3 RETURN END * ---------------------------------------- FUNCTION DIF_F(X) DIF_F = 3.*X*X+4.*X-5. RETURN END * ----------------------------------------

PH 615 67

Page 72: Computational Physics in Thai

FUNCTION DIFF_F(X) DIFF_F = 6.*X+4. RETURN END * ***************************************** *////////////////////////////////////////////////////////////////////// * MODIFIED NEWTON RAPHSON *////////////////////////////////////////////////////////////////////// SUBROUTINE MNR2(X0,ES,XR,EA,IMAX) WRITE(6,2) 2 FORMAT(' MODIFIED NEWTON RAPHSON ',/, + ' ENTER XI,ES,IMAX') READ(*,*) X0,ES,IMAX WRITE(6,100) 100 FORMAT(/,8X,'ITER',15X,'XR', + 15X,'%EA') XR = X0 DO 10 I=1,IMAX XROLD = XR *---------------------------------------------------------------------- XR = XROLD-( (F(XROLD)*DIF_F(XROLD))/ + ((DIF_F(XROLD))**2.-F(XROLD)) ) *---------------------------------------------------------------------- IF (XR.NE.0.) THEN EA = ABS((XR-XROLD)*100./XR) ENDIF WRITE(6,200)I,XR,EA 200 FORMAT(I10,10X,F15.9,6X,E10.3) IF (EA.LT.ES) THEN GO TO 20 ENDIF 10 CONTINUE

PH 615 68

Page 73: Computational Physics in Thai

WRITE(6,40) 40 FORMAT(/) WRITE(*,*)' CANNOT FIND ROOT FOR THE GIVEN CONDITIONS' GO TO 50 20 WRITE(6,300) 300 FORMAT(/) WRITE(*,*)'THE ROOT IS ',XR 50 RETURN END

3.6 ระบบหลายสมการไมเปนเชงเสน (Systems of nonlinear equations) ถามหลายสมการ และมตวแปรมากกวา 1 ตว

1 1 2 3

2 1 2 3

( , , , ...., ) 0( , , , ...., ) 0

n

n

f x x x xf x x x x

=

=

Μ Μ 1 2 3( , , ,...., ) 0n nf x x x x =

เชน

2

2

103 5

x xyy xy+ =

+ = 7

สามารถเขยนไดเปน

2

2

( , ) 10 0( , ) 3 57 0

u x y x xyv x y y xy

= + − =

= + − =

ผลเฉลย คอ คา x และคา y ททาให และ เทากบศนย ( , )u x y ( , )v x y

วธทาซาจดคงท ตวอยางท 3.15 จงหารากของระบบสมการขางบน คารากทถกตองคอ x = 2 และ y = 3 โดยใชคาเรมตน x = 1.5 และ y = 3.5

PH 615 69

Page 74: Computational Physics in Thai

วธทา และ 2

110 i

ii

xxy+

−= 2

1 57 3i iy x+ = − iy

อาศยคาเรมตน x = 1.5 และ y = 3.5

( )210 1.52.21429

3.5x

−= =

ใชคา x นและ y = 3.5 แทนลงไปในคา y ใหมจะได

( )( )257 3 2.21429 3.5 24.37516y = − = −

คาทไดจะdiverge ทาซาครงท 2

( )210 2.214290.20910

24.37516x

−= = −

( )( )257 3 0.20910 24.37516 429.709y = − − − =

ซงจะสงเกตเหนการdivergeอยางชดเจน

ตงสมการในรปใหม

10x xy= − และ 573

yyx−

=

10 1.5(3.5) 2.217945x = − =

( )57 3.5 2.86051

3 2.17945y −= =

10 2.17945(2.86051) 1.94053x = − =

( )57 2.86051 3.049553 1.94053

y −= =

PH 615 70

Page 75: Computational Physics in Thai

ใกลเคยงกบคาจรง x = 2 และ y = 3 โปรแกรมตอไปน คานวณรากของสมการ 2 สมการ โดยวธทาซาจดคงท PROGRAM TWO_EQ_FP CALL TWEQ_ITER(X,Y,IMAX,TOL) STOP END *================================================================= * TWO EQUATION FIXED-POINT ITERATION *================================================================= SUBROUTINE TWEQ_ITER(X,Y,IMAX,TOL) WRITE(6,1) 1 FORMAT(/,17X,'TWO EQUATION FIXED-POINT ITERATION CASE I',/) WRITE(*,*)' ENTER X,Y,IMAX,TOL ' READ(*,*)X,Y,IMAX,TOL WRITE(6,100) 100 FORMAT(/,5X,'ITER',7X,'XR', + 10X,'YR',10X,'ERROR X',5X,'ERROR Y',/) XR=X YR=Y DO 10 I=1,IMAX XROLD=XR YROLD=YR X=XR Y=YR CALL X_NEW(X,Y,XR) X=XR CALL Y_NEW(X,Y,YR) Y=YR

PH 615 71

Page 76: Computational Physics in Thai

*------------------------------------------------* * DEFINE ERROR *------------------------------------------------* ERX = ABS((XR-XROLD)*100./XR) ERY = ABS((YR-YROLD)*100./YR) *------------------------------------------------- WRITE(6,200)I,XR,YR,ERX,ERY 200 FORMAT(I7,2X,2F10.4,3X,2E12.3) *-------------------------------------------------* * CHEAK ERROR *-------------------------------------------------* IF (ERX.LT.TOL) THEN WRITE(6,500) GO TO 300 ENDIF IF (ERY.LT.TOL) THEN WRITE(6,600) GO TO 300 ENDIF *-------------------------------------------------- 10 CONTINUE WRITE(6,400) 400 FORMAT(/,5X,'PROGRAM TERMINATE WITH MAXIMUM ITERATION') 500 FORMAT(/,5X,'PROGRAM TERMINATE WITH ERROR X < TOL') 600 FORMAT(/,5X,'PROGRAM TERMINATE WITH ERROR Y < TOL') 300 RETURN END *================================================================= SUBROUTINE X_NEW(X,Y,XR) * *************************** XR=Y+X*X-0.5 * ***************************

PH 615 72

Page 77: Computational Physics in Thai

RETURN END SUBROUTINE Y_NEW(X,Y,YR) * *************************** YR=X*X-5.*X*Y * *************************** RETURN END *================================================================= วธนวตน-ราฟสน

จากอนกรมเทยเลอร

( )1 1( ) ( ) ( )i i i i if x f x x x f x+ + ′= + −

1( )( )

ii i

i

f xx xf x+ = −′

ซงกคอสมการของ นวตน-ราฟสน

สาหรบระบบสมการไมเปนเชงเสน

( ) ( )1 1 1i i

i i i i i iu uu u x x y yx y+ + +

∂ ∂= + − + −

∂ ∂

และ

( ) ( )1 1 1i i

i i i i i iv vv v x x y yx y+ + +

∂ ∂= + − + −

∂ ∂

จะได

1 1i i i

i i i i iu u ux y u x y iux y x+ + y

∂ ∂ ∂+ = − + +

∂ ∂ ∂∂∂

PH 615 73

Page 78: Computational Physics in Thai

1 1i i i

i i i i iv v vx y v x y ivx y x+ + y

∂ ∂ ∂+ = − + +

∂∂ ∂ ∂ ∂

1

i ii i

i ii i i i

v uu vy yx x u v u v

x y y

+

x

∂ ∂−

∂ ∂= −∂ ∂ ∂ ∂

−∂ ∂ ∂ ∂

1

i ii i

i ii i i i

u vv ux xy y u v u v

x y y x

+

∂ ∂−

∂ ∂= −∂ ∂ ∂ ∂

−∂ ∂ ∂ ∂

ตวอยางท 3.11 จงใชวธ multiple-equation Newton-Raphson หารากของสมการในตวอยางทผานมา คารากทถกตองคอ x = 2 และ y = 3 โดยใชคาเรมตน x = 1.5 และ y = 3.5 วธทา

0 2 2(1.5) 3.5 6.5u x yx

∂= + = + =

0 1.5u xy

∂= =

2 20 3 3(3.5) 36.75v xx

∂= = =

( )( )0 1 6 1 6 1.5 3.5 32.5v xyy

∂= + = + =

หา determinant ของJacobian ของ iteration ครงแรก = 6.5(32.5)-1.5(36.75) = 156.125

คาของฟงกชนหาไดจาก

20 =(1.5) +1.5(3.5)-10=-2.5u

20 =3.5+3(1.5) (3.5) -57=1.625v

แทนลงในสมการ จะได

PH 615 74

Page 79: Computational Physics in Thai

( ) ( )2.5 32.5 1.625 1.5

1.52 2.03603156.125

x− −

= − =

( ) ( )( )1.625 6.5 2.5 36.75

3.5 2.84388156.125

y− −

= − =

จะเหนไดวา x,y จะเขาสคาทแทจรง x = 2 และ y = 3

โปรแกรมตอไปน คานวณรากของสมการ 2 สมการ โดยวธนวตน-ราฟสน PROGRAM TWO_EQ_NR CALL TWEQNR(X,Y,IMAX,U,V,DUX,DUY,DVX,DVY) STOP END *================================================================= * TWO EQUATION VERSION OF THE NEWTON-RAPHSON *================================================================= SUBROUTINE TWEQNR(X,Y,IMAX,U,V,DUX,DUY,DVX,DVY) WRITE(6,1) 1 FORMAT(/,17X,'TWO EQUATION VERSION OF THE NEWTON-RAPHSON',/) WRITE(*,*)' ENTER X,Y,IMAX,TOL ' READ(*,*)X,Y,IMAX,TOL WRITE(6,100) 100 FORMAT(/,5X,'ITER',7X,'XR', + 10X,'YR',10X,'ERROR X',5X,'ERROR Y',/) XR=X YR=Y DO 10 I=1,IMAX XROLD=XR YROLD=YR X=XR Y=YR

PH 615 75

Page 80: Computational Physics in Thai

CALL FUV(X,Y,U,V) CALL DIFF_UV(X,Y,DUX,DUY,DVX,DVY) * ------------------------------------------- XR=XROLD-((U*DVY-V*DUY)/(DUX*DVY-DUY*DVX)) YR=YROLD-((V*DUX-U*DVX)/(DUX*DVY-DUY*DVX)) * ------------------------------------------- *------------------------------------------------* * DEFINE ERROR *------------------------------------------------* ERX = ABS((XR-XROLD)*100./XR) ERY = ABS((YR-YROLD)*100./YR) *------------------------------------------------- WRITE(6,200)I,XR,YR,ERX,ERY 200 FORMAT(I7,2X,2F12.6,3X,2E12.3) *-------------------------------------------------* * CHEAK ERROR *-------------------------------------------------* IF (ERX.LT.TOL) THEN IF (ERY.LT.TOL) THEN WRITE(6,500) GO TO 300 ENDIF ENDIF *-------------------------------------------------- 10 CONTINUE WRITE(6,400) 400 FORMAT(/,5X,'PROGRAM TERMINATE WITH MAXIMUM ITERATION') 500 FORMAT(/,5X,'PROGRAM TERMINATE WITH ERR X AND ERR Y < TOL') 300 RETURN END *================================================================= SUBROUTINE FUV(X,Y,U,V)

PH 615 76

Page 81: Computational Physics in Thai

* ************************ U= X*X-X+Y-0.5 V= X*X-5.*X*Y-Y * ************************ RETURN END *================================================================= SUBROUTINE DIFF_UV(X,Y,DUX,DUY,DVX,DVY) * ************************ DUX= 2.*X-1 DUY= 1. DVX= 2.*X-5.*Y DVY= -5.*X-1. * ************************ RETURN END *=================================================================

PH 615 77

Page 82: Computational Physics in Thai

แบบฝกหดบทท 3

1. จงใชวธทาซาจดคงท หารากของสมการ f(x) = sin( ) – x ใชคาเรมตน x0 = 0.5

และ ทาซาหลายๆ ครง จนกระทง εa ≤ 0.01%

x

จงใชวธ ก) ทาซาจดคงท ข) นวตน-ราฟสน หารากของสมการ f(x) = - 0.9x2 +

1.7x + 2.5 โดยใช x0 = 5 และคานวณจงกระทง εa ≤ 0.01%

2.

จงหารากของสมการ f(x) = - 2.0 + 6x - 4x2 + 0.5x3 3. ก) วธกราฟ

วธ นวตน-ราฟสน จนกระทง εa ≤ 0.01% ข)จงหารากของสมการ f(x) = - 11 - 22x + 17x2 - 2.5x3 4.

ก) วธกราฟ ข) วธ Secant

จงหารากของสมการ x33 = 79 โดยวธปรบปรงซแคน โดยท εa = 0. 1% และทา

การเปลยนคา δ เพอดความแตกตาง

5.

ฟงกชน x3 + 2x2 - 5x + 3 ม double root ท x = 1 จงหารากนโดยวธ 6. ก) มาตรฐานนวตน-ราฟสน ปรบปรงนวตน-ราฟสน ทงสองวธ เปรยบเทยบการลเขาสคาราก และใช x0

= 0.2 ข)

7. จงหารากของสมการสองสมการตอไปน โดยวธ ก) ทาซาจดคงท ข) นวตน-ราฟสน

x = y + x2 – 0.5 y = x2 – 5xy

โดยใชคาเรมตน x = y = 1.0

PH 615 78

Page 83: Computational Physics in Thai

บทท 4 ระบบสมการ

ในบทนจะกลาวถงการแกระบบสมการ ซงสามารถเขยนเปนรปแบบทวไป คอ

11 1 12 2 1 1

21 1 22 2 2 2

n n

n n

a x a x a x ba x a x a x b

+ + + =+ + + =

K

K

M M 1 1 2 2n n nn na x a x a x b+ + + =K n

4.1 วธกราฟ

พจารณาสมการ a11x1 + a12x2 = b1 a21x1 + a22x2 = b2

แกสมการทงสองหาคา x2 ไดดงน

11 12 1

12 12

a bx xa a

⎛ ⎞= − +⎜ ⎟

⎝ ⎠

21 22 1

22 22

a bx xa a

⎛ ⎞= − +⎜ ⎟

⎝ ⎠

PH 615 83

Page 84: Computational Physics in Thai

ตวอยางท 4.1 จงใชวธกราฟแกสมการ 3x1 + 2x2 = 18

- x1 + 2x2 = 2 วธทา

x2 = 23

− x1 + 9

x2 = 21 x1 + 1

นาสมการทงสองไปเขยนกราฟ ทจดตด x1 = 4 และ x2 = 3 ซงเปนคาตอบของสมการ

รป 4.1 วธกราฟ

ตวอยางท 4.2 จงใชวธกราฟแกสมการ 2x2 - 6x2 = -18 - x1 + 8x2 = 40

ตรวจสอบคาตอบโดยแทนคากลบลงในสมการ

PH 615 84

Page 85: Computational Physics in Thai

วธทา กาหนดให จากสมการขางตน เขยนใหมไดเปน xx =1 yx =2

1862 −=− yx 1826 1 −−=− xy 331 +=xy ( ) 3

3+=

xxf

⇒ ⇒ ⇒

408 =+− yx 408 2 += xy 582 +=xy ( ) 5

8+=

xxg

นาไปเขยนกราฟ จะได x 50− 49.99−, 50..:=

f x( )x3

⎛⎜⎝

⎞⎟⎠

3+:= g x( )x8

⎛⎜⎝

⎞⎟⎠

5+:=

60 40 20 0 20 40 60

20

10

10

20

f x( )

g x( )

x

จะไดวา 6.91 == xx ( ) ( ) 2.62 === xgxfx เมอนาคา และ ทไดไปแทนลงในสมการโจทย จะได 1x 2x

( ) ( ) 182.666.92 −=−

( ) ( ) 402.686.9 =+−

PH 615 85

Page 86: Computational Physics in Thai

ซงทาใหสมการเปนจรง ดงนน 6.91 =x

2.62 =x

เปนคาตอบของระบบสมการ

4.2 วธใช หลกของเครเมอร (Cramer’s Rule)

เปนวธการทสามารถชวยแกสมการทมจานวนนอยไดงาย

[ ]11 12 13

21 22 23

31 32 33

a a aA a a a

a a a

⎛ ⎞⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠

cocfficientmatrix

11 12 13

21 22 23

31 32 33

a a aD a a a

a a a= Determinant

22 23 21 23 21 2211 12 13

31 3232 33 31 33

a a a a a aa a a

a aa a a a= − +

ตวอยางท 4.3 จงหาคา Determinant ของระบบในตวอยางท 4.1

วธทา

( ) ( )3 2

3 2 2 1 81 2

D = = − −−

=

PH 615 86

Page 87: Computational Physics in Thai

หลกของเครเมอร เปนวธการคานวณหาผลเฉลยของระบบสมการทมจานวนไมมาก

นก เชน ถาเรามสมการ 3 สมการและมตวแปรทตองการหาคา 3 คา จะได

= 1x Daabaabaab

33323

23222

13121

= 2xD

abaabaaba

33331

23221

13111

= 3xD

baabaabaa

33231

22221

11211

เมอ D = 333231

232221

131211

aaaaaaaaa

ตวอยางท 4.4 จงอาศยหลกของเครเมอร แกสมการ

1 2 3

1 2 3

1 2 3

0.3 0.52 0.010.5 1.9 0.670.1 0.3 0.5 0.04

x x xx x xx x x

+ + = −+ + =+ + = −

PH 615 87

Page 88: Computational Physics in Thai

วธทา

( ) ( ) ( )0.3 0.52 10.5 1 1.9 0.3 0.07 0.52 0.06 1 0.05 0.00220.1 0.3 0.5

D = = − − + = −

ไมเนอร (Minor) คอ

( ) ( )1

1 1.91 0.5 1.9 0.3 0.07

0.3 0.5A = = − = −

( ) ( )2

0.5 1.90.5 0.5 1.9 0.1 0.06

0.1 0.5A = = − =

( ) ( )3

0.5 10.5 0.3 1 0.1 0.05

0.1 0.3A = = − =

1

0.01 0.52 10.67 1 1.90.44 0.3 0.5 0.03178 14.9

0.0022 0.0022x

−= =

− −= −

2

0.3 0.01 10.5 0.67 1.90.1 0.44 0.5 0.0649 29.5

0.0022 0.0022x

−= =

− −= −

3

0.3 0.52 0.010.5 1 0.670.1 0.3 0.44 0.04356 19.8

0.0022 0.0022x

− −= =

− −=

PH 615 88

Page 89: Computational Physics in Thai

4.3 วธกาจดตวแปร การแกสมการอกวธหนงกคอ การกาจดตวแปรจากสมการ

11 1 12 2 1

21 1 22 2 2

a x a x ba x a x b

+ =+ =

คณสมการแรกดวย a21 ⇒ a11a21x1 + a12a21x2 = b1a21

คณสมการสองดวย a11 ⇒ a11a21x1 + a12a21x2 = b1a21 แลวลบกนจะได

22 11 2 12 21 2 2 11 1 21a a x a a x b a b a− = − ทาใหเหลอตวแปรเพยงตวเดยว ซงสามารถหาคา ได 2x

11 2 21 12

11 22 12 21

a b a bxa a a a

−=

และ 21 1 12 2

111 22 12 21

a b a bxa a a a

−=

เทยบกบจากหลกของเครเมอร

1 12

2 22 1 22 12 21

11 12 11 22 12 21

21 22

b ab a b a a bxa a a a a aa a

−= =

11 1

21 2 11 1 2 212

11 12 11 22 12 21

21 22

a ba b a b b axa a a a a aa a

−= =

จะไดผลเฉลยตรงกนทงสองวธ

PH 615 89

Page 90: Computational Physics in Thai

ตวอยางท 4.5 จงใชวธกาจดตวแปร หาคา จากสมการ 1 2,x x

1 2

1 2

3 2 12 2

x xx x

8+ =− + =

วธทา

( ) ( )( ) ( )1

2 18 2 24

3 2 2 1x

−= =

− −

( ) ( )( ) ( )2

3 2 1 183

3 2 2 1x

− −= =

− −

ซงเทากบวธกราฟ

4.4 วธ Naive Gauss Elimination

วธการนใชขยายมาจากวธกาจดตวแปรจากหวขอทผานมา โดยสามารถนาไปใชกบเซทของสมการทมหลายสมการได วธนเหมาะในการคานวณโดยใชคอมพวเตอร จะสามารถหาคาตวแปรไดอยางรวดเรว แตกมขอเสยเมอสมประสทธตงหนงตวใดเปนศนย กจะทาใหเกดการหารดวยศนย ซงจะไมสามารถคานวณตอไปได วธการนจงมชอเรยกวา “naive” Gauss elimination

สมมตวา มเซตของ n สมการ

11 1 12 2 1 1

21 1 22 2 2 2

.... ......................9.12.... .....................9.12

n n

n n

a x a x a x b aa x a x a x b b

+ + + =+ + + =

M M 1 1 2 2 .... .....................9.12n n nn n na x a x a x b c+ + + =

PH 615 90

Page 91: Computational Physics in Thai

กาจดตวแปร

คณสมการดวย ⇒ = 11

21

aa

nmxaaaxa

aaxa

11

21212

11

21121 ...+++ 1

11

21 baa

ลบออกจากสมการทสองจะได

21 21 2122 12 2 2 1 2 1

11 11 11

..... n na aa a x a a x ba a

⎛ ⎞ ⎛ ⎞− + + − = −⎜ ⎟ ⎜ ⎟

⎝ ⎠ ⎝ ⎠

a ba

หรอ

22 2 2 2.... n na x a x b ′′ ′+ + =

ทาซาตอไปอกโดยคณดวย แลวจะได 31

11

aa

a11x1 + a12x2 + …+ a1nxn = b1

a/22 x2 +…+ a/

2n xn = b2/

a/32 x2 +…+ a/

3n xn = b3/

M M a/

n2 x2 +…+ ann/ xn = bn

/ ใชวธการเชนน ทาซาหลาย ๆ ครงจะได

a11x1 + a12x2 + …+ a1nxn = b1

a/22 x2 +…+ a/

2n xn = b2/

a/33 x3 +…+ a/

3n xn = b3/

M M a//

n3 x3 +…+ a//nn xn = b//

n

PH 615 91

Page 92: Computational Physics in Thai

ทาซาตอไปอกจะได

a11x1 + a12x2 + …+ a1nxn = b1

a/22 x2 +…+ a/

2n xn = b2/

a//33 x3 +…+ a//

3n xn = b// 3

Ο M ( )

nn

nn xa 1− = ( )1−nnb

ซงจะสามารถแทนคายอนกลบเพอหาคา xn กอน

( )

( )

1

1

nn

n nn

bxa

−=

แลวจงหาคา xn-1, xn-2, … จนสดทายจะไดคา x1 ตามตองการ สามารถเขยนเปนสมการทวไปได คอ

( ) ( )

( )

1 1

11

ni i

i ijj i

i iij

b ax

a

− −

= +−

−=

∑ jx เมอ 1, 2,....,1i n n= − −

สรป ขนตอนตาง ๆ ไดดงน

⎥⎥⎥

⎢⎢⎢

3

2

1

333231

232221

131211

ccc

aaaaaaaaa

Forward Elimination

⎥⎥⎥

⎢⎢⎢

′′′

′′′′

3

2

1

33

2322

131211

ccc

aaaaaa

⇓ 3 3 33x c a′′ ′′= ( )3 2 23 3 22x c a x a′ ′= − ′′ Back Substitution ( )1 1 12 2 13 3 11x c a x a x a= − −

PH 615 92

Page 93: Computational Physics in Thai

ตวอยางท 4.5 จงใช Gauss Elimination แกสมการ

0.3x1 - 0.1x2 – 0.2x3 = 7.85

0.1x1 + 7x2 – 0.3x3 = - 19.3

0.3x1 - 0.2x2 + 10x3 = 71.4 วธทา คณสมการดวย 0.1/3 แลวหกออกจากสมการจะได

2 37.00333 0.293333 19.5617x x− = −

คณสมการดวย 0.3/3 แลวหกออกจากสมการจะได

0.3x1 - 0.1x2 – 0.2x3 = 7.85

7.00333x2 – 0.293333x3 = -19.5617

- 0.19000x2 + 10.0200x3 = 70.6150 ตอไปทาให ในสมการหมดไป 2x

คณสมการดวย - 0.19000/7.00333 แลวหกออกจากสมการจะได

0.3x1 - 0.1x2 – 0.2x3 = 7.85

7.00333x2 – 0.293333x3 = -19.5617

10.0200x3 = 70.0843

หาคา จากสมการ 3x

370.0843 7.0000310.0200

x = =

แทน ลงไปในสมการ 3x

( )27.00333 0.293333 7.00003 19.5617x − = −

PH 615 93

Page 94: Computational Physics in Thai

ดงนน

x2 = ( )00333.7

00003.7293333.05617.19 +−

= - 2.5000 แทน และ ลงในสมการจะได 2x 3x

( ) ( )10.3 0.1 2.50000 0.2 7.00003 7.85x − − − = ดงนน

x1 = ( ) ( )3

00003.72.050000.21.085.7 +−+

= 3.0000 ตวอยางท 4.6 จงเขยนโปรแกรมเพอแกสมการ

2x1 – 6x2 = -18 - x1 + 8x2 = 40

วธทา PROGRAM GAUSS_ELE DIMENSION A(50,50),B(50),X(50) PARAMETER (N=2) DATA ((A(I,J),J=1,N),I=1,N)/2.,-6., + -1.,8./ DATA (B(I),I=1,N) /-18.,40./ CALL GAUSS(N,A,B,X) * --------------------------------- WRITE(*,100)

PH 615 94

Page 95: Computational Physics in Thai

100 FORMAT(/, 7X, 'EQUATION NO.', + 7X, 'SOLUTION X', /) DO 20 I=1,N WRITE(*,200) I, X(I) 200 FORMAT(I12, 8X, F16.6) 20 CONTINUE * ---------------------------------- STOP END *--------------------------------------------------------- SUBROUTINE GAUSS(N,A,B,X) DIMENSION A(50,50),B(50),X(50) CALL SCL(N,A,B) DO 100 IP=1,N-1 CALL PIVOT(N,A,B,IP) DO 200 IE=IP+1,N RATIO = A(IE,IP)/A(IP,IP) DO 300 IC=IP+1,N A(IE,IC) = A(IE,IC) - RATIO*A(IP,IC) 300 CONTINUE B(IE)=B(IE)-RATIO*B(IP) 200 CONTINUE DO 400 IE=IP+1,N A(IE,IP)=0. 400 CONTINUE 100 CONTINUE X(N)=B(N)/A(N,N) DO 500 IE=N-1,1,-1 SUM=0.

PH 615 95

Page 96: Computational Physics in Thai

DO 600 IC=IE+1,N SUM=SUM+A(IE,IC)*X(IC) 600 CONTINUE X(IE)=(B(IE)-SUM)/A(IE,IE) 500 CONTINUE RETURN END *---------------------------------------------------------- SUBROUTINE SCL(N,A,B) DIMENSION A(50,50),B(50) DO 10 IE=1,N BIG=ABS(A(IE,1)) DO 20 IC=2,N AMAX=ABS(A(IE,IC)) IF(AMAX.GT.BIG) BIG=AMAX 20 CONTINUE DO 30 IC=1,N A(IE,IC)=A(IE,IC)/BIG 30 CONTINUE B(IE)=B(IE)/BIG 10 CONTINUE RETURN END *--------------------------------------------------------- SUBROUTINE PIVOT(N,A,B,IP) DIMENSION A(50,50),B(50) JP=IP BIG=ABS(A(IP,IP)) DO 10 I=IP+1,N

PH 615 96

Page 97: Computational Physics in Thai

AMAX=ABS(A(I,IP)) IF(AMAX.GT.BIG) THEN BIG=AMAX JP=I ENDIF 10 CONTINUE IF(JP.NE.IP) THEN DO 20 J=IP,N DUMY = A(JP,J) A(JP,J)= A(IP,J) A(IP,J)= DUMY 20 CONTINUE DUMY = B(JP) B(JP) = B(IP) B(IP) = DUMY ENDIF RETURN END *----------------------------------------------------------- เอาทพทคอ

PH 615 97

Page 98: Computational Physics in Thai

4.4.1 ขอเสยของวธ Elimination จะมอย 3 ขอ คอ 1. สมประสทธตวใดตวหนงเปนศนย ทาใหเกดการหารดวยศนย 2. การปดเศษหลาย ๆ ครง ทาใหผลเฉลยคลาดเคลอนไป 3. สมการบางสมการมคาความชนใกลเคยงกน ทาใหไมทราบจดตดทแนนอนได ตวอยางท 4.7 จงแกสมการ

1 2

1 2

2 101.1 2 10.4x x

x x+ =+ =

แลวเปลยนคาสมประสทธของ ในสมการสองเปน 1.05 แลวแกสมการอกครง 1x

วธทา

12(10) 2(10.4) 41(2) 2(1.1)

x −= =

21(10.4) 1.1(10) 3

1(2) 2(1.1)x −= =

เมอเปลยน จาก 1.1 เปน 1.05 จะได 21a

12(10) 2(10.4) 81(2) 2(1.05)

x −= =

21(10.4) 1.1(10) 11(2) 2(1.05)

x −= =

จะเหนไดวา a21 เปลยนไปเพยง 0.05 เทานน แตผลเฉลยมคาแตกตางกนมาก

เนองจากวา ทงสองสมการมความชนใกลเคยงกนมาก

PH 615 98

Page 99: Computational Physics in Thai

พจารณาสมการ

11 1 12 2 1

21 1 22 2 2

11 11 1

12 12

21 22 2

22 22

a x a x ba x a x b

a bx xa aa bx xa a

+ =+ =

= − +

= − +

ถาความชนเกอบจะมคาเทากน

11 21

12 22

a aa a

หรอ

11 22 12 21a a a a≅

11 22 12 21 0a a a a− = ซง เปน Determinant ของระบบสมการเมอนาไปหารเพอหาคาผลเฉลย จะทาใหผลเฉลยมคาเปลยนไปมาก

11 22 12 21a a a a−

ตวอยางท 4.8 ผลของการคณดวยคาคงท เพอทาใหคา determinant มคามากขน จงหา Determinant

ก) 1 2

1 2

3 2 12 2

x xx x+ = 8

− + =

ข) 1 2

1 2

2 101.1 2 10.4x x

x x+ =+ =

ค) ทาซาขอ ข) โดยคณสมการดวย 10

PH 615 99

Page 100: Computational Physics in Thai

วธทา ก) D = 3(2) – 2(-1) = 8

มคามากกวาศนย ใชไดด

ข) D = 1(2) – 2(1.1) = -0.2 มคาเขาใกลศนย ทาใหผลเฉลยคลาดเคลอนไดมาก

ค) คณสมการดวย 10 (ผลเฉลยเทาเดม) 1 2

1 2

10 20 10011 20 104

x xx x+ =+ =

( ) ( )10 20 20 11 20D = − = −

มคามาก โดยทผลเฉลยมคาเหมอนเดม จงเปนวธการทจะทาให D มคามากขน

ตวอยางท 4.9 ให scale สมการในตวอยาง 4.8 โดยสมประสทธมคามากทสดเทากบ 1 แลวคานวณหา Determinant วธทา ก)

1 2

1 2

0.667 60.5 1

x xx x

+ =− + =

( ) ( )1 1 0.667 0.5 1.333D = − − =

ข) 1 2

1 2

0.5 50.55 5.2

x xx x+ =+ =

( ) ( )0.5 1 1 0.55 0.05D = − = −

PH 615 100

Page 101: Computational Physics in Thai

ค) scaling เหมอนขอ ข) 0.05D = − เหมอนกน

4.4.2 วธแกขอเสยของวธ Elimination มอย 2 วธ คอ

1. เพมทศนยมในการคานวณ 2. สลบแถว หรอคอลมน

Partial → สลบแถว

Complete → สลบแถวและคอลมน ตวอยางท 4.10 อาศย Gauss elimination แกสมการ

1 2

1 2

0.0003 3.0000 2.00011.0000 1.0000 1.0000

x xx x+ =+ =

เนองจาก มคาเขาใกลศนย ใหสลบลาดบของสมการ ผลเฉลยทแทจรง คอ

และ 11 0.0003a =

11

3x = 22

3x =

วธทา คณสมการแรกดวย จะได 1

0.0003

1 210.000 6667x x+ =

ทาให หมดจากสมการสอง 1x

2

2

9999 666623

x

x

− = −

=

แทน กลบเขาไปในสมการแรกเพอหา 2x 1x

PH 615 101

Page 102: Computational Physics in Thai

1

22.0001 33

0.0003x

⎛ ⎞− ⎜ ⎟⎝ ⎠=

Significant Figures 2x 1x

Absolute Value of Percent relative

Error for 1x 3 4 5 6 7

0.667 0.6667 0.66667 0.666667 0.6666667

-3.33 0.0000 0.3000 0.330000 0.3330000

1099 100 10 1 0.1

สลบ order ของสมการ ซงจะทาใหไดผลเฉลยของสมการทมความแนนอนกวา

1 2

1 2

1.0000 1.0000 1.00000.0003 3.0000 2.0001

x xx x+ =+ =

จะได 223

x =

และ 1

213

1x

⎛ ⎞− ⎜ ⎟⎝ ⎠=

PH 615 102

Page 103: Computational Physics in Thai

Significant Figures 2x 1x

Absolute Value of Percent relative

Error for 1x 3 4 5 6 7

0.667 0.6667 0.66667 0.666667 0.6666667

0.333 0.3333 0.33333 0.333333 0.3333333

0.1 0.01 0.001 0.0001 0.00001

จะเหนไดวา การสลบ order จะใหผลทนาพงพอใจมากกวา

ตวอยางท 4.11 Scaling

ก) แกสมการโดยใช Gauss elimination และ pivoting 1 2

1 2

2 100,000 100,0002

x xx x

+ =+ =

ข) แกสมการโดยการ Scaling ใหสมประสทธสงสดของแตละแถว = 1 ค) อาศยการ Scaling สมประสทธ เพอทจะพจารณาวา การ pivot จาเปนหรอไม

อยางไรกตามใหแกสมการโดยอาศยสมประสทธคาเดม ใชเลขนยสาคญ 3 หลกคาตอบทถกตอง คอ , หรอถาใชเลข 3 หลก 1 1.00002x = 2 0.99998x = 1 2 1.00x x= =

วธทา

ก) โดยไมใชการ Scale 1 2

2

2 100,000 100,00050,000 50,000x x

x+ =

− = −

ซงจะได , คา มError 100% เนองจากการปดทศนยม 1 1.00x = 2 0.00x = 1x

PH 615 103

Page 104: Computational Physics in Thai

Scaling 1 2

1 2

0.00002 12x x

x x+ =

+ =

ข)

Pivot แถวแรก 1 2

1 2

20.00002 1x x

x x+ =

+ =

จาก Forward elimination ได

1 2

2

21.00

x xx+ ==

จะได ซงตรงกบคาทแทจรง 1 2 1x x= =

ค) สมประสทธของการ Scale บงชวาจาเปนทจะตองใช Pivot เราจะทาการ Pivot

แตใช คาสมประสทธเดม 1 2

1 2

22 100,000 100,000x xx x+ =+ =

จาก Forward elimination ได 1 2

2

2100,000 100,000x x

x+ =

=

ซงจะไดวา 1 2 1x x= =

ดงนนการ Scale เปนประโยชนตอการพจารณาวาPivotจาเปนหรอไม แตไมจาเปนท

จะตอง Scale เพอใหไดคาตอบทถกตอง ตวอยางท 4.12 จงแกสมการตอไปน

0.77x1 + x2 = 14.25 1.2x1 + 1.7x2 = 20 ก) โดยวธกราฟ ข) จากกราฟทได จงพจารณาภาวะของระบบสมการ

ค) จงเขยนโปรแกรมโดยใชวธ Gauss elimination เพอแกสมการน

PH 615 104

Page 105: Computational Physics in Thai

วธทา ก) กาหนดให , จากสมการขางตน เขยนใหมไดเปน xx =1 yx =2

25.1477.0 =+ yx 25.1477.01 +−= xy ( ) 25.1477.0 +−= xxf

⇒ ⇒

207.12.1 =+ yx 7.1

202.12

+−=

xy ( )7.1

202.1 +−=

xxg

นาไปเขยนกราฟ จะได x 50− 49.99−, 50..:=

f x( ) 0.77− x 14.25+:= g x( )1.2− x 20+( )

1.7:=

60 40 20 0 20 40 60

40

20

20

40

60

f x( )

g x( )

x

PH 615 105

Page 106: Computational Physics in Thai

ข) จะไดวา

761482.381 ≅= xx ( ) ( ) 596339.152 −≅== xgxfx

เนองจากวากราฟทงสองมความชนใกลเคยงกน จงทาใหการหาจดตดจากการ

คาดคะเนทาไดยาก คารากของระบบสมการจงเปนเพยงคาประมาณหยาบๆ ค) PROGRAM GAUSS DIMENSION A(50,50),B(50),X(50) PARAMETER (N=2) DATA ((A(I,J),J=1,N),I=1,N)/0.77,1., + 1.2,1.7/ DATA (B(I),I=1,N) /14.25,20./ CALL GAUSS(N,A,B,X) * --------------------------------- WRITE(*,100) 100 FORMAT(/, 7X, 'EQUATION NO.', + 7X, 'SOLUTION X', /) DO 20 I=1,N WRITE(*,200) I, X(I) 200 FORMAT(I12, 8X, F16.6) 20 CONTINUE * ---------------------------------- STOP END *--------------------------------------------------------- SUBROUTINE GAUSS(N,A,B,X) DIMENSION A(50,50),B(50),X(50)

PH 615 106

Page 107: Computational Physics in Thai

CALL SCL(N,A,B) DO 100 IP=1,N-1 CALL PIVOT(N,A,B,IP) DO 200 IE=IP+1,N RATIO = A(IE,IP)/A(IP,IP) DO 300 IC=IP+1,N A(IE,IC) = A(IE,IC) - RATIO*A(IP,IC) 300 CONTINUE B(IE)=B(IE)-RATIO*B(IP) 200 CONTINUE DO 400 IE=IP+1,N A(IE,IP)=0. 400 CONTINUE 100 CONTINUE X(N)=B(N)/A(N,N) DO 500 IE=N-1,1,-1 SUM=0. DO 600 IC=IE+1,N SUM=SUM+A(IE,IC)*X(IC) 600 CONTINUE X(IE)=(B(IE)-SUM)/A(IE,IE) 500 CONTINUE RETURN END *---------------------------------------------------------- SUBROUTINE SCL(N,A,B) DIMENSION A(50,50),B(50) DO 10 IE=1,N BIG=ABS(A(IE,1))

PH 615 107

Page 108: Computational Physics in Thai

DO 20 IC=2,N AMAX=ABS(A(IE,IC)) IF(AMAX.GT.BIG) BIG=AMAX 20 CONTINUE DO 30 IC=1,N A(IE,IC)=A(IE,IC)/BIG 30 CONTINUE B(IE)=B(IE)/BIG 10 CONTINUE RETURN END *--------------------------------------------------------- SUBROUTINE PIVOT(N,A,B,IP) DIMENSION A(50,50),B(50) JP=IP BIG=ABS(A(IP,IP)) DO 10 I=IP+1,N AMAX=ABS(A(I,IP)) IF(AMAX.GT.BIG) THEN BIG=AMAX JP=I ENDIF 10 CONTINUE IF(JP.NE.IP) THEN DO 20 J=IP,N DUMY = A(JP,J) A(JP,J)= A(IP,J) A(IP,J)= DUMY 20 CONTINUE

PH 615 108

Page 109: Computational Physics in Thai

DUMY = B(JP) B(JP) = B(IP) B(IP) = DUMY ENDIF RETURN END *----------------------------------------------------------- ตวอยางท 4.13 จงเขยนโปรแกรมภาษาฟอรแทรนโดยใชวธ Gauss elimination พรอมทง partial pivoting เพอแกสมการตอไปน (ซงมคาตอบคอ x1 = x2 = x3 = 1)

x1 + x2 – x3 = 1

6x1 + 2x2 + 2x3 = 10

-3x1 + 4x2 + x3 = 2 วธทา PROGRAM GAUSS DIMENSION A(50,50),B(50),X(50) PARAMETER (N=3) DATA ((A(I,J),J=1,N),I=1,N)/1.,1.,-1., + 6.,2.,2., + -3.,4.,1./ DATA (B(I),I=1,N) /1.,10.,2./ CALL GAUSS(N,A,B,X) * --------------------------------- WRITE(*,100) 100 FORMAT(/, 7X, 'EQUATION NO.', + 7X, 'SOLUTION X', /) DO 20 I=1,N WRITE(*,200) I, X(I)

PH 615 109

Page 110: Computational Physics in Thai

200 FORMAT(I12, 8X, F16.6) 20 CONTINUE * ---------------------------------- STOP END *--------------------------------------------------------- SUBROUTINE GAUSS(N,A,B,X) DIMENSION A(50,50),B(50),X(50) CALL SCL(N,A,B) DO 100 IP=1,N-1 CALL PIVOT(N,A,B,IP) DO 200 IE=IP+1,N RATIO = A(IE,IP)/A(IP,IP) DO 300 IC=IP+1,N A(IE,IC) = A(IE,IC) - RATIO*A(IP,IC) 300 CONTINUE B(IE)=B(IE)-RATIO*B(IP) 200 CONTINUE DO 400 IE=IP+1,N A(IE,IP)=0. 400 CONTINUE 100 CONTINUE X(N)=B(N)/A(N,N) DO 500 IE=N-1,1,-1 SUM=0. DO 600 IC=IE+1,N SUM=SUM+A(IE,IC)*X(IC) 600 CONTINUE X(IE)=(B(IE)-SUM)/A(IE,IE)

PH 615 110

Page 111: Computational Physics in Thai

500 CONTINUE RETURN END *---------------------------------------------------------- SUBROUTINE SCL(N,A,B) DIMENSION A(50,50),B(50) DO 10 IE=1,N BIG=ABS(A(IE,1)) DO 20 IC=2,N AMAX=ABS(A(IE,IC)) IF(AMAX.GT.BIG) BIG=AMAX 20 CONTINUE DO 30 IC=1,N A(IE,IC)=A(IE,IC)/BIG 30 CONTINUE B(IE)=B(IE)/BIG 10 CONTINUE RETURN END *--------------------------------------------------------- SUBROUTINE PIVOT(N,A,B,IP) DIMENSION A(50,50),B(50) JP=IP BIG=ABS(A(IP,IP)) DO 10 I=IP+1,N AMAX=ABS(A(I,IP)) IF(AMAX.GT.BIG) THEN BIG=AMAX JP=I

PH 615 111

Page 112: Computational Physics in Thai

ENDIF 10 CONTINUE IF(JP.NE.IP) THEN DO 20 J=IP,N DUMY = A(JP,J) A(JP,J)= A(IP,J) A(IP,J)= DUMY 20 CONTINUE DUMY = B(JP) B(JP) = B(IP) B(IP) = DUMY ENDIF RETURN END *----------------------------------------------------------- ตวอยางท 4.14 จงเขยนโปรแกรมเพอแกสมการ

0.5x1 – x2 = -9.5 0.26 x1 - 0.5x2 = -4.7

วธทา อาศยโปรแกรมในตวอยาง 4.13 โดยเปลยนระบบสมการ เอาทพท คอ

PH 615 112

Page 113: Computational Physics in Thai

ตวอยางท 4.5 จงเขยนโปรแกรมโดยวธ naive – Gauss elimination เพอแกสมการ

-12x1 + x2 – x3 = -20

-2x1 - 4x2 + 2x3 = 10

x1 + 2x2 + 2x3 = 25

วธทา อาศยโปรแกรมในตวอยาง 4.13 โดยเปลยนระบบสมการ PROGRAM GAUSS_ELE DIMENSION A(50,50),B(50),X(50) PARAMETER (N=3) DATA ((A(I,J),J=1,N),I=1,N)/-12.,1.,-1., + -2.,-4.,2., + 1.,2.,2./ DATA (B(I),I=1,N) /-20.,10.,25./ CALL GAUSS(N,A,B,X)

• ---------------------------------

• เอาทพทคอ ดงนน x1 = 1, x2 = 2 และ x3 = 10

PH 615 113

Page 114: Computational Physics in Thai

ตวอยางท 4.16 จงเขยนโปรแกรมโยวธ naive – Gauss elimination เพอแกสมการ

4x1 + x2 – x3 = -2

5x1 + x2 + 2x3 = 4

6x1 + x2 + x3 = 6

วธทา อาศยโปรแกรมในตวอยาง 4.13 โดยเปลยนระบบสมการ PROGRAM GAUSS_ELE DIMENSION A(50,50),B(50),X(50) PARAMETER (N=3) DATA ((A(I,J),J=1,N),I=1,N)/4.,1.,-1., + 5.,1.,2., + 6.,1.,1./ DATA (B(I),I=1,N) /-2.,4.,6./ CALL GAUSS(N,A,B,X) * --------------------------------- เอาทพทคอ ดงนน x1 = 3, x2 = -13, x3 = 1

PH 615 114

Page 115: Computational Physics in Thai

4.5 วธเกาส-จอรแดน (Gauss – Jordan) วธการของเกาส-จอรแดนจะคลายกบวธการของเกาส ขอแตกตางอยตรงทวาหลงจากการกาจดตวแปรแลว เมทรกซทไดจะเปน identity matrix ตวอยางท 4.17 ใชเทคนคเกาส-จอรแดนแกสมการ

1 2 3

1 2 3

1 2 3

3 0.1 0.2 7.850.1 7 0.3 19.30.3 0.2 10 71.4

x x xx x xx x x

− − =+ − = −− + =

วธทา

3 0.1 0.20.1 7 0.3 19.30.3 0.2 10

− −⎡ ⎤⎢ ⎥− − −⎢ ⎥⎢ ⎥−⎣ ⎦

Normalize แถวแรกดวยการหารดวย 3

1 0.0333333 0.0666670.1 7 0.3 19.30.3 0.2 10

− −⎡ ⎤⎢ ⎥− − −⎢ ⎥⎢ ⎥−⎣ ⎦

ทาให หมดจากสมการสอง โดยการหก 0.1 เทาของสมการหนง จากสมการสองและเชนเดยวกน หก 0.3 เทาของแถวแรก จากแถว 3 จะทาให ในแถว 3 หมดไป

1x

1x

1 0.0333333 0.0666670 7.00333 0.293333 19.56170 0.190000 10.0200

− −⎡ ⎤⎢ ⎥− − −⎢ ⎥⎢ ⎥−⎣ ⎦

PH 615 115

Page 116: Computational Physics in Thai

ตอไป Normalize แถวสองโดยการหารดวย 7.00333

1 0.0333333 0.0666670 1 0.0418848 2.793200 0.190000 10.0200

− −⎡ ⎤⎢ ⎥− − −⎢ ⎥⎢ ⎥−⎣ ⎦

ทาใหเทอม หมดจากสมการหนงและสามจะได 2x

1 0 0.06806290 1 0.0418848 2.793200 0 10.01200

−⎡ ⎤⎢ ⎥− − −⎢ ⎥⎢ ⎥⎣ ⎦

ตอไป Normalize แถวสามโดยการหารดวย 10.01200

1 0 0.06806290 1 0.0418848 2.793200 0 1

−⎡ ⎤⎢ ⎥− − −⎢ ⎥⎢ ⎥⎣ ⎦

ทาใหเทอม หมดจากสมการหนงและสองจะได 3x

1 0 00 1 0 2.500010 0 1

⎡ ⎤⎢ ⎥− −⎢ ⎥⎢ ⎥⎣ ⎦

PH 615 116

Page 117: Computational Physics in Thai

สรป ขนตอนของวธเกาส-จอรแดน

⎥⎥⎥

⎢⎢⎢

3

2

1

333231

232221

131211

ccc

aaaaaaaaa

( )

( )

( )⎥⎥⎥

⎢⎢⎢

n

n

n

ccc

3

2

1

100010001

x1 = ( )nc1 x2 = ( )nc2 x3 = ( )nc3

PH 615 117

Page 118: Computational Physics in Thai

แบบฝกหดบทท 4

1. จงแกสมการตอไปน โดยวธกราฟ

0.5x1 – x2 = -9.5

0.26x1 – 0.5x2 = -4.7 2. จงแกสมการตอไปน โดยวธกาจดตวแปร

0.77x1 + x2 = 14.25

1.2x1 + 1.7x2 = 20 3. กาหนดเซทของสมการ

2x2 + 5x3 = 1

2x1 + x2 + 2x3 = 1

3x1 + x2 = 2 ก) จงหา determinant จงใชหลกของเครเมอร หาคา xi ข) แทนคา xi กลบลงในสมการ เพอตรวจสอบคาตอบ ค)

4. จงแกสมการตอไปน 4x1 + x2 – x3 = -2

5x1 + x2 + 2x3 = 4

6x1 + x2 + x3 = 6 ก) โดยวธกาจดเกาส ใชวธสลบแถว (partial pivoting) ข) เขยนโปรแกรม

PH 615 118

Page 119: Computational Physics in Thai

บทท 5 การสรางเมทรกซ LU และอนเวรสของเมทรกซ

ในบทนจะกลาวถงการสรางเมทรกซ LU และการหาอนเวรสของเมทรกซ ในบทนจะกลาวถงการสรางเมทรกซ LU และการหาอนเวรสของเมทรกซ

5.1 LU ดคอมโพซชน ( LU decomposition) 5.1 LU ดคอมโพซชน ( LU decomposition)

ชวยการคานวณเกยวกบเมทรกซใหมความรวดเรวขน เรมตนจากการนาวธ Gauss elimination มาแกสมการของระบบ

ชวยการคานวณเกยวกบเมทรกซใหมความรวดเรวขน เรมตนจากการนาวธ Gauss elimination มาแกสมการของระบบ

[ ]{ }XA = { }B จดรปสมการเปน

[ ]{ } { }BXA − = 0

สมมตวาสามารถเขยนไดเปน

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎧=

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎥⎥⎥

⎢⎢⎢

3

2

1

3

2

1

33

2322

131211

000

ddd

xxx

uuuuuu

ซงกคอ [ ]{ } { }DXA − = 0 สมมตวาม lower diagonal matrix

PH 615 119

Page 120: Computational Physics in Thai

[ ]⎥⎥⎥

⎢⎢⎢

⎡=

101001

3231

21

lllL

ซงมคณสมบตวา [ ] [ ]{ } { }{ } [ ]{ } { }BXADXUL −=− จะได [ ][ ] [ ]AUL = และ [ ]{ } { }BDL =

สรป วธ LU ดคอมโพซชนเปนขนตอน คอ

[ ]{ } { }BXA = (a) Decomposition

[ ] [ ]LU [ ]{ } { }BDL = (b) Forward

[ ]D

[ ][ ] { }DXU = (c) Backward

[ ]X

PH 615 120

Page 121: Computational Physics in Thai

สาหรบ upper matrix

[ ]⎥⎥⎥

⎢⎢⎢

′′′′=

33

2322

131211

000

aaaaaa

U

หลงจากการ eliminate จะได matrix [ เปน ]A

⎥⎥⎥

⎢⎢⎢

′′′′

333231

232221

131211

affaafaaa

เมอ

223232

113131

112121

///

aafaafaaf

′′===

matrix นจะอยในรป LU decomposition [ ] [ ][ ]ULA → เมอ

[ ] ⎥⎥⎥

⎢⎢⎢

′′′′=

33

2322

131211

000

aaaaaa

U และ [ ] ⎥⎥⎥

⎢⎢⎢

⎡=

101001

3231

21

fffL

ตวอยางท 5.1 จงแบงเมทรกซของสมการตอไปนเปนเมทรกซ L และเมทรกซ U โดยอาศย Gauss Elimination

0.3x1 – 0.1x2 – 0.2x3 = 7.85

0.1x1 + 7x2 – 0.3x3 = - 19.3

0.3x1 – 0.2x2 + 10x3 = 71.4

PH 615 121

Page 122: Computational Physics in Thai

วธทา

[ ] ⎥⎥⎥

⎢⎢⎢

−−−−

=102.03.0

3.071.02.01.03

A

หลงจาก Forward Elimination จะได

[ ]⎥⎥⎥

⎢⎢⎢

⎡−

−−=

0120.1000293333.000333.70

2.01.03U

เมอ , 03333333.031.0

21 ==f 10000000.033.0

31 ==f

0271300.000333.7

19.032 −=

−=f

จะได

[ ]⎥⎥⎥

⎢⎢⎢

−=

10271300.010000000.00103333333.0001

L

ดงนน LU decomposition คอ [ ] [ ][ ]ULA =

⎥⎥⎥

⎢⎢⎢

⎡−

−−

⎥⎥⎥

⎢⎢⎢

−=

0120.1000293333.000333.70

2.01.03

10271300.010000000.00103333333.0001

ซงเมอคณเมทรกซทงสองจะได

PH 615 122

Page 123: Computational Physics in Thai

[ ] [ ]⎥⎥⎥

⎢⎢⎢

−−−−

=99996.92.03.0

3.070999999.02.01.03

UL

ซงตรงกบ [ ] A

ตวอยางท 5.2 จงแกสมการในตวอยางท 5.1 โดยวธสรางเมทรกซ LU และเขยนโปรแกรมเพอแกสมการน วธทา

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎧−=

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎥⎥⎥

⎢⎢⎢

−−−−

4.713.19

85.7

102.03.03.071.02.01.03

3

2

1

xxx

จาก Gauss Elimination จะได

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎧−=

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎥⎥⎥

⎢⎢⎢

−−

−−

0843.705617.1985.7

0120.102.03.0293333.000333.71.0

2.01.03

3

2

1

xxx

อาศยสมการจะได

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎧−=

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎥⎥⎥

⎢⎢⎢

− 4.713.19

85.7

10271300.0100000.0010333333.0001

3

2

1

ddd

คณออกมาได 85.71 =d 3.190333333.0 21 −=+ dd 4.7102713.01.0 321 =+− ddd

PH 615 123

Page 124: Computational Physics in Thai

จะได 85.71 =d

( ) 5617.1985.70333333.03.192 −=−−=d ( ) ( ) 0843.705617.1902713.085.71.04.713 =−+−=d ดงนน

{ } ⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎧−=

0843.705617.1985.7

D

แทนลงในสมการ [ ] { } { }DXU =

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎧−=

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎥⎥⎥

⎢⎢⎢

⎡−

−−

0843.705617.1985.7

0120.1000293333.000333.70

2.01.03

3

2

1

xxx

อาศย Back substitution จะได

{ }⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎧−=00003.7

5.23

x

PH 615 124

Page 125: Computational Physics in Thai

โปรแกรมทใชในการแกสมการโดยวธ LU ดคอมโพซชน คอ PROGRAM LUDCOM DIMENSION A(50,50),B(50),X(50) DIMENSION AL(50,50),AU(50,50),Y(50) PARAMETER (N=3) DATA ((A(I,J),J=1,N),I=1,N)/3.,-0.1,-0.2, + 0.1,7.,-0.3, + 0.3,-0.2,10./ DATA (B(I),I=1,N) /7.85,-19.3,71.4/ CALL LU(N,A,B,X,AL,AU,Y) WRITE(*,100) 100 FORMAT(/,7X,'EQUATION NO.', + 7X,'SOLUTION X',/) DO 10 I=1,N WRITE(*,200) I,X(I) 200 FORMAT(I12,8X,F16.6) 10 CONTINUE STOP END *----------------------------------------------------- SUBROUTINE LU(N,A,B,X,AL,AU,Y) DIMENSION A(50,50),B(50),X(50) DIMENSION AL(50,50),AU(50,50),Y(50) DO 10 I=1,50 DO 10 J=1,50 AL(I,J)=0. AU(I,J)=0. 10 CONTINUE

PH 615 125

Page 126: Computational Physics in Thai

DO 20 I=1,N AL(I,1)=A(I,1) 20 CONTINUE DO 30 J=2,N AU(1,J)=A(1,J)/AL(1,1) 30 CONTINUE DO 40 J=2,N-1 DO 50 I=J,N SUM=0. DO 60 K=1,J-1 SUM=SUM+AL(I,K)*AU(K,J) 60 CONTINUE AL(I,J)=A(I,J)-SUM 50 CONTINUE DO 70 K=J+1,N SUM=0. DO 80 I=1,J-1 SUM=SUM+AL(J,I)*AU(I,K) 80 CONTINUE AU(J,K)=(A(J,K)-SUM)/AL(J,J) 70 CONTINUE 40 CONTINUE SUM=0. DO 90 K=1,N-1 SUM=SUM+AL(N,K)*AU(K,N) 90 CONTINUE AL(N,N)=A(N,N)-SUM Y(1)=B(1)/AL(1,1) DO 100 I=2,N

PH 615 126

Page 127: Computational Physics in Thai

SUM=0. DO 110 J=1,I-1 SUM=SUM+AL(I,J)*Y(J) 110 CONTINUE Y(I)=(B(I)-SUM)/AL(I,I) 100 CONTINUE X(N)=Y(N) DO 120 I=N-1,1,-1 SUM=0. DO 130 J=I+1,N SUM=SUM+AU(I,J)*X(J) 130 CONTINUE X(I)=Y(I)-SUM 120 CONTINUE RETURN END *---------------------------------------------- เอาทพทจากสมการคอ จะได x1 = 3, x2 = -2.5, x3 = 7

PH 615 127

Page 128: Computational Physics in Thai

ตวอยางท 5.3 จงแกระบบสมการตอไปน โดยวธ LU ดคอมโพซชน

7x1 + 2x2 – 3x3 = - 12

2x1 + 5x2 – 3x3 = - 20

x1 – x2 – 6x3 = - 26 วธทา ใชโปรแกรมแกระบบสมการขางบน โดยเปลยนระบบสมการ PROGRAM LUDCOM DIMENSION A(50,50),B(50),X(50) DIMENSION AL(50,50),AU(50,50),Y(50) PARAMETER (N=3) DATA ((A(I,J),J=1,N),I=1,N)/7.,2.,-3., + 2.,5.,-3., + 1.,-1.,-6./ DATA (B(I),I=1,N) /-12.,-20.,-26./ เอาทพทจากโปรแกรม คอ x1 = 0.718750, x2 = - 1.468750, x3 = 4.697917

PH 615 128

Page 129: Computational Physics in Thai

ตวอยางท 5.4 ทาเชนเดยวกบตวอยาง 5.2 แตเปลยน {B} เปน {B}T = [12 18 -6] วธทา โปรแกรมเชนเดยวกบในตวอยาง 5.2 แตเปลยนคา {B} เปน [12 18 -6] ซงจะไดเอาทพท คอ x1 = 4.o38069, x2 = 2.484966, x3 = -0.671443

5.2 อนเวรสของเมทรกซ

[ ][ ] [ ] [ ] [ ]111 == −− AAAA ตวอยางท 5.5 อาศย LU decomposition หา matrix inverse สาหรบระบบในตวอยางท 5.1

[ ]⎥⎥⎥

⎢⎢⎢

−−−−

=102.03.0

3.071.02.01.03

A

ซงม lower และ upper triangular matrixes

[ ]⎥⎥⎥

⎢⎢⎢

⎡−

−−=

0120.1000293333.000333.70

2.01.03U

PH 615 129

Page 130: Computational Physics in Thai

[ ]⎥⎥⎥

⎢⎢⎢

−=

10271300.01000000.0010333333.0001

L

วธทา

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎧=

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎥⎥⎥

⎢⎢⎢

− 001

10271300.01000000.0010333333.0001

3

2

1

ddd

อาศย forward substitution จะได { } [ ]1009.003333.01 −−=TD ใชเปนดานขวาของสมการ

⎪⎭

⎪⎬

⎪⎩

⎪⎨

−−=

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎥⎥⎥

⎢⎢⎢

⎡−

−−

1009.003333.01

0120.1000293333.000333.70

2.01.03

3

2

1

xxx

อาศย Back substitution จะได { } [ ]01008.000518.033249.0 −−=TX ดงนนเฉพาะ column แรก

[ ] ⎥⎥⎥

⎢⎢⎢

−−=−

0001008.00000518.00033249.0

1A

PH 615 130

Page 131: Computational Physics in Thai

สาหรบ column ทสอง

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎧=

⎪⎭

⎪⎬

⎪⎩

⎪⎨

⎥⎥⎥

⎢⎢⎢

− 010

10271300.0100000.0010333333.0001

3

2

1

ddd

หาคา { ไดแทนลงในสมการจะได }D

{ } [ ]00271.0142903.0004944.0=TX เปน column ทสองของ matrix

[ ] ⎥⎥⎥

⎢⎢⎢

−−=−

000271.001008.00142903.000518.00004944.033249.0

1A

เชนเดยวกน อาศย { } จะได [ ]100=TB

{ } [ ]09988.0004183.0006798.0=TX

[ ]⎥⎥⎥

⎢⎢⎢

−−=−

09988.000271.001008.0004183.0142903.000518.0006798.0004944.033249.0

1A

ตรวจสอบคาตอบได โดยการพสจน [ ][ ] [ ]IAA =−1

PH 615 131

Page 132: Computational Physics in Thai

ตวอยางท 5.6 จงหาอนเวรสของเมทรกซ

[A] = ⎥⎥⎥

⎢⎢⎢

−−−−

611352327

วธทา โปแกรมทใชในการคานวณหาอนเวรสของเมทรกส คอ PROGRAM INVERSE PARAMETER (N=3) REAL A(N,N) DATA ((A(I,J),J=1,N),I=1,N)/7.,2.,-3., + 2.,5.,-3., + 1.,-1.0,-6.0/ CALL MINV(A,AINV,N,N,DET) STOP END *=========================================== SUBROUTINE MINV(A,AINV,ND,N,DET) INTEGER ND,N,IPASS REAL A(ND,ND),AINV(ND,ND),DET,FCTR *------ DET = 1.0 DO 1 I = 1,N DO 1 J = 1,N IF(I.EQ.J)THEN AINV(I,J) = 1.0 ELSE AINV(I,J) = 0.0

PH 615 132

Page 133: Computational Physics in Thai

ENDIF 1 CONTINUE *-------- DO 7 IPASS = 1,N IMX = IPASS DO 2 IROW = IPASS,N IF(ABS(A(IROW,IPASS)).GT.ABS(A(IMX,IPASS)))THEN IMAX = IROW ENDIF 2 CONTINUE *----------- IF(IMX.NE.IPASS)THEN DO 3 ICOL = 1,N TEMP = AINV(IPASS,ICOL) AINV(IPASS,ICOL)= AINV(IMX,ICOL) AINV(IMX,ICOL) = TEMP IF(ICOL.GE.IPASS)THEN TEMP = A(IPASS,ICOL) A(IPASS,ICOL)= A(IMX,ICOL) A(IMX,ICOL) = TEMP ENDIF 3 CONTINUE ENDIF *--------------- PIVOT = A(IPASS,IPASS) DET = DET*PIVOT IF(DET.EQ.0.)THEN WRITE(*,10) PAUSE 'FATAL ERROR IN MINV - ZERO DETERMINANT'

PH 615 133

Page 134: Computational Physics in Thai

RETURN ENDIF *-------------- DO 4 ICOL = 1,N AINV(IPASS,ICOL) = AINV(IPASS,ICOL)/PIVOT IF(ICOL.GE.IPASS)THEN A(IPASS,ICOL) = A(IPASS,ICOL)/PIVOT ENDIF 4 CONTINUE *-------------- DO 6 IROW = 1,N IF(IROW.NE.IPASS)THEN FCTR = A(IROW,IPASS) DO 5 ICOL = 1,N AINV(IROW,ICOL) = AINV(IROW,ICOL)- + FCTR*AINV(IPASS,ICOL) A(IROW,ICOL) = A(IROW,ICOL)-FCTR*A(IPASS,ICOL) 5 CONTINUE ENDIF 6 CONTINUE 7 CONTINUE PRINT*,AINV RETURN *============ 10 FORMAT(/,T5,'==============ERROR IN MINV==============',/, + T5,'| THE MATRIX IS SINGULAR |',/, + T5,'============PROGRAM TERMINATED===========') END *--------------------------------------------------------------------------------------------

PH 615 134

Page 135: Computational Physics in Thai

เอาทพทจากโปรแกรม คอ ตวอยางท 5.7 จงหาอนเวรสของเมทรกซ

[A] = ⎥⎥⎥

⎢⎢⎢

−−−−

611352327

วธทา โปรแกรมอกโปรแกรมหนงทใชในการคานวณ โดยมการปรบปรงในสวนของเอาทพทคอ PROGRAM INV_M PARAMETER (N=3) REAL A(N,N),B(N,N),C(N,N) DATA ((A(I,J),J=1,N),I=1,N)/7.,2.,-3., + 2.,5.,-3., + 1.,-1.,-6./ CALL PRINT(A,N,N) CALL MINV(A,B,N,N,DET) CALL PRINT(B,N,N) STOP END

PH 615 135

Page 136: Computational Physics in Thai

*================================================================= SUBROUTINE PRINT(A,N,ND) REAL A(ND,ND) CHARACTER DASH*8 DATA DASH/'-------|'/ WRITE(*,*) WRITE(*,10) ( J,J=1,N) WRITE(*,11) ( DASH,J=1,N) DO 1 I=1,N-1 WRITE(*,12)I,(A(I,J),J=1,N) 1 CONTINUE WRITE(*,12)N,(A(N,J),J=1,N) WRITE(*,11) ( DASH,J=1,N) 10 FORMAT( T5,'|',10(2X,I3,2X,'|')) 11 FORMAT( T5,'|',10A8) 12 FORMAT(I3,T5,'|',10(F7.3,'|')) RETURN END *================================================================= SUBROUTINE MINV(A,AINV,ND,N,DET) INTEGER ND,N,IPASS REAL A(ND,ND),AINV(ND,ND),DET,FCTR DET=1.0 DO 1 I=1,N DO 1 J=1,N IF(I.EQ.J)THEN AINV(I,J)=1.0 ELSE AINV(I,J)=0.0

PH 615 136

Page 137: Computational Physics in Thai

ENDIF 1 CONTINUE * CALL PRINT(AINV,ND,N) *---------------------------------------------------------------------- DO 7 IPASS=1,N IMX=IPASS DO 2 IROW=IPASS,N IF(ABS(A(IROW,IPASS)).GT.ABS(A(IMX,IPASS)))THEN IMX=IROW ENDIF 2 CONTINUE IF(IMX.NE.IPASS)THEN DO 3 ICOL=1,N TEMP = AINV(IPASS,ICOL) AINV(IPASS,ICOL) = AINV(IMX,ICOL) AINV(IMX,ICOL) = TEMP IF(ICOL.GE.IPASS)THEN TEMP = A(IPASS,ICOL) A(IPASS,ICOL) = A(IMX,ICOL) A(IMX,ICOL) = TEMP ENDIF 3 CONTINUE ENDIF PIVOT = A(IPASS,IPASS) DET = DET*PIVOT IF(DET.EQ.0.)THEN WRITE(*,10) PAUSE'FATAL ERROR IN MINV - zero determinant' RETURN

PH 615 137

Page 138: Computational Physics in Thai

ENDIF DO 4 ICOL=1,N AINV(IPASS,ICOL) = AINV(IPASS,ICOL)/PIVOT IF(ICOL.GE.IPASS)THEN A(IPASS,ICOL) = A(IPASS,ICOL)/PIVOT ENDIF 4 CONTINUE DO 6 IROW = 1,N IF(IROW.NE.IPASS)THEN FCTR = A(IROW,IPASS) DO 5 ICOL = 1,N AINV(IROW,ICOL) = AINV(IROW,ICOL)- + FCTR*AINV(IPASS,ICOL) A(IROW,ICOL) = A(IROW,ICOL)-FCTR*A(IPASS,ICOL) 5 CONTINUE ENDIF 6 CONTINUE 7 CONTINUE RETURN *---------------------------------------------------------------------- 10 FORMAT(/,T5,'==========ERROR IN MINV==========',/, + T5,'| The matrix is singular |',/, + T5,'=================================') END *=================================================================

PH 615 138

Page 139: Computational Physics in Thai

ซงจะไดเอาทพท โดยเมทรกซชดดานลางเปนอนเวรสของเมทรกสชดทอยดานบน คอ

[A]-1 = ⎥⎥⎥

⎢⎢⎢

−−−−−−

161.0047.0036.0078.0203.0047.0047.0078.0172.0

5.3 การคณเมทรกซ ถา [A] และ [B] เปนเมทรกซจตรสลาดบ n สมาชกของผลคณเมทรกซ [C] = [A][B] จะมคาดงน

cij = ∑ =

n

ikjikba

1

ซงการคานวณหาคาสมาชกโดยใชเครองคดเลขจะยงยาก ใชเวลานาน และม

ขอผดพลาดไดงาย โดยเฉพาะอยางยงเมทรกซทมขนาดใหญ n > 3 จงจาเปนทจะตองใชคอมพวเตอรมาชวยในการคานวณ

PH 615 139

Page 140: Computational Physics in Thai

ตวอยางท 5.8 จงหาผลคณของเมทรกซตอไปน

[A] = , [B] = ⎥⎥⎥⎥

⎢⎢⎢⎢

1434111221114321

⎥⎥⎥⎥

⎢⎢⎢⎢

1010010110100101

วธทา PROGRAM MULTIPLY PARAMETER(N=4) REAL A(N,N),B(N,N),C(N,N) DATA ((A(I,J),J=1,N),I=1,N)/1.,2.,3.,4., + 1.,1.,1.,2., + 2.,1.,1.,1., + 4.,3.,4.,1./ DATA ((B(I,J),J=1,N),I=1,N)/1.,0.,1.,0., + 0.,1.,0.,1., + 1.,0.,1.,0., + 0.,1.,0.,1./ CALL PROD(A,B,C,N,N) CALL PRINT(A,N,N) CALL PRINT(B,N,N) CALL PRINT(C,N,N) STOP END *================================================ SUBROUTINE PRINT(A,N,ND) REAL A(ND,ND) CHARACTER DASH*8,BLANK*8

PH 615 140

Page 141: Computational Physics in Thai

DATA DASH,BLANK/'-------|',' |'/ WRITE(*,10) ( J,J=1,N) WRITE(*,11) ( DASH,J=1,N) *---- DO 1 I = 1,N-1 WRITE(*,12)I,(A(I,J),J=1,N) WRITE(*,11) (BLANK,J=1,N) 1 CONTINUE WRITE(*,12)N,(A(N,J),J=1,N) WRITE(*,11) ( DASH,J=1,N) 10 FORMAT(/, T5,'|',10(2X,I3,2X,'|')) 11 FORMAT( T5,'|',10A8) 12 FORMAT(I3,T5,'|',10(F7.3,'|')) RETURN END *=============================================== SUBROUTINE PROD(A,B,C,N,ND) REAL A(ND,ND),B(ND,ND),C(ND,ND) DO 2 I = 1,N DO 2 J = 1,N C(I,J) = 0.0 DO 1 K = 1,N C(I,J) = C(I,J) + A(I,K)*B(K,J) 1 CONTINUE 2 CONTINUE RETURN END

PH 615 141

Page 142: Computational Physics in Thai

เอาทพทจากโปรแกรม คอ ผลลพธจากการคณเมทรกซ [A] และ [B] แสดงในเมทรกซชดท 3

PH 615 142

Page 143: Computational Physics in Thai

แบบฝกหดบทท 5

1. จงแกระบบสมการตอไปน โดยวธ LU ดคอมโพซชน

x1 + 7x2 – 4x3 = - 51

4x1 – 4x2 + 9x3 = 62

12x1 – x2 + 3x3 = 8

2. จงหาอนเวรสของเมทรกซในขอ 1. 3. จงหาผลคณของเมทรกซตอไปน

[A] = , [B] = ⎥⎥⎥

⎢⎢⎢

522643121

⎥⎥⎥

⎢⎢⎢

−−−−−

−−

423212

324

PH 615 143

Page 144: Computational Physics in Thai

บทท 6 เมทรกซพเศษและการแกปญหาทางฟสกส

ในบทนจะกลาวถงเมทรกซบางอนทมลกษณะพเศษ ซงสามารถหาผลเฉลยโดยวธเฉพาะได เชน เมทรกซสมมาตร และจะศกษาเทคนคเกาสซเดลดวย

6.1 เมทรกซไทรไดอะโกนอล (Tridiagonal Systems)

⎪⎪⎪⎪⎪

⎪⎪⎪⎪⎪

⎪⎪⎪⎪⎪

⎪⎪⎪⎪⎪

=

⎪⎪⎪⎪⎪

⎪⎪⎪⎪⎪

⎪⎪⎪⎪⎪

⎪⎪⎪⎪⎪

⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢

−−−−−

n

n

n

n

nn

nnn

rr

rrr

xx

xxx

fegfe

gfegfe

gf

1

3

2

1

1

3

2

1

111

333

222

11

.

.

.

.

.

.

......

...

ตวอยางท 6.1 จงแกเมทรกซไทรไดอะโกนอลตอไปน

⎪⎪⎭

⎪⎪⎬

⎪⎪⎩

⎪⎪⎨

=

⎪⎪⎭

⎪⎪⎬

⎪⎪⎩

⎪⎪⎨

⎥⎥⎥⎥

⎢⎢⎢⎢

−−−

−−−

8.2008.08.08.40

04.21104.21

104.21104.2

4

3

2

1

TTTT

PH 615 145

Page 145: Computational Physics in Thai

วธทา

1

1

./

−==

kkkk

kkk

gefffee

( )( ) 550.1149.004.249.004.2/1

2

2

=−−−=−=−=

fe

( )( )

( )( ) 323.11717.004.2717.0395.1/1

395.11645.004.2645.0550.1/1

4

4

3

3

=−−−=−=−=

=−−−=−=−=

fefe

ดงนน

⎥⎥⎥⎥

⎢⎢⎢⎢

−−−

−−−

323.1717.01395.1645.0

1550.149.0104.2

อาศย LU ดคอมโพซชน จะได

[ ] [ ][ ]⎥⎥⎥⎥

⎢⎢⎢⎢

−−

⎥⎥⎥⎥

⎢⎢⎢⎢

−−

−==

323.11395.1

1550.1104.2

1717.01645.0

149.01

ULA

อาศยการแทนคา 1−−= kkkk rerr จะได

( )( )( ) 996.210221.14717.08.200

221.148.20645.08.08.208.4049.08.0

4

3

2

=−−==−−==−−=

rrr

PH 615 146

Page 146: Computational Physics in Thai

ดงนน เวคเตอรทางดานขวาเปลยนเปน

⎪⎪⎭

⎪⎪⎬

⎪⎪⎩

⎪⎪⎨

996.210221.14

8.208.40

อาศยการแทนคากลบและเมทรกซ [ ]U

( ) kkkkk fxgrx /. 1+−= จะได

( )[ ]( )[ ]( )[ ] 970.65040.2/778.931800.40

778.93550.1/538.1241800.20538.124395.1/48.1591221.14

480.159323.1/996.210

1

2

3

4

=−−==−−=

=−−===

TTTT

6.2 โชลเลสกดคอมโพซชน(Cholesky Decomposition) ใชแกเมทรกซสมมาตร ซง jiij aa =

หรอ [ ] [ ]TAA =

ii

i

jkjijij

ki l

llal

∑−

=

−=

1

1 เมอ 1,.....,2,1 −= ki

และ

∑−

=

−=1

1

2k

jkjkkkk lal

PH 615 147

Page 147: Computational Physics in Thai

ตวอยางท 6.2 อาศยโชลเลสกดคอมโพซชนกบเมทรกซสมมาตรตอไปน

[ ]⎥⎥⎥

⎢⎢⎢

⎡=

97922555225551555156

A

วธทา สาหรบแถวแรก ไมตองคานวณ ขามไปคานวณสมการอน 1=k 4495.261111 === al สาหรบแถวทสอง ( )2=k

สาหรบ 1=j

454.224495.255

11

3131 ===

lal

และสาหรบ 2=j

( )1833.4

454.221237.6225

22

31213232

−=

−=

llla

l

= 20.916 และจาก

232

2313333 llal −−=

( ) ( )22 916.20454.22979 −−= = 6.1106

PH 615 148

Page 148: Computational Physics in Thai

ดงนน หลงจากอาศยโชลเลสกดคอมโพซชน จะได

[ ]⎥⎥⎥

⎢⎢⎢

⎡=

1103.6916.20454.221833.41237.6

4495.2L

6.3 เกาส – ซเดล อาศยวธการทาซาเหมอนกบการหารากของสมการทไดเรยนไปแลว เรมตนจากการพยากรณคาตอบของสมการกอนวาควรจะมคาเทาไร ใหใชคานเปนคาเรมตน แลวจงทาซาหลาย ๆ ครงเพอหาคาตอบ

33

23213133

22

32312122

11

31321211

axaxabx

axaxabx

axaxabx

−−=

−−=

−−=

เรมตนโดยการสมมตคา 321 ,, xxx

ตวอยางท 6.3 อาศยวธเกาส – ซเดลหาผลเฉลยของระบบสมการในตวอยางท 6.1 85.72.01.03 321 =−− xxx 3.193.071.0 321 −=−+ xxx 4.71102.03.0 321 =+− xxx คาตอบทแทจรงคอ และ 5.2,3 21 −== xx 73 =x

PH 615 149

Page 149: Computational Physics in Thai

วธทา

102.03.04.71

73.01.03.19

32.01.085.7

213

312

321

xxx

xxx

xxx

+−=

+−−=

++=

สมมตวา และ เทากบศนย 2x 3x

∴ 616667.23

0085.71 =

++=x

ใชคา น และ แทนลงไปหาคา 1x 03 =x 2x

( ) 794524.27

0616667.21.03.192 −=

+−−=x

แทนคา และ หาคา 1x 2x 3x

( ) ( ) 005610.710

794524.22.0816667.23.04.713 =

−+−=x

สาหรบการ iterate ครงทสองจะได

( ) ( )

( ) ( )

( ) ( ) 00291.710

499625.22.0557.99.23.04.71

499625.27

005610.73.0990557.21.03.19

990557.23

005610.72.0794524.21.085.7

3

2

1

=+−

=

−=+−−

=

=+−+

=

x

x

x

PH 615 150

Page 150: Computational Physics in Thai

ตวอยางท 6.4 จงหาคาตอบของเมทรกซตอไปน

= ⎥⎥⎥

⎢⎢⎢

−−−

21121

12

⎪⎭

⎪⎬

⎪⎩

⎪⎨

3

2

1

xxx

⎪⎭

⎪⎬

⎪⎩

⎪⎨

144

124

วธทา โปรแกรมทใชในการคานวณ คอ PROGRAM GAUSSSIDEL PARAMETER (N=3) REAL A(N,N),B(N),X(3) REAL LAMDA,ES DATA ((A(I,J),J=1,N),I=1,N)/2.,-1.,0., + -1.,2.,-1., + 0.,-1.,2./ DATA (B(I),I=1,N)/124.,4.,12./ WRITE(*,*)'ENTER IMAX,ES,LAMBDA' READ(*,*) IMAX,ES,LAMDA WRITE(6,100) 100 FORMAT(/,5X,'ITER',10X,'X1',10X,'X2',9X,'X3',9X,'EA'/) CALL GSEID(A,B,N,X,IMAX,ES,LAMDA) STOP END *=========================================================== SUBROUTINE GSEID(A,B,N,X,IMAX,ES,LAMDA) DIMENSION B(3),X(3) REAL SENTINEL,OLD,DUMMY,LAMDA,ES REAL A(N,N) DO 10 I=1,N DUMMY=A(I,I)

PH 615 151

Page 151: Computational Physics in Thai

DO 20 J=1,N A(I,J)=A(I,J)/DUMMY 20 CONTINUE B(I)=B(I)/DUMMY 10 CONTINUE DO 30 I=1,N SUM=B(I) DO 40 J=1,N IF (I.NE.J)THEN SUM=SUM-A(I,J)*X(J) ENDIF 40 CONTINUE X(I)=SUM 30 CONTINUE DO 50 ITER=1,IMAX SENTINEL=1. DO 60 I=1,N OLD=X(I) SUM=B(I) DO 70 J=1,N IF (I.NE.J)THEN SUM=SUM-A(I,J)*X(J) ENDIF 70 CONTINUE X(I)=LAMDA*SUM+(1.-LAMDA)*OLD IF (SENTINEL.EQ.1.) THEN IF (X(I).NE.0.) THEN EA=ABS((X(I)-OLD)/X(I))*100. ENDIF

PH 615 152

Page 152: Computational Physics in Thai

ENDIF IF (EA.GT.ES) THEN SENTINEL=0. ENDIF 60 CONTINUE WRITE(6,200) ITER,X(1),X(2),X(3),EA 200 FORMAT(5X,I3,3X,4F12.6) IF (SENTINEL.EQ.1.) THEN GOTO 300 ENDIF 50 CONTINUE 300 RETURN END *================================================================ เอาทพทจากโปรแกรม คอ

PH 615 153

Page 153: Computational Physics in Thai

ซงจะเหนไดวา ทาการ iterate 24 ครงจงจะไดคาตอบ ซงเกอบจะเปนไปไมได ถากดเครองคดเลขดวยมอ คาตอบคอ x1 = 98, x2 = 72, x3 = 42

ตวอยางท 6.5 จงแกระบบสมการโดยวธเกาส – ซเดล (λ)

- 5x1 + 12x3 = 80

4x1 – x2 – x3 = - 2

6x1 + 8x2 = 45

ถาจาเปนใหสลบสมการใหม เพอใหไดการลเขาหาคาตอบ วธทา สวนหนงของโปรแกรมทใชในการคานวณ โดยไมไดเปลยนแปลงลาดบของสมการ คอ PROGRAM GS1 PARAMETER (N=3) REAL A(N,N),B(N),X(3) REAL LAMDA,ES DATA ((A(I,J),J=1,N),I=1,N)/-5.,0.,12., + 4.,-1.,-1., + 6.,8.,0./ DATA (B(I),I=1,N)/80.,-2.,45./ เอาทพท คอ

PH 615 154

Page 154: Computational Physics in Thai

จะเหนไดวา เมอทาการ iterate หลาย ๆ ครงโปรแกรมไมมการลเขา จงไมไดคาตอบของสมการ เมอทาการสลบสมการใหม เปน

4x1 – x2 – x3 = - 2

6x1 + 8x2 = 45

- 5x1 + 12x3 = 80 สวนหนงของโปรแกรมทใชในการคานวณ จะเปลยนเปน *=========================================================== * ******* SWAP ROW 1 TO 3 ******** * ******* SWAP ROW 2 TO 1 ******** * ******* SWAP ROW 3 TO 2 ******** *=========================================================== PROGRAM GS2 PARAMETER (N=3) REAL A(N,N),B(N),X(3) REAL LAMDA,ES DATA ((A(I,J),J=1,N),I=1,N)/4.,-1.,-1., + 6.,8.,0., + -5.,0.,12./ DATA (B(I),I=1,N)/-2.,45.,80./

PH 615 155

Page 155: Computational Physics in Thai

จะไดเอาทพท คอ ซงเกดการลเขา คาตอบของสมการ คอ x1 = 2.375000, x2 = 3.843750, x3 = 7.656250

6.4 การประยกตทางดานฟสกส การแกระบบของสมการดวยวธวเคราะหเชงตวเลขมความสาคญตอการแกปญหาทางดานฟสกสมาก เพราะวาในทางปฏบตการคานวณโดยการกดเครองคดเลขดวยมอ เพอแกระบบสมการอาจจะเกดความผดพลาดไดงาย และสนเปลองเวลามาก ปญหาทางฟสกสทสามารถนาวธวเคราะหเชงตวเลขมาประยกตใชงาน เชน ปญหาเรองมวลสมดลยภายในเครองปฏกรณปรมาณ การคานวณกระแสและศกยภายในวงจรไฟฟา และระบบมวลทสนบนสปรงเปนตน

PH 615 156

Page 156: Computational Physics in Thai

ตวอยางท 6.6 จงหาความเขมขน (หนวย กรม/ม.3) ภายในเครองปฏกรณ ซงเปนฟงกชนของมวลทอนพทเขาไปในแตละวน (กรม/วน)

17C1 – 2C2 – 3C3 = 500

-5C1 + 21C2 – 2C3 = 200

- 5C1 – 5C2 + 22C3 = 30 วธทา สวนหนงของโปรแกรมทใชในการคานวณ คอ PROGRAM GAUSSSIDEL PARAMETER (N=3) REAL A(N,N),B(N),X(3) REAL LAMDA,ES DATA ((A(I,J),J=1,N),I=1,N)/17.,-2.,-3., + -5.,21.,-2., + -5.,-5.,22./ DATA (B(I),I=1,N)/500.,200.,30./ เอาทพท คอ จะไดความเขมขน ดงน C1 = 34, C2 = 18.89, C3 = 13.38 กรม/วน

PH 615 157

Page 157: Computational Physics in Thai

ตวอยางท 6.7 จงหา V1, V2 และ V3 ของวงจรไฟฟาตอไปน วธทา จากกฏของเคอรชอฟ จะได

17V1 – 8V2 – 3V3 = 480

-2V1 + 6V2 – 3V3 = 0

- V1 – 4V2 + 13V3 = 0 สวนหนงของโปรแกรมทใชในการคานวณ PROGRAM GS PARAMETER (N=3) REAL A(N,N),B(N),X(3) REAL LAMDA,ES DATA ((A(I,J),J=1,N),I=1,N)/17.,-8.,-3., + -2.,6.,-3., + -1.,-4.,13./ DATA (B(I),I=1,N)/480.,0.,0./

PH 615 158

Page 158: Computational Physics in Thai

เอาทพท คอ ดงนน V1 = 37.4 โวลต, V2 = 16.4 โวลต, V3 = 7.9 โวลต ตวอยางท 6.8 จากวงจรตอไปน จงหาคากระแสและแรงดนของแหลงจายไฟในวงจร

PH 615 159

Page 159: Computational Physics in Thai

วธทา จากกฎของเคอรชอฟ จะได

6I1 – 4I3 + Vs = 0

8I2 – 8I3 – Vs = 0

-4I1 – 8I2 + 18I3 = 0

-I1 + I2 = 10 สวนหนงของโปรแกรมทใชในการคานวณ คอ PROGRAM GAUSS DIMENSION A(50,50),B(50),X(50) PARAMETER (N=4) DATA ((A(I,J),J=1,N),I=1,N)/6.,0.,-4.,1., + 0.,8.,-8.,-1., + -4.,-8.,18.,0., + -1.,1.,0.,0. / DATA (B(I),I=1,N) /0.,-20.,0.,10./ CALL GAUSS(N,A,B,X) เอาทพท คอ ดงนน I1 = -7.78 แอมแปร I2 = 2.22 แอมแปร I3 = -0.7 แอมแปร

และ Vs = 43.7 โวลต

PH 615 160

Page 160: Computational Physics in Thai

ตวอยางท 6.9 มวล 3 อนผกตอกนวางอยบนพนเอยงดงรป จงหาความเรงของมวล และแรงตงในเสนเชอก วธทา จาก free – body diagram จะได

100a + T = 519.72

50a – T + R = 0

25a – R = 0 สวนหนงของโปรแกรมทใชในการคานวณคา a, T และ R คอ

PH 615 161

Page 161: Computational Physics in Thai

PROGRAM GAUSS DIMENSION A(50,50),B(50),X(50) PARAMETER (N=3) DATA ((A(I,J),J=1,N),I=1,N)/100.,1.,0., + 50.,-1.,1., + 25.,0.,-1./ DATA (B(I),I=1,N) /519.72,216.55,108.27/ CALL GAUSS(N,A,B,X) เอาทพทจากโปรแกรม ดงนน a = 4.8 เมตร/วนาท2 T = 37.1 นวตน R = 12.4 นวตน

PH 615 162

Page 162: Computational Physics in Thai

แบบฝกหดบทท 6

ระบบสมการตอไปน ใชในการหาความเขมขน (c หนวย กรม/ม.3) ในเครอง 1. ปฏกรณปรมาณเปนฟงกชนของมวลทใสเขาไปในเครอง (ทางขวาของสมการหนวย กรม/วน)

17C1 – 2C2 – 3C3 = 500

-5C1 + 21C2 – 2C3 = 200

- 5C1 – 5C2 + 22C3 = 30

จงหาปรมาณความเขมขน 2. จากวงจรตอไปนจงหาคา I 1, I 3 และ I 4

PH 615 163

Page 163: Computational Physics in Thai

3. จากวงจรตอไปนจงหาคา I 1, I 2 และ I3 4. มวล 4 อน 5, 8, 10 และ 15 กโลกรม ผกตดกนและคลองผานรอกดงรป จงหา

ความเรงและแรงตงในเสนเชอก

PH 615 164

Page 164: Computational Physics in Thai

บทท 7 การหาคามากสด

ในบทนจะกลาวถงวธการหาคามากทสดของฟงกชน f(x) โดยวธตาง ๆ กน 3 วธ

7.1 การหาโดยวธโกลเดน-เซกชน (golden – section) พจารณา = + 0l 1l 2l

และ = 0

1

ll

1

2

ll

จะได = 21

1

lll+ 1

2

ll

PH 615 165

Page 165: Computational Physics in Thai

กาหนดให = จะได R1

2

ll

1 + R = R1 หรอ R2 + R - 1 = 0

R = ( )2

1411 −−+− = 2

15 −

= 0.61803 คา R นมชอเรยกวาโกลเดนเรโช (Golden ratio) เพราะชวยในการหาตาสดหรอสงสดไดอยางมประสทธภาพ ตวอยางท 7.1 จงใชวธโกลเดน-เซกชน หาคาสงสดของ

2

( ) 2sin10xf x x= − ภายในชวง และ 0lX = 4uX =

โดยใชเครองคดเลข และใชโปรแกรมคอมพวเตอร วธทา อาศยโกลเดนเรโช

( )5 1 4 0 2.4722

d −= − =

หาคา 1 0 2.472 2.472X = + =

และ 2 4 2.472 1.528X = − =

หาคาฟงกชน

2

21.528( ) (1.528) 2sin(1.528) 1.765

10f x f= = − =

2

12.472( ) (2.472) 2sin(2.472) 0.63

10f x f= = − =

PH 615 166

Page 166: Computational Physics in Thai

เนองจาก ดงนน และ 2( ) ( )1f x f x> 0lX = 2.472uX =

2x เปลยนเปน ใหมซง 1x (1.528) 1.765f =

( )5 1 2.472 0 1.5282

d −= − =

2 2.472 1.528 0.994X = − =

(0.994) 1.531f = ซงนอยกวา ดงนนคาสงสดจะอยระหวาง x2, x1 และ x3 1( )f x

ทาซาเชนนอกหลาย ๆ ครง จนไดคามากทสด คอ x2 = 1.4427 โปรแกรม GOLD คานวณคาสงสดมดงน PROGRAM GOLD REAL R,XLOW,XHIGH,XOPT WRITE(*,*) ' PLEASE ENTER XLOW,XHIGH,IMAX,ES ' READ(*,*) XLOW,XHIGH,IMAX,ES WRITE(*,20) 20 FORMAT(/,14X,'I',11X,'X',14X,'F(X)',/) CALL GOLD(XLOW,XHIGH,IMAX,ES,FX) STOP END *---------------------------------------------- SUBROUTINE GOLD(XLOW,XHIGH,IMAX,ES,FX) REAL R,XLOW,XHIGH,XOPT R=((5.**(0.5))-1.)/2.

PH 615 167

Page 167: Computational Physics in Thai

XL=XLOW XU=XHIGH D=R*(XU-XL) X1=XL+D X2=XU-D F1=F(X1) F2=F(X2) IF(F1.GT.F2) THEN XOPT=X1 FX=F1 ELSE XOPT=X2 FX=F2 ENDIF DO 10 I=1,IMAX D=R*D IF(F1.GT.F2) THEN XL=X2 X2=X1 X1=XL+D F2=F1 F1=F(X1) ELSE XU=X1 X1=X2 X2=XU-D F1=F2 F2=F(X2) ENDIF

PH 615 168

Page 168: Computational Physics in Thai

IF(F1.GT.F2) THEN XOPT=X1 FX=F1 ELSE XOPT=X2 FX=F2 ENDIF IF(XOPT.NE.0.) THEN EA=(1.-R)*ABS((XU-XL)/XOPT)*100. ENDIF WRITE(*,100) I,XOPT,FX 100 FORMAT(10X,I5,2F16.6) IF(EA.LE.ES) THEN GOTO 20 ENDIF 10 CONTINUE 20 RETURN END *---------------------------------------- FUNCTION F(X) F=2*SIN(X)-((X**2.)/10.) RETURN END *---------------------------------------- เอาทพทจากโปรแกรม คอ

PH 615 169

Page 169: Computational Physics in Thai

ซงจะไดคาฟงกชนมากทสด คอ 1.776

7.2 การประมาณคาโดยอาศย Quadratic function การประมาณคาโดยอาศย Quadratic function อาศยหลกการทวา second – order polynomial เปนการประมาณคาทใกลกบรปทรงของฟงกชนใกลจดสงสดหรอตาสด ดงรป

PH 615 170

Page 170: Computational Physics in Thai

รปท 7.1 การประมาณคาโดยอาศย Quadratic function สามารถใชคณตศาสตรในการพสจนไดวา จดสงสดจะมคาประมาณดงน

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

2 2 2 2 2 20 1 2 1 2 0 2 0 1

30 1 2 1 2 0 2 0 12 2 2

f x x x f x x x f x x xx

f x x x f x x x f x x x

− + − + −=

− + − + −

ตวอยางท 7.3 จงใชวธ Quadratic Interpolation หาคาmaximum ของ

2

( ) 2sin10xf x x= −

โดยใชคาเรมตน และจงเขยนโปรแกรมเพอชวยในการคานวณ 0 1 20, 1, 4x x x= = =

วธทา ( )0 00, 0x f x= = ( )1 11, 1.5829x f x= =

( )2 24, 3.1136x f x= = −

( ) ( ) ( )( )

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

2 2 2 2 2 2

3

0 1 4 1.5829 4 0 3.1136 0 11.5055

2 0 1 4 2 1.5829 4 0 2 3.1136 0 1x

− + − + − −= =

− + − + − −

ซง (1.5055) 1.7691f =

PH 615 171

Page 171: Computational Physics in Thai

ทง เกา Iteration ตอไปคอ 0x

( )0 01, 1.5829x f x= =

( )1 11.5055, 1.7691x f x= =

( )2 24, 3.1136x f x= = −

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

2 2 2 2 2 2

3

1.5829 1.5055 4 1.769 4 1 3.1136 1 1.50551.4903

2 1.5829 1.5055 4 2 1.769 4 1 2 3.1136 1 1.5055x

− + − + − −= =

− + − + − −

(1.4903) 1.7714f =

โปรแกรมคานวณคาสงสด โดยวธ Quadratic Interpolation คอ PROGRAM QUAD REAL X0,X1,X2,XMAX WRITE(*,*) ' PLEASE ENTER X0,X1,X2,IMAX ' READ(*,*) X0,X1,X2,IMAX WRITE(*,20) 20 FORMAT(/,14X,'I',11X,'X',14X,'F(X)',/) CALL QUAD(X0,X1,X2,IMAX,XMAX) STOP END *---------------------------------------------- SUBROUTINE QUAD(X0,X1,X2,IMAX,XMAX) REAL X0,X1,X2,XMAX,FX DO 10 I=1,IMAX F0 = F(X0)*((X1**2)-(X2**2)) F1 = F(X1)*((X2**2)-(X0**2))

PH 615 172

Page 172: Computational Physics in Thai

F2 = F(X2)*((X0**2)-(X1**2)) FD0= 2*F(X0)*(X1-X2) FD1= 2*F(X1)*(X2-X0) FD2= 2*F(X2)*(X0-X1) XMAX=(F0+F1+F2)/(FD0+FD1+FD2) XMID=X1 IF (XMAX.GT.XMID)THEN X0=XMID X1=XMAX X2=X2 ELSE X0=X0 X1=XMAX X2=XMID ENDIF FX=F(XMAX) *------------------------------------------ WRITE(*,100) I,XMAX,FX 100 FORMAT(10X,I5,2F16.6) *------------------------------------------ 10 CONTINUE RETURN END *---------------------------------------- FUNCTION F(X) F=2*SIN(X)-((X**2.)/10.) RETURN END *----------------------------------------

PH 615 173

Page 173: Computational Physics in Thai

เอาทพทจากโปรแกรม คอ จะไดคามากสดท f(x) = 1.7757 ตวอยางท 7.4 กาหนดให f(x) = - 1.5x6 – 2x4 + 12x จงหาคามากทสดของฟงกชน โดยวธ Quadratic Interpolation โดยใช x0 = 0, x1 = 1 และ x2 = 2 วธทา สวนหนงของโปรแกรมทใชคานวณ คอ FUNCTION F(X) F=(-1.5*X**6)-(2*X**4)+12*X RETURN END

PH 615 174

Page 174: Computational Physics in Thai

*---------------------------------------- เอาทพทจากโปรแกรม คอ ซงจะไดคามากทสด = 8.69792 ตรงกบวธ Golden – Section Search

7.3 วธนวตน(Newton’ Method)

จากวธ Newton-Raphson ( )( )1

ii i

i

f xx x

f x+ = −′

ใชวธเดยวกน โดยให ( ) ( )g x f x′=

( )( )1

ii i

i

f xx x

f x+

′= −

′′ ( ) ( ) 0f x g x′ = =

PH 615 175

Page 175: Computational Physics in Thai

ตวอยางท 7.5 จงใชวธนวตน หาคามากสด ของ

2

( ) 2sin10xf x x= −

โดยใชคาเรมตน และจงเขยนโปรแกรมเพอคานวรคาสงสดน 0 2.5x =

วธทา

( )

( )

2cos512sin5

xf x x

f x x

′ = −

′′ = − −

1

2cos512sin5

ii

i i

i

xxx x

x+

−= −

− −

แทนคา เรมตน 0 2.5x =

1

2.52cos 2.552.5 0.9950812sin 2.55

x−

= − =− −

( )0.99508 1.57829f =

การ Iteration ครงท 2

1

0.9952cos0.99550.995 1.4690112sin 0.9955

x−

= − =− −

( )1.46901 1.77385f =

PH 615 176

Page 176: Computational Physics in Thai

โปรแกรมตอไปน คานวณคามากสดโดยวธนวตน PROGRAM NEWTON WRITE(*,*)'ENTER X0,IMAX' READ (*,*) X0,IMAX WRITE(*,30) 30 FORMAT(/,5X,'I',9X,'XROLD',11X,'F(X)',11X,'DF(X)' + ,10X,'DD(F(X))',/) XR = X0 DO 100 ITER= 1,IMAX XROLD=XR HX=H(XROLD) GX=G(XROLD) XM=XROLD-(GX/HX) XR=XM WRITE(*,40) ITER,XROLD ,F(XROLD),GX,HX 40 FORMAT(1X,I5,4F16.6) 100 CONTINUE STOP END *------------------------------------------------ FUNCTION F(X) F=2*SIN(X)-(X**2)/10 RETURN END *------------------------------------------------ * DIFFERENTIAL FUNCTION G(X)

PH 615 177

Page 177: Computational Physics in Thai

G=(2*COS(X))-(X/5) RETURN END *------------------------------------------------ * DOUBLE DIFFERENTIAL FUNCTION H(X) H=(-2*SIN(X))-(0.2) RETURN END *------------------------------------------------ เอาทพทจากโปรแกรม คอ จะไดคามากทสดของฟงกชน คอ 1.775726 ซงตรงกบวธการกอนหนาน แตลเขาหาคาตอบไดเรวกวามาก (ใชเพยง 4 iteration เทานน)

PH 615 178

Page 178: Computational Physics in Thai

ตวอยางท 7.6 จงหาคาสงสดของฟงกชนโดยวธนวตน f(x) = - 1.5x6 – 2x4 + 12x โดยใช x0 = 2 วธทา สวนหนงของโปรแกรมทใชในการคานวณ คอ FUNCTION F(X) F=(-1.5*X**6)-(2*X**4)+12*X RETURN END *------------------------------------------------ * DIFFERENTIAL FUNCTION G(X) G=(-9*X**5)-(8*X**3)+12 RETURN END *------------------------------------------------ * DOUBLE DIFFERENTIAL FUNCTION H(X) H=(-45*X**4)-(24*X**2) RETURN END *------------------------------------------------ เอาทพทจากโปรแกรม คอ

PH 615 179

Page 179: Computational Physics in Thai

ซงจะไดคามากสดของฟงกชน คอ 8.697929 ตรงกนทงสามวธ แตวธนจะเขาถงคาตอบไดเรวทสด (7 iterations เทานน)

PH 615 180

Page 180: Computational Physics in Thai

แบบฝกหดท 7

จากฟงกชนตอไปน f(x) = x2 – 8x + 12 ก) จงหาคามากทสดของฟงกชน โดยวธการดฟเฟอเรนชเอทฟงกชน

1.

ข) คานวณโดยใชวธ Quadratic interpolation โดยใช x0 = 0, x1 = 2 และ x2 = 6 กาหนดให f(x) = - 1.5x6 – 2x4 + 12x 2. ก) จงเขยนกราฟของฟงกชนน

ข) จงหาคามากทสดของฟงกชน โดยวธการดฟเฟอเรนชเอท ค) จงหาคามากทสดของฟงกชน โดยวธ golden – section โดยใช xl = 0, xu = 2 แลวทาซา 3 ครง

จงหาคามากทสด โดยใชวธ quadratic interpolation โดยใช x0 = 0, x1 = 1 และ x2 = 2 ทาการคานวณซา 3 ครง

ง)

จ) จงหาคามากทสด โดยใชวธ Newton ใชคาเรมตน x0 = 2 และทาการคานวณซา 3 ครง

3. ใชโปรแกรมในขอ 2. โดยใชวธการทงสามวธ 4. จงเปรยบเทยบวธการหาคามากทสดทงสามวธ

จงหาคามากทสดของฟงกชน f(x) = 2x – 1.75x2 + 1.1x3 – 0.25x4 โดยวธ 5. Golden – section (xl = -2, xu = 4, εs = 1%) ก) Quadratic interpolation (x0 = 1.75, x1 = 2, x2 = 2.25, iteration = 5) ข)

Newton (x0 = 2.5, εs = 1%) ค)

PH 615 181

Page 181: Computational Physics in Thai

บทท 8 การปรบเสน และการประมาณคา

ขอมลทไดจากการทดลอง จะมการเบยงเบนมากเราอาจจะใชกราฟเสนตรงหรอเสนโคงใด ๆ มาแทนขอมลททดลองไดน ในบทนจะศกษาการคานวณวาฟงกชนใดเปนตวแทนของชดขอมลไดดทสดและไดดวยวธใด

รปท 8.1 ขอมล a) จากการทดลอง b) จากการ fit ดวยโพลโนเมยล c) จากการ fit ดวยเสนตรง

PH 615 183

Page 182: Computational Physics in Thai

8.1 การถดถอยเชงเสน (Linear Regression) สมมตวาจากการทดลองไดขอมล 1 ชด คอ วธงายทสดคอ แทนขอมลชดนดวยกราฟเสนตรง

1 1 2 2 n n(x ,y ),(x ,y ),........,(x ,y )

y = a0 + a1x + e เมอ a0 = จดตดบนแกน y a1 = ความชนของกราฟ e = ความคลาดเคลอนจากคาทดลอง เสนตรงทนามาแทนขอมลจะตองเปนเสนตรงททาใหผลรวมของความคลาดเคลอนยกกาลงสอง มคานอยทสด หรอเขยนเปนสมการไดวา

( )0 11 1

n n

i ii i

e y a a= =

= − −∑ ∑ ix

( )22,.. ,mod

1 1

,n n

i i i i eli i

S e y y= =

= =∑ ∑

( )20 1

1

n

i ii

y a a x=

= − −∑ ตองการหาคา และ 0a 1a

( )

( )

0 10

0 11

2

2

ri i

ri i

S y a a xaS y a a x xa i

∂= − − −

∂∂

= − − −∂

PH 615 184

Page 183: Computational Physics in Thai

หาคา ทนอยทสด โดย set derivative = 0 rS

0 1

20 1

0

0i i

i i i i

y a a

y x a x a x

= − −

=

x∑ ∑ ∑∑ ∑ ∑

เนองจาก ดงนน 0a na=∑ 0

( )0 1i ina x a y+ =∑ ∑

( ) ( )20 1i i i ix a x a x+ =∑ ∑ ∑ y

สมการทงสองน มชอเรยกวา normal equation ได

( )1 22

i i i i

i i

n x y x ya

n x x

−=

−∑ ∑ ∑∑ ∑

และหา จาก 0a 0 1a y a= − x

ความคลาดเคลอนจากการประมาณคา

= xyS / 2−nSr

ถา St = total sum of square St = ( )2∑ − yyi เมอ r2 = coefficient of determination

r2 = t

rt

SSS −

r = 2r = correlation coefficient

PH 615 185

Page 184: Computational Physics in Thai

สาหรบการ fit ทด Sr = 0 และ r = r2 = 1 และสาหรบการท fit ไมด r = r2 = 0, Sr = St สตรทใชคานวณ r ของคอมพวเตอร คอ

r = ( )( )

( ) ( )∑ ∑∑ ∑∑∑∑

−−

−2222

iiii

iiii

yynxxn

yxyxn

ตวอยางท 8.1 จง fit กราฟเสนตรงกบคา x และ y ใน ตาราง ซงเปนคาทไดจากการทดลอง และจงเขยนโปรแกรมเพอ fit ขอมลน วธทา จะตองคานวณคาเหลานกอน

( ) ( )( ) ( )

( )

2

1 2

0

7, 119.5, 1402828, 472424, 3.4285717

7 119.5 28 240.8392857

7 140 28

3.428571 0.8392857 4 0.07142857

i i i

i

i

n x y x

x x

y y

a

a

= = =

= = =

= = =

−= =

= − =

∑ ∑∑

จะไดกราฟเสนตรง 0.07142857 0.8392857y x= +

PH 615 186

Page 185: Computational Physics in Thai

ix iy ( )2

iy y− ( )20 1i iy a a x− −

1 2 3 4 5 6 7

0.5 2.5 2.0 4.0 3.5 6.0 5.5

8.5765 0.8622 2.0408 0.3265 0.0051 6.6122 4.2908

0.1687 0.5625 0.3473 0.3265 0.5896 0.7972 0.1993

∑ 24.0 22.7143 2.9911

โปรแกรมทใช fit ขอมลน คอ *==================================================== PROGRAM L_REG *==================================================== * SET THIS BLOCK FOR NEW PROBLEM *---------------------------------------------------- PARAMETER (N=7) DIMENSION X(100),Y(100) DATA (X(I),I=1,N) /1.,2.,3.,4.,5.,6.,7./ DATA (Y(I),I=1,N) /0.5,2.5,2.,4.,3.5,6.,5.5/ *==================================================== * LINEAR REGRESSION PROCESS *---------------------------------------------------- SUMX=0. SUMY=0. SUMX2=0. SUMY2=0.

PH 615 187

Page 186: Computational Physics in Thai

SUMXY=0. ST=0. SR=0. DO 10 I=1,N SUMX=SUMX+X(I) SUMY=SUMY+Y(I) SUMX2=SUMX2+X(I)*X(I) SUMY2=SUMY2+Y(I)*Y(I) SUMXY=SUMXY+X(I)*Y(I) 10 CONTINUE DETER=N*SUMX2-SUMX*SUMX A0=(SUMY*SUMX2-SUMXY*SUMX)/DETER A1=(N*SUMXY-SUMX*SUMY)/DETER *==================================================== * OUTPUT REPORT *---------------------------------------------------- WRITE(*,100) WRITE(*,200) WRITE(*,300) WRITE(*,200) DO 20 ITH=1,N WRITE(*,400) ITH,X(ITH),Y(ITH) 20 CONTINUE WRITE(*,200) WRITE(*,800) READ(*,*) WRITE(*,200) WRITE(*,500)'X',SUMX WRITE(*,500)'Y',SUMY

PH 615 188

Page 187: Computational Physics in Thai

WRITE(*,500)'X*Y',SUMXY WRITE(*,500)'SQUARE X',SUMX2 WRITE(*,500)'SQUARE Y',SUMY2 WRITE(*,200) WRITE(*,600) A0,A1 WRITE(*,200) WRITE(*,700) A0,A1 WRITE(*,200) *==================================================== * ERROR REPORT *---------------------------------------------------- ST=0. YA=SUMY/N DO 30 IE=1,N ST=ST+(Y(IE)-(YA))**2. SR=SR+(Y(IE)-A1*X(IE)-A0)**2. 30 CONTINUE WRITE(*,810) ST,SR WRITE(*,200) * -------------------------------------------- * STANDARD DIVIATION * -------------------------------------------- SY=SQRT(ST/(N-1)) WRITE(*,900) SY * -------------------------------------------- * STANDARD ERROR OF THE ESTIMATE * -------------------------------------------- SYX=SQRT(SR/(N-2)) WRITE(*,1000) SYX

PH 615 189

Page 188: Computational Physics in Thai

* -------------------------------------------- * COEFFICIENT OF DETERMINATION * -------------------------------------------- R2=(ST-SR)/ST WRITE(*,1100) R2 * -------------------------------------------- * CORRELATION COEFFICIENT * -------------------------------------------- R=((N*SUMXY)-(SUMX*SUMY))/ + (SQRT(N*SUMX2-SUMX**2.)*SQRT(N*SUMY2-SUMY**2.)) WRITE(*,1200) R * -------------------------------------------- * PERCENT OF THE VARIABILITY OF THE DATA. * -------------------------------------------- P=R2*100 WRITE(*,1300) P WRITE(*,200) *------------------------------------------------------------ 100 FORMAT(5X,'DATA') 200 FORMAT(5X, + '-----------------------------------------------------') 300 FORMAT(14X,'ith',9X,'Xi',12X,'Yi') 400 FORMAT(13X,I3,1X,2F14.6) 500 FORMAT(6X,'SUMMATION OF',A9,1X,'=',F12.6) 600 FORMAT(5X,' COEFFICIENT A0 =',F14.10, + /,5X,' COEFFICIENT A1 =',F14.10) 700 FORMAT(6X,'THE LEAST-SQUARE FIT IS:',//, + 6X,'Y =',F14.10,' +',F14.10,' * X') 800 FORMAT(/,6X,'PRESS ENTER TO SEE THE RESULT')

PH 615 190

Page 189: Computational Physics in Thai

810 FORMAT(6X,'ST = ',F14.10,4X,', SR = ',F14.10) 900 FORMAT(6X,'STANDARD DIVIATION = ',F14.10) 1000 FORMAT(6X,'STANDARD ERROR OF THE ESTIMATE = ',F14.10) 1100 FORMAT(6X,'COEFFICIENT OF DETERMINATION = ',F14.10) 1200 FORMAT(6X,'CORRELATION COEFFICIENT = ',F14.10) 1300 FORMAT(/,6X,'THE LINE EXPLAINS ',F6.3, + ' % OF THE DATA VARIABILITY.') *---------------------------------------------------- STOP END *-------------------------------------------------------------------- เอาทพทจากโปรแกรม คอ

PH 615 191

Page 190: Computational Physics in Thai

สมการทใชแทนขอมล คอ y = 0.0714285746 + 0.8392857313x โดยม St = 22.714 Sr = 2.991 คาเบยงเบนมาตรฐาน = 1.946 สมประสทธสหสมพนธ = 0.932 ในทางปฏบต นกศกษาสามารถทจะนาโปรแกรมนไป fit ขอมลอนทนกศกษาไดจากการทดลองไดเปนอยางด ตวอยาง 8.2 จงแสดงวธคานวณ total standard estimate และ correlation coefficient ของขอมลในตวอยาง 8.1 วธทา

22.7143 1.94577 1yS = =−

= standard deviation

2.9911 0.77357 2y xS = =−

= standard error of estimate

เนองจาก ดงนนจงสามารถใช regression ไดด y xS S< y

2 22.7143 2.9911 0.868

22.7143r −

= =

หรอ

0.868 0.932r = = ซงมคาตรงกบการคานวณจากโปรแกรม

PH 615 192

Page 191: Computational Physics in Thai

ตวอยางท 8.3 จากการคานวณทางฟสกส

( ) ( )( )1 c m tgmv t ec

−= − (8.1)

จากสตรเอมไพรคอล

( )3.75

gm tv tc⎛= ⎜ t

⎞⎟+⎝ ⎠ (8.2)

เปรยบเทยบความเรว โดยอาศย Regression วธทา linear reqression ระหวางคาทฤษฎ (สมการ 8.1) กบคาจากการทดลอง mod 0.859 1.032el measurev v= − +

linear reqression ระหวางคาเอมไพรคอล (สมการ 8.2) กบคาจากการทดลอง mod 5.776 0.752el measurev v= +

ทงสองโมเดลได correlation coefficient มากกวา 0.99 ซงแสดงความสมพนธทดของโมเดลทงสอง ดงแสดงในรปท 8.2

PH 615 193

Page 192: Computational Physics in Thai

คานวณ m/s คานวณ m/s fv

Eq(8.1) fv

การทดลอง m/s Time,s fvEq(8.2)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

10.00 16.30 23.00 27.50 31.00 35.60 39.00 41.50 42.90 45.00 46.00 45.50 46.00 49.00 50.00

8.953 16.405 22.607 27.769 32.065 35.641 38.617 41.095 43.156 44.872 46.301 47.490 48.479 49.303 49.988

11.240 18.570 23.729 27.556 30.509 32.855 34.766 36.351 37.687 38.829 39.816 40.678 41.437 42.110 42.712

PH 615 194

Page 193: Computational Physics in Thai

รปท 8.2 a) ใช linear regression เปรยบเทยบคาจากทฤษฎกบคาจากการทดลอง b) ใช linear regression เปรยบเทยบคาจากสตรเอมไพรคอลกบคาจากการทดลอง

8.2 การถดถอยไมเปนเชงเสน Linear regression เปนเครองมอทมประสทธภาพในการ fit ขอมล อยางไรกตามบางครงความสมพนธของขอมลไมไดเปนชนดเชงเสน จะตอง fit ขอมลโดยใชโมเดลอน เชน exponential model, power equation หรอ saturation – growth – rate equation เปนตน

PH 615 195

Page 194: Computational Physics in Thai

รปท 8.3 Model ชนดอนทใชในการ fit ขอมล

สมการทใชสาหรบโมเดลทงสาม คอ

1. Exponential model.

11 1ln ln lnb xy a e y a b= ⇒ = + 1

2

2. Simple power equation.

22 2log log logby a x y b x a= ⇒ = +

3. Saturation-growth-rate equation.

33

3 3

1 1bx

3

1b x y a x a

y a ⇒ = ++

=

PH 615 196

Page 195: Computational Physics in Thai

ตวอยางท 8.4 จงอาศย least – squares regression เพอ fit เสนตรงกบขอมลตอไปน

x 1 3 5 7 10 12 13 16 18 20 y 4 5 6 5 8 7 6 9 12 11

จากนนใหสลบ x กบ y แลว fit ขอมลอกครงหนง วธทา สวนหนงของโปรแกรมทใชในการ fit คอ *==================================================== PROGRAM L_REG *==================================================== * SET THIS BLOCK FOR NEW PROBLEM *---------------------------------------------------- PARAMETER (N=10) DIMENSION X(100),Y(100) DATA (X(I),I=1,N) /1.,3.,5.,7.,10.,12.,13., + 16.,18.,20./ DATA (Y(I),I=1,N) /4.,5.,6.,5.,8.,7.,6.,9., + 12.,11./ *==================================================== เอาทพทจากโปรแกรม คอ

PH 615 197

Page 196: Computational Physics in Thai

สมการเสนตรงทใชแทนขอมล คอ y = 3.389 + 0.372x โดยม ความคลาดเคลอนมาตรฐาน = 1.232 สมประสทธสมสมพนธ = 0.900

PH 615 198

Page 197: Computational Physics in Thai

เมอสลบ x กบ y แลว fit เสนตรง จะไดเอาทพท คอ ซงจะไดสมการเสนตรงใหมทใชแทนขอมล คอ y = - 5.387 + 2.176x โดยม ความคลาดเคลอนมาตรฐาน = 2.977 สมประสทธสมสมพนธ = 0.900

PH 615 199

Page 198: Computational Physics in Thai

ตวอยางท 8.5 จง Fit Simple power equation กบขอมลในตาราง

วธทา ได l og 1.75log 0.3y x= −

ขอมลทใชในการ fit คอ

x y Log x Log y 1 2 3 4 5

0.5 1.7 3.4 5.7 8.4

0 0.301 0.477 0.602 0.699

-0.301 0.226 0.534 0.753 0.922

จดตดบนแกน log a2 = -0.3 ดงนน a2 = 10-0.3 = 0.5 ความชนของกราฟ คอ b2 = 1.75 ดงนน y = 0.5x1.75

PH 615 200

Page 199: Computational Physics in Thai

รปท 8.4 การ fit โดยใช power equation

8.3 การถดถอยโพลโนเมยล สมมตวาตองการ fit ดวย second-order polynomial

20 1 2y a a x a x e= + + +

Sum ของ error ยกกาลงสอง คอ

( )2

20 1 2

1

n

r i i ii

S y a a x a x=

= − − −∑

PH 615 201

Page 200: Computational Physics in Thai

หา derivative เทยบกบแตละ unknown

( )20 1 2

0

2ri i

S y a a x a xa∂

= − − − −∂ ∑ i

( )20 1 2

1

2ri i i i

S x y a a x a xa∂

= − − − −∂ ∑

( )2 20 1 2

2

2ri i i i

S x y a a x a xa∂

= − − − −∂ ∑

Set ทงสามสมการ =0 จะได normal eqs

( ) ( ) ( )20 1 2i in a x a x a y+ + = i∑ ∑ ∑

( ) ( ) ( )2 30 1 2i i i i ix a x a x a x+ + =∑ ∑ ∑ ∑ y

( ) ( ) ( )2 3 4

0 1 2i i i2

i ix a x a x a x+ + =∑ ∑ ∑ ∑ y

โดย จาก i=1 ถง n สมการทงสามม unknown ทตองหาคา คอ และ โดยสมประสทธหาไดจากขอมล จะเหนไดวา โจทยทหา least-squares ของ second-orderpolynomial จะเหมอนกบการแกระบบ 3 สมการ

∑ 0 1,a a 2a

ในกรณของ order polynomial thm −

2

0 1 2 .... mmy a a x a x a x e= + + + + +

จะเหมอนกบการแกระบบ m+1 สมการ

( )m+1 r

y xSS

n=

PH 615 202

Page 201: Computational Physics in Thai

ตวอยางท 8.6 จง Fit second-order polynomial กบขอมลในตาราง

ix iy ( )2

i iy y− ( )20 1 2i iy a a x a x− − + i

0 1 2 3 4 5

2.1 7.7 13.6 27.2 40.9 61.1

544.44 314.47 140.03 3.12

239.22 1272.11

0.14332 1.00286 1.08158 0.80491 0.61951 0.09439

ε 152.6 2513.39 3.74657

และจงเขยนโปรแกรมเพอ fit ขอมลน วธทา จากขอมลทให

42, 15, 979i im x x= = =∑ ∑ 6, 152.6, 585.6i i in y x y= = =∑ ∑ 2 22.5, 55, 2488i i ix x x y= = =∑ ∑

325.433, 225iy x= =∑ ดงนนจะเขยน simultaneous linear eqs. ไดเปน

0

1

2

6 15 55 152.615 55 225 585.655 225 979 2488.8

aaa

⎧ ⎫⎛ ⎞ ⎧ ⎫⎪ ⎪ ⎪ ⎪⎜ ⎟ =⎨ ⎬ ⎨ ⎬⎜ ⎟⎪ ⎪ ⎪ ⎪⎜ ⎟

⎝ ⎠ ⎩⎩ ⎭ ⎭

แกสมการโดยวธ Gauss elimination จะได 0 1 22.47857, 2.35929, 1.86071a a a= = =

PH 615 203

Page 202: Computational Physics in Thai

ดงนน 2.47857 2.35929 1.86071y x= + +

3.74657 1.126 3y xS = =−

2 2513.39 3.74657 0.998512513.39

r −= =

correlation coefficient 0.9925r = โปรแกรมทใชในการ fit ขอมล คอ *==================================================== PROGRAM POLY_REG *==================================================== * SET THIS BLOCK FOR NEW PROBLEM *---------------------------------------------------- PARAMETER (N=6) DIMENSION X(100),Y(100) DIMENSION A(10,10),B(10),XX(10),SR(10) DATA (X(I),I=1,N) /0.,1.,2.,3.,4.,5./ DATA (Y(I),I=1,N) /2.1,7.7,13.6,27.2,40.9,61.1/ *==================================================== WRITE(*,*)' PLEASE ENTER ORDER OF POLYNOMIAL', + ' (MAXIMUM ORDER IS 10)' READ(*,*) M DO 10 IR=1,10 B(IR)=0. DO 10 IC=1,10 A(IR,IC)=0. 10 CONTINUE

PH 615 204

Page 203: Computational Physics in Thai

DO 20 IR=1,M+1 DO 30 IC=1,M+1 K=IR+IC-2 DO 40 I=1,N A(IR,IC)=A(IR,IC)+X(I)**K 40 CONTINUE 30 CONTINUE DO 50 I=1,N B(IR)=B(IR)+Y(I)*(X(I)**(IR-1)) 50 CONTINUE 20 CONTINUE MP1=M+1 CALL GAUSS(MP1,A,B,XX) * --------------------------------- WRITE(*,100) M 100 FORMAT(/, + ' COEFFICIENTS OF FITTED POLYNOMIAL ORDER ',I2,' ARE:', /) DO 60 I=1,M+1 IM1=I-1 WRITE(*,300) IM1,XX(I) 300 FORMAT(5X,'A(',I2,') =',F16.10) 60 CONTINUE * ---------------------------------- *========================================================= * ERROR REPORT *--------------------------------------------------------- SUMSR=0. DO 70 I=1,N SR(I)=0.

PH 615 205

Page 204: Computational Physics in Thai

P=0. DO 80 J=1,M P=P+(XX(J+1)*(X(I)**J)) 80 CONTINUE SR(I)=(Y(I)-XX(1)-P)**2. SUMSR=SUMSR+SR(I) 70 CONTINUE YK=0. DO 90 K=1,N YK=YK+Y(K) 90 CONTINUE YAV=YK/N SUMYY=0. DO 91 L=1,N SUMYY=SUMYY+(Y(L)-YAV)**2. 91 CONTINUE SYX=SQRT(SUMSR/(N-(M+1))) R2=(SUMYY-SUMSR)/SUMYY R=SQRT(ABS(R2)) PC=R2*100. WRITE(*,400) SUMYY,SUMSR,SYX,R2,R,PC 400 FORMAT(/,5X,'ST = ',F16.7, + /,5X,'SR = ',F16.7, + /,5X,'THE STANDARD ERROR IS :',F12.7 + /,5X,'THE COEFFICIENT OF DETERMINATION IS :',F12.7, + /,5X,'THE CORRELATION COEFFICIENT IS :',F12.7, + /,5X,'THE RESULT EXPLAINS ',F9.3, + ' % OF THE DATA VARIABILITY.') STOP

PH 615 206

Page 205: Computational Physics in Thai

END *--------------------------------------------------------- SUBROUTINE GAUSS(NN,A,B,XX) DIMENSION A(10,10),B(10),XX(10) CALL SCL(NN,A,B) DO 100 IP=1,NN-1 CALL PIVOT(NN,A,B,IP) DO 200 IE=IP+1,NN RATIO = A(IE,IP)/A(IP,IP) DO 300 IC=IP+1,NN A(IE,IC) = A(IE,IC) - RATIO*A(IP,IC) 300 CONTINUE B(IE)=B(IE)-RATIO*B(IP) 200 CONTINUE DO 400 IE=IP+1,NN A(IE,IP)=0. 400 CONTINUE 100 CONTINUE XX(NN)=B(NN)/A(NN,NN) DO 500 IE=NN-1,1,-1 SUM=0. DO 600 IC=IE+1,NN SUM=SUM+A(IE,IC)*XX(IC) 600 CONTINUE XX(IE)=(B(IE)-SUM)/A(IE,IE) 500 CONTINUE RETURN END *----------------------------------------------------------

PH 615 207

Page 206: Computational Physics in Thai

SUBROUTINE SCL(NN,A,B) DIMENSION A(10,10),B(10) DO 10 IE=1,NN BIG=ABS(A(IE,1)) DO 20 IC=2,NN AMAX=ABS(A(IE,IC)) IF(AMAX.GT.BIG) BIG=AMAX 20 CONTINUE DO 30 IC=1,NN A(IE,IC)=A(IE,IC)/BIG 30 CONTINUE B(IE)=B(IE)/BIG 10 CONTINUE RETURN END *--------------------------------------------------------- SUBROUTINE PIVOT(NN,A,B,IP) DIMENSION A(10,10),B(10) JP=IP BIG=ABS(A(IP,IP)) DO 10 I=IP+1,NN AMAX=ABS(A(I,IP)) IF(AMAX.GT.BIG) THEN BIG=AMAX JP=I ENDIF 10 CONTINUE IF(JP.NE.IP) THEN DO 20 J=IP,NN

PH 615 208

Page 207: Computational Physics in Thai

DUMY = A(JP,J) A(JP,J)= A(IP,J) A(IP,J)= DUMY 20 CONTINUE DUMY = B(JP) B(JP) = B(IP) B(IP) = DUMY ENDIF RETURN END *----------------------------------------------------------- เอาทพททไดจากโปรแกรม คอ สมการท fit ขอมล คอ y = 2.47859 + 2.35926x + 1.860719x2 ซงตรงกบการคานวณดวยคอ มคาความคลาดเคลอนมาตรฐาน Sy/x = 1.12 และสมประสทธสหสมพนธ = 0.9992544 แสดงวา 99.851% ของขอมลอยภายในเสนโคงน การ fit ขอมลดวยสมการ quadration จงมประสทธภาพมาก ดงแสดงในรปท 8.5 โปรแกรมทใชในการ fit ขอมลดวยโพลโนเมยลน สามารถ

ใชไดถงโพลโนเมยลลาดบ 10 จงมประสทธภาพในการ fit ขอมลมาก

PH 615 209

Page 208: Computational Physics in Thai

รปท 8.5 การ fit ดวย second – order polynomial ตวอยางท 8.7 ก) จง fit ขอมลตอไปนดวยเสนตรงและจงเขยนกราฟของขอมล และกราฟเสนตรงเพอการเปรยบเทยบ

ข) เชนเดยวกบขอ ก) แต fit ดวยเสนพาราโบลา

x 2 3 4 7 8 9 5 5 y 9 6 5 10 9 11 2 3

วธทา ก) สวนหนงโปรแกรมทใชในการ fit ดวยเสนตรง คอ *==================================================== PROGRAM LIN_REG *==================================================== * SET THIS BLOCK FOR NEW PROBLEM *---------------------------------------------------- PARAMETER (N=8) DIMENSION X(100),Y(100)

PH 615 210

Page 209: Computational Physics in Thai

DATA (X(I),I=1,N) /2.,3.,4.,7.,8.,9.,5.,5./ DATA (Y(I),I=1,N) /9.,6.,5.,10.,9.,11.,2.,3./ *==================================================== * LINEAR REGRESSION PROCESS *---------------------------------------------------- เอาทพทจากโปรแกรม คอ สมการท fit คอ y = 3.48955 + 0.62985x

PH 615 211

Page 210: Computational Physics in Thai

โดยมสมประสทธสหสมพนธ = 0.45893 แสดงถงความสมพนธระหวางขอมลและกราฟเสนตรงทเลวมาก เพราะวาขอมลเพยง 21.062 % เทานน ทแทนดวยกราฟเสนตรง ดงแสดงในรปตอไปน

0 2 4 6 8

5

10

15

20

10

vy

f1 x( )

vx x,

f1 x( ) 3.489551 0.629850x+:=

ข) สวนหนงโปรแกรมทใชในการ fit ดวยเสนพาราโบลา คอ

*==================================================== PROGRAM POLY_REG *==================================================== * SET THIS BLOCK FOR NEW PROBLEM *---------------------------------------------------- PARAMETER (N=8) DIMENSION X(100),Y(100) DIMENSION A(10,10),B(10),XX(10),SR(10) DATA (X(I),I=1,N) /2.,3.,4.,7.,8.,9.,5.,5./ DATA (Y(I),I=1,N) /9.,6.,5.,10.,9.,11.,2.,3./

PH 615 212

Page 211: Computational Physics in Thai

*==================================================== WRITE(*,*)' PLEASE ENTER ORDER OF POLYNOMIAL', + ' (MAXIMUM ORDER IS 10)' READ(*,*) M เอาทพทจากโปรแกรม คอ สมการท fit คอ y = 166.02698 – 4.80693x + 0.48894x2 โดยมสมประสทธสหสมพนธ = 0.8473528 ซงแสดงวาขอมลสามารถอธบายไดดวยสมการถง 71.801 % ดกวาการ fit ดวยกราฟเสนตรงมาก ดงแสดงในรปตอไปน

PH 615 213

Page 212: Computational Physics in Thai

0 2 4 6 8 1

5

10

15

20

0

vy

f1 x( )

f2 x( )

vx x,

f2 x( ) 16.026979 4.806926x− 0.488945x2+:=

f1 x( ) 3.489551 0.629850x+:=

8.4 การถดถอยเชงเสนหลายตวแปร ถาหากวา y เปนฟงกชนเชงเสนกบตวแปรสองตว เชน y เปนฟงกชนของ x1

และ x2

0 1 1 2 2y a a x a x e= + + +

รปท 8.6 การถดถอยเชงเสนหลายตวแปร

PH 615 214

Page 213: Computational Physics in Thai

เชนเดยวกบวธการทผานมา คาสมประสทธหาจากผลรวมของกาลงสองของความคลาดเคลอน

( )2

0 1 1 2 21

n

r i ii

S y a a x a x=

= − − −∑ i

( )0 1 1 2 20

2ri i

S y a a x a xa∂

= − − − −∂ ∑ i

( )1 0 1 1 2 21

2ri i i i

S x y a a x a xa∂

= − − − −∂ ∑

( )2 0 1 1 2 22

2ri i i i

S x y a a x a xa∂

= − − − −∂ ∑

เซต partial derivatives = 0

01 22

1 1 1 2 1 12

2 1 2 2 2 2

ii i

i i i i i

i i i i i i

yan x x

ix x x x a xx x x x a

y

x y

⎧ ⎫⎛ ⎞⎧ ⎫⎪ ⎪⎜ ⎟⎪ ⎪ ⎪ ⎪=⎨ ⎬ ⎨ ⎬⎜ ⎟

⎪ ⎪ ⎪ ⎪⎜ ⎟⎩ ⎭⎝ ⎠ ⎪ ⎪⎩ ⎭

∑∑ ∑∑ ∑ ∑ ∑∑ ∑ ∑ ∑

ในกรณ m dimension

0 1 1 2 2 ....... m my a a x a x a x= + + + + + e

เมอ standard error

( )m+1 r

y xSS

n=

สาหรบกรณ power equation

1 20 1 2 ....... maa a

my a x x x=

PH 615 215

Page 214: Computational Physics in Thai

ตวอยางท 8.8 ขอมลตอไปนคานวณจากสมการ

1 25 4 3y x x= + −

1x 2x y 0 2

2.5 1 4 7

0 1 2 3 6 2

5 10 9 0 3 27

จงอาศย multiple linear regression เพอ fit ขอมลชดน และจงเขยนโปรแกรมเพอ fit ขอมล วธทา หาคาสมประสทธตาง ๆ ได

0

1

2

6 16.5 14 5416.5 76.25 48 54 243.514 48 979 100

aaa

⎧ ⎫⎛ ⎞ ⎧ ⎫⎪ ⎪ ⎪ ⎪⎜ ⎟ =⎨ ⎬ ⎨ ⎬⎜ ⎟⎪ ⎪ ⎪ ⎪⎜ ⎟

⎝ ⎠ ⎩ ⎭ ⎩ ⎭

แกสมการโดยวธ Gauss elimination จะได

0 1 25, 4, 3a a a= = = − ซงตรงกบสมการขางบน โปรแกรมทใชในการ fit ขอมล คอ

PH 615 216

Page 215: Computational Physics in Thai

*==================================================== PROGRAM MULTI_REG *==================================================== * SET THIS BLOCK FOR NEW PROBLEM *---------------------------------------------------- PARAMETER (N=6,K=2) DIMENSION X(100,10),Y(100) DIMENSION A(10,10),B(10),XX(10) DATA ((X(I,J),J=1,K),I=1,N)/0.,0., + 2.,1., + 2.5,2., + 1.,3., + 4.,6., + 7.,2./ DATA (Y(I),I=1,N) /5.,10.,9.,0.,3.,27./ *==================================================== * PROCESS *---------------------------------------------------- DO 10 IR=1,10 B(IR)=0. DO 10 IC=1,10 A(IR,IC)=0. 10 CONTINUE DO 20 I=1,N DO 30 IR=1,K+1 IF(IR.EQ.1) FR=1. IF(IR.GT.1) FR=X(I,IR-1) DO 40 IC=1,K+1 IF(IC.EQ.1) FC=1.

PH 615 217

Page 216: Computational Physics in Thai

IF(IC.GT.1) FC=X(I,IC-1) A(IR,IC)=A(IR,IC)+FR*FC 40 CONTINUE B(IR)=B(IR)+FR*Y(I) 30 CONTINUE 20 CONTINUE KP1=K+1 CALL GAUSS(KP1,A,B,XX) *==================================================== * OUTPUT REPORT *---------------------------------------------------- 100 FORMAT(5X, + '------------------------------------------') 200 FORMAT(6X, + ' COEFFICIENTS OF FITTED POLYNOMIAL ARE:') 300 FORMAT(7X,'A(',I2,') =',F16.10) * ------------------------------- WRITE(*,100) WRITE(*,200) WRITE(*,100) DO 50 I=1,K+1 IM1=I-1 WRITE(*,300) IM1,XX(I) 50 CONTINUE WRITE(*,100) *---------------------------------------------------- STOP END *====================================================

PH 615 218

Page 217: Computational Physics in Thai

SUBROUTINE GAUSS(NN,A,B,XX) DIMENSION A(10,10),B(10),XX(10) CALL SCL(NN,A,B) DO 100 IP=1,NN-1 CALL PIVOT(NN,A,B,IP) DO 200 IE=IP+1,NN RATIO = A(IE,IP)/A(IP,IP) DO 300 IC=IP+1,NN A(IE,IC) = A(IE,IC) - RATIO*A(IP,IC) 300 CONTINUE B(IE)=B(IE)-RATIO*B(IP) 200 CONTINUE DO 400 IE=IP+1,NN A(IE,IP)=0. 400 CONTINUE 100 CONTINUE XX(NN)=B(NN)/A(NN,NN) DO 500 IE=NN-1,1,-1 SUM=0. DO 600 IC=IE+1,NN SUM=SUM+A(IE,IC)*XX(IC) 600 CONTINUE XX(IE)=(B(IE)-SUM)/A(IE,IE) 500 CONTINUE RETURN END *---------------------------------------------------- SUBROUTINE SCL(NN,A,B) DIMENSION A(10,10),B(10)

PH 615 219

Page 218: Computational Physics in Thai

DO 10 IE=1,NN BIG=ABS(A(IE,1)) DO 20 IC=2,NN AMAX=ABS(A(IE,IC)) IF(AMAX.GT.BIG) BIG=AMAX 20 CONTINUE DO 30 IC=1,NN A(IE,IC)=A(IE,IC)/BIG 30 CONTINUE B(IE)=B(IE)/BIG 10 CONTINUE RETURN END *---------------------------------------------------- SUBROUTINE PIVOT(NN,A,B,IP) DIMENSION A(10,10),B(10) JP=IP BIG=ABS(A(IP,IP)) DO 10 I=IP+1,NN AMAX=ABS(A(I,IP)) IF(AMAX.GT.BIG) THEN BIG=AMAX JP=I ENDIF 10 CONTINUE IF(JP.NE.IP) THEN DO 20 J=IP,NN DUMY = A(JP,J) A(JP,J)= A(IP,J)

PH 615 220

Page 219: Computational Physics in Thai

A(IP,J)= DUMY 20 CONTINUE DUMY = B(JP) B(JP) = B(IP) B(IP) = DUMY ENDIF RETURN END *---------------------------------------------------- เอาทพทจากโปรแกรม คอ ซงจะได y = 5 + 4x1 – 3x2 ตรงกบสมการเรมตน ตวอยางท 8.9 จง Fit ฟงกชน กบขอมล ( )1

0 1 0( , , ) 1 a xf x a a a e−= −

x 0.25 0.75 1.25 1.75 2.25

y 0.28 0.57 0.68 0.74 0.79

ใชคาเรมตน และ สาหรบคาเรมจะมคา ผลรวมของกาลงสองของ error = 0.0248

0 1.0a = 1 1.0a =

PH 615 221

Page 220: Computational Physics in Thai

วธทา

1

0

1 a xf ea

−∂= −

∂ และ 1

01

a xf a xea

−∂=

อาศยสมการทผานมาหาคาเมทรกซ

[ ]0

0.2212 0.19470.5276 0.35430.7135 0.35810.8262 0.30410.8946 0.2371

Z

⎛ ⎞⎜ ⎟⎜ ⎟⎜ ⎟=⎜ ⎟⎜ ⎟⎜ ⎟⎝ ⎠

[ ] [ ]0 0

2.3193 0.94890.9489 0.4404

TZ Z ⎛ ⎞= ⎜ ⎟⎝ ⎠

[ ] [ ]1

0 0

3.6397 7.84217.8421 19.1678

TZ Z− −⎛ ⎞⎡ ⎤ = ⎜ ⎟⎣ ⎦ −⎝ ⎠

คณดวย[ จะได ]0TZ

[ ] { }0

0.15330.0365

TZ D−⎛ ⎞

= ⎜ ⎟−⎝ ⎠

หาคา vector { โดยอาศยสมการ (17.35) }AΔ

0.2714

0.5019A

−⎧ ⎫Δ = ⎨ ⎬

⎩ ⎭

นาไปรวมกบพารามเตอรซงคาดไว จะได

0

1

1.0 0.2714 0.72861.0 0.5019 1.5019

aa

−⎧ ⎫ ⎧ ⎫ ⎧ ⎫ ⎧ ⎫= + =⎨ ⎬ ⎨ ⎬ ⎨ ⎬ ⎨ ⎬⎩ ⎭ ⎩ ⎭ ⎩ ⎭⎩ ⎭

ซงคาน จะได sum ของ error ยกกาลงสอง = 0.0243 ทาเชนนอก จะได

0 0.79186a = และ 1 1.6751a =

ซงมคา sum ของ error ยกกาลงสอง = 0.000662

PH 615 222

Page 221: Computational Physics in Thai

ตวอยางท 8.10 ขอมลตอไปนไดจากการเกบตวอยางในหองปฏบตการชววทยา โดยทาการนบจานวนแบคทเรยทเพาะไดในแตละวน

วน 0 2 4 6 8 10 12 14 16 18 20 จานวน x 106 67.38 70.93 74.67 78.60 82.74 87.10 91.69 92.51 101.60 106.95 112.58

จง fit สมการกบขอมลนโดยใชวธ fit ตาง ๆ กน เพอหาวาวธใดดทสด วธทา

Least-square

y = 2.2165x + 65.721

R 2 = 0.9857

65

75

85

95

105

115

0 5 10 15 20 25

Polynomial

y = 0.0358x 2 + 1.5005x + 67.869

R 2 = 0.9937

65

75

85

95

105

115

0 5 10 15 20 25

PH 615 223

Page 222: Computational Physics in Thai

Exponential

y = 67.382e 0.0253x

R 2 = 0.9945

65

75

85

95

105

115

0 5 10 15 20 25

จะเหนไดวาการ fit ดวยกราฟเอกโพเนนเชยลมคาสมประสทธสหสมพนธมคามากทสด จงเปนวธการทดทสดในการ fit ขอมลชดน

8.5 การประมาณคา เมอทาการ fit ขอมลแลว บางครงเราอาจจะตองการหาคาทอยระหวางชดขอมล เชน เมอทาการทดลอง x อาจจะเทากบ 1, 5, 10,… ตองการทราบคา เมอ x = 3 จะสามารถใชวธการประมาณได วธการงายทสดกคอวธ Newton’s divided – difference interpolating polynomials โดยท fn(x) = f(x0) + (x – x0)f[x1,x0] + … + (x – x0)…f[xn,…, x0]

PH 615 224

Page 223: Computational Physics in Thai

ตวอยางท 8.11 จง fit โพลโนเมยลลาดบสองกบขอมล x0 = 1 f(x0) = 0 x1 = 4 f(x1) = 1.386294 x2 = 5 f(x2) = 1.609438 x3 = 6 f(x3) = 1.791759 อาศยโพลโนเมยลประมาณคา ln(2) วธทา โปรแกรมทใชในการคานวณ คอ *==================================================== PROGRAM NT_ITP DIMENSION X(10),FX(10,10) *----------------------------------------------------- PARAMETER (N=4) DATA (X(I),I=1,N) /1.,4.,5.,6./ DATA (FX(I,1),I=1,N) /0.,1.386294,1.609438,1.791759/ XX=2. *----------------------------------------------------- M=N DO 10 IC=2,N M=M-1 DO 20 IR=1,M FX(IR,IC)=FX(IR+1,IC-1)-FX(IR,IC-1) FX(IR,IC)=FX(IR,IC)/(X(IR+IC-1)-X(IR)) 20 CONTINUE 10 CONTINUE FF=FX(1,1) FAC=1.

PH 615 225

Page 224: Computational Physics in Thai

DO 30 I=2,N FAC=FAC*(XX-X(I-1)) FF=FF+FX(1,I)*FAC 30 CONTINUE *==================================================== * OUTPUT REPORT *---------------------------------------------------- 100 FORMAT(5X,'DATA') 200 FORMAT(5X, + '--------------------------------------------') 300 FORMAT(10X,'ith',9X,'Xi',11X,'F(Xi)') 400 FORMAT(9X,I3,1X,2F14.6) 500 FORMAT(5X,'VALUE OF F(X) AT X=',F10.6, + ' IS', F12.8) WRITE(*,100) WRITE(*,200) WRITE(*,300) WRITE(*,200) DO 40 ITH=1,N WRITE(*,400) ITH,X(ITH),FX(ITH,1) 40 CONTINUE WRITE(*,200) WRITE(*,500) XX,FF WRITE(*,200) STOP END *----------------------------------------------------

PH 615 226

Page 225: Computational Physics in Thai

เอาทพทจากโปรแกรม คอ จะได ln(2) = 0.62876755

8.6 อนกรมฟเรยร เราไดศกษาการปรบเสนโคงโดยอาศยโพลโนเมยลในหวขอทผานมา ปญหาทางดานฟสกสบางครงเกยวของกบการออสซลเลต ซงอาจจะตองใชฟงกชนเรขาคณต เชน cos x, cos 2x, …, sin x, sin 2x, … มาใชแทนการประมาณอนกรมฟเรยรจะอาศยฟงกชนเหลานมาใชแทนโมเดล สาหรบฟงกชนทมคาบ T อนกรมฟเรยรสามารถเขยนไดเปน

f(x) = a0 + a1 cos(ω0t) + b1 sin(ω0t) + a2 cos(2ω0t) + b2 sin(2ω0t) + …

PH 615 227

Page 226: Computational Physics in Thai

รปท 8.7 การประมาณอนกรมฟเรยรกบคลนรปสเหลยม

PH 615 228

Page 227: Computational Physics in Thai

แบบฝกหดบทท 8

1. จง fit ขอมลชดนดวยกราฟเสนตรง

x 5 6 10 14 16 20 22 28 28 36 38 y 30 22 28 14 22 16 8 8 14 0 4

และจงประมาณคาท x = 12, 24 และ 31

2. จง fit ขอมลชดนดวยโมเดล saturation – growth – rate

x 0.75 2 2.5 4 6 8 8.5 y 0.8 1.3 1.2 1.6 1.7 1.8 1.7

และจงเขยนกราฟขอมลและสมการบนกราฟเดยวกน

3. จงใชโมเดลเอกโพเนนเชยล fit ขอมลน

x 0.4 0.8 1.2 1.6 2.0 2.3 y 750 1000 1400 2000 2700 3750

4. จงใช multiple linear regression เพอ fit ขอมล x1 0 1 1 2 2 3 3 4 4 x2 0 1 2 1 2 1 2 1 2 y 1.5 1.8 12.8 25.7 20.6 35.0 29.8 45.5 40.3

5. จงอาศยการถดถอยไมเปนเชงเสนเพอ fit กราฟพาราโบลากบขอมลน

x 0.075 0.5 1 1.2 1.7 2.0 2.3 y 600 800 1200 1400 2050 2650 3750

PH 615 229

Page 228: Computational Physics in Thai

บทท 9 การอนทเกรท

การอนทเกรททงายทสดกคอ การอนทเกรทโดยการแทนฟงกชนดวยโพลโนเมยล

( ) ( )b b

na a

I f x dx f x dx= ≅∫ ∫

เมอ ( ) 1

0 1 1..... n nn nf x a a x a x a x−−= + + + +

รปท 9.1 การประมาณอนทเกรทดวยพนทใตกราฟ a) เสนตรง b) เสนพาราโบลา

รปท 9.2 การประมาณอนทเกรทดวยพนทใตกราฟเสนตรงสามเสน

PH 615 231

Page 229: Computational Physics in Thai

ตวอยางท 9.1 จงอนทเกรทสมการตอไปน

a) ( )∫ −−3

01 dxe x

b) ( )∫− +−−4

2

5341 dxxxx

c) ( )∫ +2/

0sin48

πdxx

วธทา

a) = 2.05 ( )∫ −−3

01 dxe x

b) ( )∫− +−−4

2

5341 dxxxx = 432

c) = 16.566 ( )∫ +2/

0sin48

πdxx

9.1 ทราเปซอยดอลรล (Trapezoidal rule) อาศยโพลโนเมยลลาดบแรก

( ) ( )1

b b

a a

I f x dx f x dx= ≅∫ ∫

เมอ

( ) ( ) ( ) ( ) ( )1

f b f af x f a x a

b a−

= + −−

( ) ( ) ( ) ( )b

a

f b f aI f a x a dx

b a−⎡ ⎤

= + −⎢ ⎥−⎣ ⎦∫

จะได

( ) ( ) ( )2

f a f bI b a

+= −

เรยกวา Trapezoidal rule

PH 615 232

Page 230: Computational Physics in Thai

รปท 9.3 แสดง Trapezoidal rule

โดยมความคลาดเคลอน

( )( )33112rE f b aξ= − −

เมอ อยระหวาง และb แตถาตองการใหไดความถกตองแมนยามากยงขน ใหแบงชวงของการอนทเกรทเปนสวนเลกหลาย ๆ สวน จากนนใหใชทราเปซอยดอลรลกบแตละสวนเรยกวา Multiple – Trapezoidal rule

ξ a

ตวอยางท 9.2 จงอาศย Trapezoidal rule. อนทเกรตสมการ

( ) 2 3 41 0.2 25 200 675 900 400 5f x x x x x= + − + − + x

จาก a = 0 ถง b = 0.8 และจงเขยนโปรแกรมโดยใชวธทราเปซอยดอล และวธ Multiple – Trapezoidal

PH 615 233

Page 231: Computational Physics in Thai

วธทา

( )0 0.f = 2

( )0.8 0.232f =

( ) 0.2 0.2320.8 0.17282

I +≅ =

คาทแทจรงคอ 1.640533 1.640533 0.1728 1.467733rE = − = คดเปนerror 89.5% โปรแกรมทใชในการคานวณ คอ PROGRAM TRAPZ REAL A,B,OLDVAL,NEWVAL,H,INTEGR INTEGER N PRINT *,'ENTER LEFT AND RIGHT ENDPOINTS OF INTERVAL' PRINT *,'OF INTEGRATION. ALSO ENTER ACCURACY DESIRED.' PRINT *,'ENTER A,B,N ' READ *,A,B,N H=(B-A)/N OLDVAL = (B-A)*(F(A)+F(B))/2. SUM = (F(A)+F(B))/2 DO 10 I=1,N-1 SUM = SUM+F(A+I*H) 10 CONTINUE INTEGR =H*SUM NEWVAL = INTEGR

PH 615 234

Page 232: Computational Physics in Thai

WRITE(*,100)N-1,OLDVAL WRITE(*,200)NEWVAL 100 FORMAT(/,7X,'THE INTEGRAL VALUE AFTER ',I3,' ITERATION',//, + 7X,'BY THE TRAPEZOIDAL RULE IS :',F10.6,///) 200 FORMAT( 7X,'THE VALUE OF THE INTEGRAL BY',//, + 7X,'THE MULTIPLE-TRAPEZOIDAL RULE IS :',F10.6) STOP END *-------------------------------------------------------------------- FUNCTION F(X) REAL X F = 0.2+25.*X-200.*X**2.+675.*X**3.-900.*X**4.+400.*X**5. END *------------------------------------------------------------------- เอาทพทจากการคานวณ คอ ซงจะไดคาอนทเกรท คอ 0.1728 ตรงกบการคานวณดวยมอ แตถาใช multiple trapezoidal rule จะไดคาอนทเกรทคอ 1.615042 ซงมคาใกลเคยงกบคาทแทจรงมาก

PH 615 235

Page 233: Computational Physics in Thai

ตวอยางท 9.3 อาศยวธทราเปซอยดอล และ multiple trapezoidal คานวณอนทเกรทในตวอยาง 9.1 วธทา ใชโปรแกรมคานวณอนทเกรทโดยวธทราเปซอยดอลในตวอยาง 9.1 จะไดเอาทพท คอ a) b) c)

PH 615 236

Page 234: Computational Physics in Thai

จะเหนไดวา ถาแบง segment จานวนนอยคาทไดจะผดพลาดไปมาก ในขอ c) ใชจานวน segment = 1,000 จงมคาใกลเคยงกบคาทแทจรง อยางไรกตาม ถา segment มจานวนมาก การคานวณดวยเครองคดเลขจะยงยากและใชเวลานานมาก

9.2 วธซมปสน (Simpson’s Rule) อาศยโพลโนเมยลลาดบสง ม 2 วธ คอ วธท 1 หลกการซมปสน 1/3

รปท 9.3 หลกการซมปสน 1/3 สตรทใชในการคานวณคอ

( ) ( ) ( ) ( )0 146

2f x f x f xI b a

+ += −

ความคลาดเคลอน

( ) ( )5

4

2880r

b aE f ξ

−= −

PH 615 237

Page 235: Computational Physics in Thai

สาหรบการใชหลกการซมปสน 1/3 หลาย ๆ ครง ครงละหนงสวน

รปท 9.4 การใชหลกการซมปสน 1/3 แตละสวน

( )b ah

n−

= −

≅I ( ) ( ) ( ) ( ) ( ) ( ) ...6

426

42 432210 +++

+++ xfxfxfhxfxfxfh

+ ( ) ( ) ( )6

42 12 nnn xfxfxfh ++ −−

หรอ

( )( ) ( ) ( ) ( )

1 2

01,3,5 2,4,6

4 2

3

n n

i ji j

nf x f x f x fI b a

n

− −

= =

+ +≅ −

∑ ∑ x

โดยมความคลาดเคลอน

( )54

180a

b aE f

n−

= −

PH 615 238

Page 236: Computational Physics in Thai

วธท 2 หลกการซมปสน 3/8 สมการทใชคานวณคอ

( ) ( ) ( ) ( ) ( )0 1 23 38

3f x f x f x f xI b a

+ + +≅ −

โดยมความคลาดเคลอน

( ) ( )5

4

6480a

b aE f ξ

−= −

ตวอยางท 9.4 จงหาคาอนทเกรทของสมการ โดยวธซมปสน 1/3 f(x) = 0.2 + 25x – 200x2 + 675x3 – 900x4 + 400x5

จาก a = 0 ถง b = 0.8 คาตอบทถกตองคอ 1.640533 วธทา ใช n = 4 (h = 0.2) f(0) = 0.2 f(0.2) = 1.288 f(0.4) = 2.456 f(0.6) = 3.464 f(0.8) = 0.232 จะได

I = ( ) ( )12

232.0456.22464.3288.142.08.0 ++++

= 1.623467 มคาใกลเคยงกบคาทแทจรง ความคลาดเคลอน

= aE ( )( )

( )24004180

8.04

2

−−

= 0.017067

PH 615 239

Page 237: Computational Physics in Thai

โปรแกรมทใชในการคานวณคอ PROGRAM SIMPSN REAL A,B,INTEGL,SUMODD,SUMEVEN,H INTEGER N INTEGL=0. WRITE(*,*)' ENTER A,B,N' READ(*,*) A,B,N H=(B-A)/N CALL SHOWFX(A,N,H) CALL SUMMATION(A,N,H,SUMODD,SUMEVN) *------------------------------------------------------------ * EQUATION 21.18 P.599 *------------------------------------------------------------ INTEGL=(B-A)*(F(A)+4.*SUMODD+2.*SUMEVN+F(B))/(3.*N) *------------------------------------------------------------ WRITE(*,50) 50 FORMAT(9X,'N',13X,'H',11X,'F(A)',9X,'F(B)',6X,'INTEGRAL',/) WRITE(*,100) N,H,F(A),F(B),INTEGL 100 FORMAT(5X,I5,5X,5F13.7) STOP END *============================================================ *------------------------------------------------------------ FUNCTION F(X) REAL X F = 0.2+25.*X-200.*X*X+675.*X**3.-900.*X**4.+400.*X**5. END *------------------------------------------------------------

PH 615 240

Page 238: Computational Physics in Thai

SUBROUTINE SUMMATION(A,N,H,SUMODD,SUMEVN) REAL A,H,SUMODD,SUMEVN SUMODD =0. SUMEVN =0. DO 10 I=1,N,2 IF(I.GE.N) GO TO 30 SUMODD=SUMODD+F(A+(I*H)) 10 CONTINUE 30 DO 20 J=2,N,2 IF(J.GE.N) GO TO 100 SUMEVN=SUMEVN+F(A+(J*H)) 20 CONTINUE *------------------------------------------- 100 WRITE(*,50) 50 FORMAT(//9X,'SUMODD',6X,'SUMEVEN',/) WRITE(*,200) SUMODD,SUMEVN 200 FORMAT(/5X,2F12.6//) *------------------------------------------- RETURN END *============================================================ SUBROUTINE SHOWFX(A,N,H) REAL A,H WRITE(*,50) F(A) 50 FORMAT(10X,'F( 0 ) =',F12.6) DO 10 I=1,N WRITE(*,100) I,F(A+(I*H)) 10 CONTINUE 100 FORMAT(10X,'F(',I3,' )',' =',F12.6)

PH 615 241

Page 239: Computational Physics in Thai

RETURN END *============================================================ เอาทพทจากโปรแกรม คอ จะไดอนทเกรท = 1.6234670 ตวอยางท 9.5 จงหาอนทเกรทในตวอยาง 9.1 โดยใชวธการซมปสน 1/3 วธทา โปรแกรมทใชในการคานวณจากตวอยาง 9.4 โดยเปลยน f(x) เอาทพทจากโปรแกรม คอ

PH 615 242

Page 240: Computational Physics in Thai

a) b) c)

PH 615 243

Page 241: Computational Physics in Thai

ตวอยางท 9.6 จงหาคาอนทเกรทในตวอยาง 9.1 โดยวธ Multiple simpson 1/3 rule โดยใช N = 6 วธทา โปรแกรมทใชในการคานวณ คอ * MULTIPLE SIMSON'S 1/3 RULES * PROGRAM SIMPSN REAL A,B,INTEGL,SUMODD,SUMEVEN,H INTEGER N INTEGL=0. WRITE(*,20) 20 FORMAT(/,10X,'ENTER LEFT AND RIGHT ENDPOINTS ', + 'OF INTEGRATION A,B AND INTERVAL,N ') READ(*,*) A,B,N H=(B-A)/N CALL SHOWFX(A,N,H) CALL SUMMATION(A,N,H,SUMODD,SUMEVN) *------------------------------------------------------------ * EQUATION 21.18 P.599 *------------------------------------------------------------ INTEGL=(B-A)*(F(A)+4.*SUMODD+2.*SUMEVN+F(B))/(3.*N) *------------------------------------------------------------ WRITE(*,10) A,B WRITE(*,50) 10 FORMAT(/, 10X,'THE MULTIPLE SIMSON 1/3 RULES',/, + 10X,'INTEGRATE F(X) = (1.-EXP(-X))',/, + 10X,'FROM',F9.5,' TO',F9.5,/)

PH 615 244

Page 242: Computational Physics in Thai

50 FORMAT(10X,'N',13X,'H',11X,'F(A)',9X,'F(B)',7X, + 'INTEGRAL',/) WRITE(*,100) N,H,F(A),F(B),INTEGL 100 FORMAT(6X,I5,6X,5F13.7) STOP END *============================================================ SUBROUTINE SUMMATION(A,N,H,SUMODD,SUMEVN) REAL A,H,SUMODD,SUMEVN SUMODD =0. SUMEVN =0. DO 10 I=1,N,2 IF(I.GE.N) GO TO 30 SUMODD=SUMODD+F(A+(I*H)) 10 CONTINUE 30 DO 20 J=2,N,2 IF(J.GE.N) GO TO 100 SUMEVN=SUMEVN+F(A+(J*H)) 20 CONTINUE *------------------------------------------- 100 WRITE(*,50) 50 FORMAT(/,10X,'SUM ODD',7X,'SUM EVEN') WRITE(*,200) SUMODD,SUMEVN 200 FORMAT(6X,2F12.6) *------------------------------------------- RETURN END *============================================================ SUBROUTINE SHOWFX(A,N,H)

PH 615 245

Page 243: Computational Physics in Thai

REAL A,H WRITE(*,50) F(A) 50 FORMAT(10X,'F( X0 ) =',F12.6) DO 10 I=1,N WRITE(*,100) I,F(A+(I*H)) 10 CONTINUE 100 FORMAT(10X,'F( X',I2,' )',' =',F12.6) RETURN END *============================================================ *------------------------------------------------------------ FUNCTION F(X) REAL X F = (1-EXP(-X)) END *------------------------------------------------------------ เอาทพทจากโปรแกรม คอ a)

PH 615 246

Page 244: Computational Physics in Thai

b) c)

PH 615 247

Page 245: Computational Physics in Thai

9.3 การอนทเกรทโดยแตละ segment มคาไมเทากน

( ) ( ) ( ) ( ) ( ) ( )0 1 1 2 11 2 .....

2 2 2n n

n

f x f x f x f x f x f xI h h h −+ +≅ + + +

+

เมอ ความกวางของสวนท i ih

รปท 9.5 การอนทเกรทโดยแตละสวนมคาไมเทากน

9.4 การอนทเกรทโดยวธรอมเบรก

Romberg Integration ประยกตจาก trapezoidal rule

( ) ( )2 14 13 3

I I h I h= −

เมอ = step size 1 2,h h

อลกอรทมทใชกบคอมพวเตอรโดยวธรอมเบรก คอ

PH 615 248

Page 246: Computational Physics in Thai

11, 1 , 1

, 1

44 1

kj k j k

j k k

I II

−+ − −

−≅

เมอ และ = อนทเกรททถกตองมากและนอยตามลาดบ 1, 1j kI + − , 1j kI −

ตวอยางท 9.7 จงอนทเกรทสมการในตวอยาง 9.4 โดยใชวธ single และ multiple trapezoidal rule จากนนใชวธของรอมเบรกเพอทาใหผลเฉลยถกตองยงขน

วธทา ≅ I ( ) ( )0688.1314848.1

34

= 1.623467 ซงมความคลาดเคลอนเพยง 1% โปรแกรมทใชในการคานวณ โดยวธรอมเบรก คอ PROGRAM ROMBERG DIMENSION R(10,10) REAL A,B WRITE(*,*)' PLEASE ENTER LIMIT OF INTEGRAL', + ' A,B AND ERROR ES' READ(*,*) A,B,ES FX0=FUNC(A) FXN=FUNC(B) R(1,1)=(FX0+FXN)*(B-A)/2. DO 10 I=1,9 N=2**I CALL TRAPEZ(A,B,N,AREA) R(I+1,1)=AREA

PH 615 249

Page 247: Computational Physics in Thai

DO 20 IC=2,I+1 K =IC-1 IR=2+I-IC R(IR,IC)=((4**K)*R(IR+1,K)-R(IR,K))/(4**K-1.) 20 CONTINUE ER=ABS(100.*(R(1,K+1)-R(2,K))/R(1,K+1)) IF(ER.LE.ES) GO TO 30 10 CONTINUE 30 WRITE(*,100) A,B 100 FORMAT(//,7X,'INTEGRATE FUNCTION ',//, + 7X,'F(X)=0.2+25.*X-200.*X*X+675.*(X**3.)', + '-900.*(X**4.)+400.*(X**5.)',// + 7X,'FROM',F10.6,' TO',F10.6,/) WRITE(*,200) R(1,K+1),ER 200 FORMAT(' FINAL INTEGRAL VALUE =',F16.10,/, + ' WITH RELATIVE ERROR =',F16.10,' %') STOP END *========================================================== SUBROUTINE TRAPEZ(A,B,N,AREA) H=(B-A)/N SUM=0. X=A+H DO 10 I=1,N-1 FX=FUNC(X) SUM=SUM+FX X=X+H 10 CONTINUE FX0=FUNC(A)

PH 615 250

Page 248: Computational Physics in Thai

FXN=FUNC(B) AREA=(FX0+FXN+2.*SUM)*H/2. RETURN END *========================================================== FUNCTION FUNC(X) FUNC=0.2+25.*X-200.*X*X+675.*(X**3.) + -900.*(X**4.)+400.*(X**5.) RETURN END *========================================================== เอาทพท คอ จะไดคาอนทเกรท = 1.6405341625 คาทแทจรง = 1.640533 มคาถกตองถงทศนยม 5 หลก

PH 615 251

Page 249: Computational Physics in Thai

แผนผงตอไปนแสดงการคานวณโดยวธรอมเบรก โดย a) iteration ครงแรก b) iteration ครงทสอง c) iteration ครงทสาม

( 20 h ) ( )40 h ( )60 h ( )80 h

a) 0.172800 1.367467 1.068800 b) 0.172800 1.367467 1.640533 1.068800 1.623467 1.481800 c) 0.172800 1.367467 1.640533 1.640533 1.068800 1.623467 1.640533 1.481800 1.639467 1.600800

ตวอยางท 9.8 จงอาศยการอนทเกรทโดยวธรอมเบรกหาคา ( )∫ +2

1

2/1 dxxx

วธทา สวนหนงของโปรแกรมทใชในการคานวณ คอ *========================================================== FUNCTION FUNC(X) FUNC = (X+1./X)**2. RETURN END *==========================================================

PH 615 252

Page 250: Computational Physics in Thai

เอาทพทจากโปรแกรม คอ

9.5 การอนทเกรทโดยวธเกาสควอดราเจอร (Gauss Quadrature)

เปนวธการเลอกจดในการอนทเกรทใหเหมาะสมเพอทจะไดพนทใตกราฟทถกตองมากยงขน

รปท 9.6 วธเกาสควอดราเจอร

PH 615 253

Page 251: Computational Physics in Thai

ตวอยางท 9.9 จงอนทเกรทสมการในตวอยาง 9.4 โดยวธเกาสควอดราเจอร วธทา โปรแกรมทใชในการคานวณ คอ PROGRAM GAUSS_QUADRATURE DIMENSION XI(21),W(21) DATA XI/0.0000000,-.5773503,.5773503, + -.7745967,0.0000000,0.7745967, + -.8611363,-.3399810,0.3399810, + 0.8611363,-.9061798,-.5384693, + 0.0000000,0.5384693,0.9061798, + -.9324695,-.6612094,-.2386192, + 0.2386192,0.6612094,0.9324695/ DATA W/2.0000000,1.0000000,1.0000000, + 0.5555556,0.8888889,0.5555556, + 0.3478549,0.6521452,0.6521452, + 0.3478549,0.2369269,0.4786287, + 0.5688889,0.4786287,0.2369269, + 0.1713245,0.3607616,0.4679139, + 0.4679139,0.3607616,0.1713245/ REAL A,B WRITE(*,*)' PLEASE ENTER LIMIT OF INTEGRAL A,B ' READ(*,*) A,B A0=(A+B)/2. A1=(B-A)/2. IC=1 DO 10 NG=1,6 SUM=0.

PH 615 254

Page 252: Computational Physics in Thai

DO 20 ITERMS=1,NG X=A0+A1*XI(IC) AI=FUNC(X) SUM=SUM+W(IC)*AI IC=IC+1 20 CONTINUE SUM=A1*SUM WRITE(*,100) NG,SUM 100 FORMAT(' RESULT OF INTEGRATION WITH',I2, + ' GUASS POINT(S) IS',F16.10) 10 CONTINUE STOP END *------------------------------------------------ FUNCTION FUNC(X) FUNC=0.2+25.*X-200.*(X*X)+675*(X**3.) + -900.*(X**4.)+400.*(X**5.) RETURN END *------------------------------------------------ เอาทพทจากโปรแกรม คอ

ถาใช 6 จดจะไดคาอนทเกรท = 1.64053 ซงตรงกบคาทแทจรง

PH 615 255

Page 253: Computational Physics in Thai

แบบฝกหดบทท 9

1. จงอนทเกรทฟงกชนตอไปน โดยวธทราเปซอยดอล

( ) dxx∫−

+5

3

354

2. จงอนทเกรทฟงกชนตอไปน โดยวธทราเปซอยดอล และวธซมปสน

dxxe x∫3

0

2

3. จงอนทเกรทฟงกชนในขอ 2. โดยวธ multiple Simpson’s rule 4. จงอนทเกรทขอมลตอไปน โดยวธทราเปซอยดอล

x 0 0.1 0.2 0.3 0.4 0.5 y 1 7 4 3 5 2

5. ทาขอ 4. โดยวธซมปสน 6. จงหาคาโดยวธรอมเบรก

dxxe x∫3

0

2

7. จงหาคาโดยวธเกาสควอดราเจอร

( ) ( )( )∫ −−−1

0

1201.0 12.1 dxexx x

PH 615 256

Page 254: Computational Physics in Thai

บทท 10 อนพนธและสมการดฟเฟอเรนเชยล

วธการหาอนพนธแบบงายกคอ การหาความชนของฟงกชน เราอาจจะใชการประมาณโดยวธ forward, backward หรอ centered difference กได วธนความคลาดเคลอนจะมคาแปรตามกาลงสองของชวงขน O(h2)

10.1 วธ finite difference

จากอนกรมเทยเลอร

( ) ( ) ( ) ( ) 21 .....

2i

i i i

f xf x f x f x h h+

′′′= + + +

จะได

( ) ( ) ( ) ( ) ( )2 1 24 30

2i i i

i

f x f x h f xf x h

h+ +− + −

′ = +

ซงจะสามารถคานวณอนพนธได 3 วธ ดงน วธท 1 Forward finite – divided – difference

First Derivative error

( ) ( ) ( )1ii

if x f xf x

h+ −

′ = ( )0 h

( ) ( ) ( ) ( )2 14 32

i ii

if x f x h ff x

h+ +− + −

′ =x

( )20 h

PH 615 257

Page 255: Computational Physics in Thai

Second Derivative

( ) ( ) ( ) ( )2 12

2i ii

if x f x ff x

h+ +− +

′′ =x

( )0 h

( ) ( ) ( ) ( ) ( )3 2 12

4 5 2i i ii

if x f x f x ff x

h+ + +− + − +

′′ =x

( )20 h

Third Derivative

( ) ( ) ( ) ( ) ( )3 2 13

3 3i i ii

if x f x f x ff x

h+ + +− + +

′′′ =x

( )0 h

( ) ( ) ( ) ( ) ( ) ( )4 3 2 13

3 14 24 18 52

i i i ii

if x f x f x f x ff x

h+ + + +− + − + +

′′′ =x

( )20 h

Fourth Derivative

( ) ( ) ( ) ( ) ( ) ( )4 3 2 14

4 6 4i i i ii

if x f x f x f x ff x

h+ + + +− + − +

′′′′ =x

( )0 h

( ) ( ) ( ) ( ) ( ) ( ) ( )5 4 3 2 14

2 11 24 26 14 3i i i i ii

if x f x f x f x f x ff x

h+ + + + +− + − + − +

′′′′ =x

( )20 h

วธท 2 Backward finite – divided – difference

First Derivative error

( ) ( ) ( )1i ii

f x f xf x

h−−

′ = ( )0 h

( ) ( ) ( ) ( )13 42

i ii

2if x f x h f xf x

h−+ +

′ = − ( )20 h

PH 615 258

Page 256: Computational Physics in Thai

Second Derivative

( ) ( ) ( ) ( )12

2i ii

f x f x f xf x

h−− +

′′ = 2i− ( )0 h

( ) ( ) ( ) ( ) ( )1 22

2 5 4i i ii

3if x f x f x f xf x

h− −− + −

′′ = − ( )20 h

Third Derivative

( ) ( ) ( ) ( ) ( )1 13

3 3i i ii

3if x f x f x f xf x

h− −− + −

′′′ = − ( )0 h

( ) ( ) ( ) ( ) ( ) ( )1 2 33

5 18 24 14 32

i i i ii

4if x f x f x f x f xf x

h− − −− + + +

′′′ = − ( )20 h

Fourth Derivative

( ) ( ) ( ) ( ) ( ) ( )4 1 2 34

4 6 4i i i ii

4if x f x f x f x f xf x

h+ − − −− + − +

′′′′ = − ( )0 h

( ) ( ) ( ) ( ) ( ) ( ) ( )1 2 3 44

3 14 26 24 11 2i i i i ii

5if x f x f x f x f x f xf x

h− − − −− + − + −

′′′′ = −

)

( )20 h

วธท 3 Center finite – divided – difference

First Derivative error

( ) ( ) (1

2i

i1if x f x

f xh

+ −′ = − ( )20 h

( ) ( ) ( ) ( ) ( )2 1 18 812

i i ii

2if x f x f x f xf x

h+ + −− + − +

′ = − ( )40 h

PH 615 259

Page 257: Computational Physics in Thai

Second Derivative

( ) ( ) ( ) ( )12

2i ii

1if x f x f xf x

h+ + +

′′ = − ( )20 h

( ) ( ) ( ) ( ) ( ) ( )2 1 12

16 30 1612

i i i ii

2if x f x f x f x f xf x

h+ + −− + − + −

′′ = − ( )40 h

Third Derivative

( ) ( ) ( ) ( ) ( )2 1 13

2 22

i i ii

f x f x f x f xf x

h+ + −− + −

′′′ = 2i− ( )20 h

( ) ( ) ( ) ( ) ( ) ( ) ( )3 2 1 1 23

8 13 13 88

i i i i ii

3if x f x f x f x f x f xf x

h+ + + − −− + − + − +

′′′ = −

( )40 h

Fourth Derivative

( ) ( ) ( ) ( ) ( ) ( )2 1 14

4 6 4i i i ii

2if x f x f x f x f xf x

h+ + −− + − +

′′′′ = − ( )20 h

( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )3 2 1 1 24

12 39 56 39 126

i i i i i ii

3if x f x f x f x f x f x f xf x

h+ + + − −− + + + − + +

′′′′ = −

( )40 h

ตวอยางท 10.1 จงหาอนพนธของสมการ f(x) = -0.1x4 – 0.15x3 – 0.5x2 – 0.25x + 1.2 ทจด x = 0.5 โดยวธ finite divided difference ใช h = 0.25 วธทา ขอมลทตองการในการคานวณ คอ Xi-2 = 0 f(xi-2) = 1.2 Xi-1 = 0.25 f(xi-1) = 1.103516 Xi = 0.5 f(xi) = 0.925 Xi+1 = 0.75 f(xi+1) = 0.6363281 Xi+2 = 1 f(xi+2) = 0.2

PH 615 260

Page 258: Computational Physics in Thai

สาหรบ forward difference

= ( 5.0f ′ ) ( ) ( )( )5.02

925.036363281.042.0 −+−

= - 0.859375 สาหรบ backward difference

= ( 5.0f ′ ) ( ) ( )( )25.02

2.1035156.14925.03 +−

= - 0.878125 สาหรบ centered difference

= ( 5.0f ′ ) ( ) ( )( )25.012

035156.186363281.082.0 −+−

= - 0.9125

วธ centered difference จะใหคาถกตองทสด โดยมความคลาดเคลอน εt = 0%

10.2 การหาอนพนธโดยวธรชารดสน จากการหาคาอนทเกรทโดย Ricchardson extrapolation

( ) ( ) ( ) ( )2 21 2

1/ 1 1I I h I h I h

h h≅ + −⎡ ⎤⎣ ⎦−

เมอ และ เปนการอนทเกรทโดยใช step size และ

ตามลาดบ ( )1hI ( )2hI 1h 2h

สาหรบการคานวณดวยคอมพวเตอร เพอความสะดวกจะใช = ดงนน 2h 2/1h

( ) ( )2 14 13 3

I I h I h≅ −

PH 615 261

Page 259: Computational Physics in Thai

เชนเดยวกน จะสามารถหาอนพนธไดจาก

( ) ( )2 14 13 3

D D h D h≅ −

ตวอยางท 10.2 จงหาอนพนธในตวอยาง 10.1 โดยวธรชารดสน

วธทา = = - 1.0 ( )5.0D1

2.12.0 −

= ( )25.0D5.0

103516.16363251.0 − = - 0.934375

ดงนน

D = ( ) ( 131934375.0

34

−−− ) = - 0.9125

ซงตรงกบคาทแทจรง εt = 0 %

10.3 การแกสมการดฟเฟอเรนเชยลโดยวธออยเลอร

จากสมการดฟเฟอเรนเชยล = f(x,y) dxdy

อนพนธอนดบแรก จะเปนคาความชนท xi

( ),i if x yφ =

เมอ เปนสมการดฟเฟอเรนเชยลท xi และ yi ( ,i i )f x y

ดงนน ( )1 ,i i i iy y f x y+ = + h

เปนสตรทใชโดยวธออยเลอร

PH 615 262

Page 260: Computational Physics in Thai

รปท 10.1 วธออยเลอร ตวอยางท 10.3 จงใชวธออยเลอรอนทเกรทสมการ

dxdy = - 2x3 + 12x2 – 20x + 8.5

จาก x = 0 ถง x = 4 โดยใช step size = 0.5 ภาวะเรมตนเมอ x = 0 จะได y = 1 ผลเฉลยจรงคอ y = -0.5x4 + 4x3 – 10x2 + 8.5x + 1 วธทา จากสตรของวธออยเลอร y(0.5) = y(0) + f(0,1)0.5 เมอ y(0) = 1 และหาความชนท x = 0 คอ f(0,1) = -2(0)3 + 12(0)2 – 20(0) + 8.5 = 8.5 ดงนน y(0.5) = 1.0 + 8.5(0.5) = 5.25

PH 615 263

Page 261: Computational Physics in Thai

ผลเฉลยจรงท x = 0.5 คอ y = -0.5(0.5)4 + 4(0.5)3 – 10(0.5)2 + 8.5(0.5) + 1 = 3.21875

ซงมความคลาดเคลอนมาก εt = 63.1 % สาหรบการคานวณขนทสอง y(1) = y(0.5) + f(0.5,5.25)0.5 = 5.25 + [- 2(0.5)3 + 12(0.5)2 – 20(0.5) + 8.5]0.5 = 5.875

คานวณเชนนหลาย ๆ ครง จะไดผลเฉลย แตกยงมความคลาดเคลอนคอนขางมาก

รปท 10.1 เปรยบเทยบคาจรงกบคาจากวธเชงตวเลข

PH 615 264

Page 262: Computational Physics in Thai

สาหรบการคานวณดวยคอมพวเตอรใชโปรแกรมตอไปน PROGRAM EULER WRITE(*,50) 50 FORMAT(' PLEASE ENTER X,Y,N,H') READ(*,*) X,Y,N,H WRITE(*,100) H 100 FORMAT(' SOLUTION WITH STEP SIZE =',F10.4, + ' IS:',/,10X,'X',15X,'Y') WRITE(*,200) X,Y 200 FORMAT(3F16.6) DO 10 I=1,N F1=FUNC1(X,Y) Y=Y+F1*H X=X+H WRITE(6,200) X,Y 10 CONTINUE STOP END *------------------------------------------------ FUNCTION FUNC1(X,Y) FUNC1=-2.*(X**3.)+12.*(X**2.)-20.*X+8.5 RETURN END *------------------------------------------------ เอาทพทจากโปรแกรม คอ

PH 615 265

Page 263: Computational Physics in Thai

จะได y(0.5) = 5.25 y(1) = 5.875 y(4) = 7 เปนตน ตวอยางท 10.4 จงแกปญหาคาเรมตน (initial – value problem) ตอไปนภายในชวง x = 0 ถง 2

dxdy = yx2 – 1.2y

เมอ y(0) = 1 วธทา สวนหนงของโปรแกรมทใชในการคานวณ คอ *------------------------------------------------ FUNCTION FUNC1(X,Y) FUNC1=Y*(X**2.)-1.2*Y RETURN END *----------------------------------------------- เอาทพทจากการคานวณ คอ

PH 615 266

Page 264: Computational Physics in Thai

ตวอยางท 10.5 จงเขยนกราฟเพอเปรยบเทยบผลเฉลยจากตวอยาง 10.4 เมอใช h = 0.5 และ 0.25

Euler's method with h=0.5 and 0.25

0

0.2

0.4

0.6

0.8

1

1.2

0 0.5 1 1.5 2 2.5x

y

Step size 0.5

Step size 0.25

วธทา

PH 615 267

Page 265: Computational Physics in Thai

10.4 การแกสมการดฟเฟอเรนเชยลโดยวธรงกตตา (Runge – Kutta Methods) แกสมการ Ordinary differential equations

( ),dy f x ydx

=

( )1 , ,i i i iy y x y hφ+ = + h

โดยท φ(xi,yi,h) เปน inerement function ในรป

1 1 2 2 ...... n na k a k a kφ = + + + เมอ a เปนคาคงท และ k มคาดงน

( )( )( )

( )

1

2 1 11 1

3 2 21 1 22 2

1 1,1 1 1,2 2 1, 1

,

,

,...

, .....

i i

i i

i i

n i n i n n n n n

k f x y

k f x p h y q k h

k f x p h y q k h q k h

k f x p h y q k h q k h q k h− − − − −

=

= + +

= + + +

= + + + + + 1−

วธรงกตตามอยหลายแบบดวยกน ขนกบจานวนเทอมใน inerement function ท

นามาใช เชน n = 2 สาหรบลาดบสอง, n = 3 สาหรบลาดบ,… เปนตน

PH 615 268

Page 266: Computational Physics in Thai

สาหรบวธรงกตตาลาดบสอง

( )1 1 1 2i iy y a k a kφ+ = + + 2 h ( )( )

1

2 1 1

,

,i i

i i

k f x y

k f x p h y q k h

=

= + + 1 1

1 2

2 1

2 11

11212

a a

a p

a q

+ =

=

=

สาหรบวธรงกตตาลาดบสาม

( )1 1 21 46i iy y k k k+ = + + + 3 h

( )

( )

1

2 1

3 1

,

1 1,2 2, 2

i i

i i

i i

k f x y

k f x h y k h

k f x h y k h k h

=

⎛ ⎞= + +⎜ ⎟⎝ ⎠

= + − + 2

สาหรบวธรงกตตาลาดบส

( )1 1 2 31 2 26i iy y k k k k+ = + + + + 4 h

( )

( )

1

2 1

3 2

4 3

,

1 1,2 21 1,2 2,

i i

i i

i i

i i

k f x y

k f x h y k h

k f x h y k h

k f x h y k h

=

⎛ ⎞= + +⎜ ⎟⎝ ⎠⎛ ⎞= + +⎜ ⎟⎝ ⎠

= + +

PH 615 269

Page 267: Computational Physics in Thai

สาหรบวธรงกตตาลาดบหา

( )1 1 3 4 51 7 32 12 32 790i iy y k k k k k+ = + + + + + 6 h

( )1

2 1

3 1 2

4 2 3

5 1 4

6 1 2 3 4

,

1 1,4 41 1 1,4 8 81 1,2 23 3 9,4 16 16

3 2 12 12 8,7 7 7 7 7

i i

i i

i i

i i

i i

i i

k f x y

k f x h y k h

k f x h y k h k h

k f x h y k h k h

k f x h y k h k h

k f x h y k h k h k h k h k h

=

⎛ ⎞= + +⎜ ⎟⎝ ⎠⎛ ⎞= + + +⎜ ⎟⎝ ⎠⎛ ⎞= + + +⎜ ⎟⎝ ⎠⎛ ⎞= + + +⎜ ⎟⎝ ⎠⎛ ⎞= + − + + − +⎜ ⎟⎝ ⎠

5

ตวอยางท 10.6 จงใชวธรงกตตาลาดบสอนทเกรทสมการ

f(x,y) = - 2x3 + 12x2 – 20x + 8.5

โดยใช h = 0.5 และภาวะเรมตน y = 1 ท x = 0 วธทา k1 = 8.5, k2 = 4.21875, k3 = 4.21875 และ k3 = 1.25 จะได

y(0.5) = ( )[ ] ( )5.0

25.121875.4221875.425.8611

⎭⎬⎫

⎩⎨⎧ ++++

= 3.21875 ซงตรงกบคาแทจรง

PH 615 270

Page 268: Computational Physics in Thai

โปรแกรมทใชในการคานวณ คอ PROGRAM RK4 WRITE(*,50) 50 FORMAT(' PLEASE ENTER X,Y,N,H') READ(*,*) X,Y,N,H WRITE(*,100) H 100 FORMAT(' SOLUTION WITH STEP SIZE =',F10.6, + ' IS:',/,10X,'X',15X,'Y') WRITE(*,200) X,Y 200 FORMAT(2F16.6) DO 300 I=1,N AK1=FUNC(X,Y) XX=X+H/2. YY=Y+H*AK1/2. AK2=FUNC(XX,YY) YY=Y+H*AK2/2. AK3=FUNC(XX,YY) XX=X+H YY=Y+H*AK3 AK4=FUNC(XX,YY) Y=Y+(AK1+2.*AK2+2.*AK3+AK4)*H/6. X=X+H WRITE(*,200) X,Y 300 CONTINUE STOP END *-------------------------------------------------------

PH 615 271

Page 269: Computational Physics in Thai

FUNCTION FUNC(X,Y) FUNC=-2.*(X**3.)+12.*(X**2.)-(20.*X)+8.5 RETURN END *------------------------------------------------------- เอาทพท คอ จะได y(0.5) = 3.218750 ตรงกบคาแทจรง ตวอยางท 10.7 จงใชวธรงกตตาลาดบสอนทเกรทสมการ f(x,y) = 4e0.8x – 0.5y โดยใช h = 0.5 และ y(0) = 2 จาก x = 0 ถง 0.5 และจงเขยนโปรแกรมเพออนทเกรทสมการน

PH 615 272

Page 270: Computational Physics in Thai

วธทา k1 = f(0.2) = 4e0.8(1) – 0.5(2) = 3 ใชคานคานวณ y และความชนทจดกงกลาง y(0.25) = 2 + 3(0.25) = 2.75 k2 = f(0.25,2.75) = 4e0.8(0.25) – 0.5(2.75) = 3.510611 ใชคานคานวณ y และความชนทจดกงกลาง y(0.25) = 2 + 3.510611(0.25) = 2.877653 k3 = f(0.25,2.877653) = 4e0.8(0.25) – 0.5(2.877653)

= 3.510611 ตอไปใชคาความชนนคานวณ y และความชนทจดปลายของชวง y(0.5) = 2 + 3.071785(0.5) = 3.723392 k4 = f(0.5,3.723392) = 4e0.8(0.5) – 0.5(3.723392)

= 4.105603 สดทาย นาคาความชนทงสมาหาคาเฉลย ซงจะนาคาเฉลยนไปพยากรณคาทจดปลายของชวง

φ = ( ) ( )[ ]105603.4446785.32510611.32361

+++

= 3.503399 y(0.5) = 2 + 3.503399(0.5) = 3.751669

ซงมคาใกลเคยงกบคาทแทจรง คอ 3.751521 มาก

PH 615 273

Page 271: Computational Physics in Thai

สวนหนงของโปรแกรมโดยวธรงกตตาทใชในการคานวณ คอ *------------------------------------------------------- FUNCTION FUNC(X,Y) FUNC=(4.*EXP(0.8*X))-0.5*Y RETURN END *------------------------------------------------------- เอาทพทจากโปรแกรม คอ จะได y(0.5) = 3.751699 ตรงกบการใชเครองคดเลขดวยมอ

PH 615 274

Page 272: Computational Physics in Thai

ตวอยางท 10.8 จงใชวธรงกตตาลาดบสอนทเกรทสมการ

dxdy = yx2 – 1.2y

เมอ y(0) = 1 วธทา ใชโปรแกรมในตวอยาง 10.6 โดยเปลยนคาฟงกชน เอาทพทจากโปรแกรม คอ ซงจะไดคา y เมอ x = 0, 0.5, … , 4

การคานวณโดยใชโปรแกรมคอมพวเตอร จะใหผลทถกตองแมนยาและรวดเรว อยางไรกตามนกศกษาจะตองเขาใจขนตอนการแกปญหากอน โดยวธกดเครองคดเลขดวยมอ แลวจงนาผลลพธทไดมาเปรยบเทยบกน

PH 615 275

Page 273: Computational Physics in Thai

10.5 ปญหาคาทขอบเขตและคาไอเกน

การแกสมการดฟเฟอเรนเชยล จะขนกบคาเรมตนแตบางครง บางปญหาไมไดขนกบคาเรมตนคาเดยว แตจะมคาตาง ๆ ตามคาตวแปรทจดเหลานน คาเหลานมกจะเปนคาเฉพาะทจดขอบเขตของระบบ จงมชอเรยกวา ปญหาทขอบเขต

รปท 10.2 ปญหาคาทขอบเขต

ตวอยางปญหาคาทขอบเขตเชน ปญหาความรอนเคลอนทภายในแทงเหลกยาว ถาไมมฉนวนหมแทงเหลก จะมความรอนถายเทออกมาจากแทงเหลก ถาท x = 0 อณหภม = T1 และท x = L อณหภม = T2 จะเขยนเปนภาวะขอบเขตไดเปน

T(0) = T1 T(L) = T2

PH 615 276

Page 274: Computational Physics in Thai

โดยมสมการอนพนธแทนอณหภมทตาแหนงตาง ๆ

( TThdx

)a −′2Td

+2 = 0

เมอ = สมประสทธการถายเทความรอน ซงจะสามารถใชสมการเชงตวเลข เพอแกสมการหาอณหภมทตาแหนงตาง ๆ ได

h′

รปท 10.3 การถายเทความรอนในแทงเหลก

คาไอเกน (eigen value) เปนปญหาหนงของปญหาคาขอบเขตทเกยวของกบระบบทางฟสกส เชน ระบบการเคลอนทของมวลบนสปรง ระบบอนภาคภายใตศกยของกลศาสตรควนตม เปนตน

10.6 เลขสม (Random number)

การแกสมการอนพนธบางระบบทมลกษณะเฉพาะ อาจจะไมตองกระทาโดยใชวธการทไดกลาวมาแลว เชน การแผรงสของสารกมมนตรงส จะเปนไปอยาง random อตราการสลายตวของสารกมมนตรงส จะขนกบจานวนอะตอมทมอย

dtdN = - λN

สามารถใชเลขสมแทนโมเดลการแผรงส ซงทาใหไมจาเปนทจะตองแกสมการอนพนธ

โดยตรงฟงกชนทใชในการสรางเลขสม คอ

PH 615 277

Page 275: Computational Physics in Thai

FUNCTION RAN(K) PARAMETER (M = 243000, IA = 4561, IC = 51349) K = MOD(K*IA+IC,M) RAN = K/(1.*M) RETURN END

PH 615 278

Page 276: Computational Physics in Thai

แบบฝกหดบทท 10

จงใชวธ finite difference หาอนพนธของ y = ex ท x = 1 ใช h = 0.1 1.

จงใชวธของรชารดสนหาอนพนธของ y = sin x ท x = π/4 ใช h1 = π/3 และ 2.

h2 = π/6

3. จรวดลาหนงเคลอนทไดระยะทางดงน

t 0 1 2 3 4 5 y 0 2 8 18 32 50

จงหาความเรวและความเรงของจรวดทเวลา t

4. จงใชวธออยเลอรแกสมการ

2

2

dtyd = (1+x) y

เมอ y(0) = 1 แกสมการจาก x = 0 ถง 1

5. จงแกสมการจาก t = 0 ถง 3

dtdy = - y + t

เมอ y(0) = 1 โดยวธรงกตตาลาดบสาม โดยใช h = 0.5

PH 615 279