Computational Physics in Thai
description
Transcript of Computational Physics in Thai
ฟสกสเชงคานวณ Computational Physics PH 615
ภาควชาฟสกส คณะวทยาศาสตร มหาวทยาลยรามคาแหง
รองศาสตราจารย ดร. นพนธ ตงประเสรฐ
สารบญ
หนา คานา สารบญ บทท 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
ก
หนา บทท 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
ข
หนา 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
ค
คานา หนงสอเลมนกลาวถงความรเบองตนเกยวกบการคานวณเชงตวเลขทสามารนาไปใชแกปญหาทางฟสกส เหมาะสาหรบนกศกษาทเรมตนศกษาขนตอนการคานวณเชงตวเลขเนอหาประกอบดวย การวเคราะหเชงตวเลข รากของสมการ การแกสมการ ระบบสมการ การสรางเมทรกซ LU และอนเวรสของเมทรกซ เมทรกซพเศษและการแกปญหาทางฟสกส การหาคามากสด การปรบเสนและการประมาณคา การอนทเกรท อนพนธและสมการดฟเฟอ เรนเชยล ในแตละบท จะมโปรแกรมคอมพวเตอรภาษาฟอรแทรนประกอบคาอธบาย ซงโปรแกรมเหลานจะชวยนกศกษาเมอนาไปใชกบการแกปญหาทนกศกษากาลงศกษาอยจรง ซงจะทาใหการแกปญหาเปนไปอยางรวดเรวและถกตอง โปรแกรมทงหมดนไดผานการตรวจสอบ เรยบรอยแลว นกศกษาสามารถพมพโปรแกรมแลวรนโปรแกรมไดเลย ผลลพธทแสดงตอทาย โปรแกรม เปนผลลพธทไดจากการ print screen โดยตรง โดยไมมการพมพใหม ดงนนเมอนกศกษารนโปรแกรม ผลลพธทไดจะเหมอนกบทนกศกษาเหนอยในหนงสอ ในการพมพครงแรกน ผเขยนคาดวาจะตองมขอผดพลาดอยบาง ถาทานผอานพบหรอ ตองการใหคาแนะนาใดๆ ผเขยนยนดทจะนอมรบไวเพอจะไดแกไขในการพมพครงตอไป ผเขยนขอขอบคณทกทานทมสวนชวยเหลอในการจดทาหนงสอเลมน นพนธ ตงประเสรฐ
บทท 1 การวเคราะหเชงตวเลข
ปจจบนคอมพวเตอรเขามามบทบาททสาคญตอชวตประจาวนของมนษยมากมายหลายดาน การนาคอมพวเตอรมาชวยแกปญหาทางฟสกสทาใหการเรยนรฟสกสแขนงใหมกาวหนาอยางรวดเรวและมประสทธภาพ การศกษาระบบไมใชเชงเสนจะไมสามารถกระทาไดเลยถาไมมคอมพวเตอรทมความเรวสงและมประสทธภาพในการคานวณ ในบทนจะกลาวถงการนาคอมพวเตอรมาชวยแกปญหาทางฟสกสทนกศกษาคนเคยกอน คอ การตกของวตถอยางอสระภายใตแรงดงดดของโลก นกศกษาจะไดทบทวนการคานวณโดยอาศยทฤษฎทางฟสกสดงเดม จากนนนกศกษาจะไดเรยนรวธการวเคราะหเชงตวเลข(numerical analysis)ในการแกปญหาเดยวกน แลวนาผลลพธทไดมาเปรยบเทยบกน
1.1 การตกอยางอสระของวตถ (Freely falling objects) วตถทตกอยางอสระหมายถงวตถทเคลอนทอยางอสระภายใตแรงดงดดของโลกอยาง
เดยว โดยไมคานงถงการเคลอนทเรมตน วตถอาจจะถกปลอยตกจากมอ หรอขวางขนขางบนกได จากกฎขอทสองของนวตน จะได
dtdv =
mF (1.1)
เมอ v เปนความเรว (เมตร/วนาท) t เปนเวลา (วนาท) สมมตวา มแรงตานทานของอากาศในทศขนมคาเทากบ Fair และแรงเนองจากแรงโนมถวงเทากบ Fgrav ดงนน แรงลพธ (F) F = Fgrav - Fair
PH615 1
สมมตวา แรงตานของอากาศแปรตามความเรวของวตถ
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
ตวอยางท 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
รปท 1.2 ความเรวของนกกระโดดรมทเวลาใด ๆ คานวณจากผลเฉลยจรง (exact solution)
กราฟระหวางความเรวของนกกระโดดรมทเวลาตาง ๆ เขยนกราฟโดยใชโปรแกรม sigma plot แสดงในรปท 1.2 จะสงเกตเหนวาเมอ t มคามาก ความเรวจะมคาคงทท 53.39 เมตร/วนาท สมการ (1.3) มชอเรยกวาผลเฉลยวเคราะห (analytical solution) หรอผลเฉลยแทจรง (exact solution) เพราะวาเปนผลเฉลยทไดจากการแกสมการดฟเฟอเรนเชยล อยางไรกตาม ยงมสมการทางคณตศาสตรอกมากมายซงไมสามารถแกสมการไดโดยตรงเชนน จะตองใชวธการวเคราะหเชงตวเลขมาชวยในการประมาณคาผลเฉลยของสมการ
PH615 4
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
ตวอยางท 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
รปท 1.3 ความเรวของนกกระโดดรมทเวลาใด ๆ คานวณจากการวเคราะหเชงตวเลข
(numerical solution) กราฟระหวางความเรวของนกกระโดดรม เมอเปรยบเทยบคาทไดจากการคานวณโดยตรงกบคาทไดจากการคานวณโดยวธ
วเคราะหเชงตวเลขจะพบวา ความเรวของวตถทเวลา t ใด ๆ มคาใกลเคยงกน ดงแสดงในกราฟรปท 1.4
รปท 1.4 เปรยบเทยบความเรวจากการวเคราะหเชงตวเลขและคาทแทจรง
PH615 7
ความเรวของนกกระโดดรมคานวณโดยวธวเคราะหเชงตวเลข จะขนกบชวงเวลา Δ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
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
เมอเปรยบเทยบกบความเรวทแทจรง จะเหนไดวาความเรวจากวธการวเคราะหเชงตวเลข
เมอใช Δ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
ปจจบนมโปรแกรมประยกตทใชในการคานวณทางดานวทยาศาสตรหลายโปรแกรมดวยกน ซงนกศกษาสามารถใชงานไดงายกวาการเขยนดปรแกรมดวยภาษาฟอรแทรน เชน MATLAB, Mathematica, Mathcad และ Maple ซงเปนโปรแกรมประยกต มประสทธภาพในการคานวณสง และยงมความสามารถในการเขยนกราฟ ซงทาใหนกศกษาเขาใจระบบททาการศกษาไดดยงขน นอกจากนนนกศกษาอาจใชโปรแกรม Excel ชวยในการเกบและวเคราะหขอมล หรอใชโปรแกรม Sigma Plot เพอใชในการเขยนกราฟ ซงทงสองโปรแกรมยงมโมดลยอยชวยในการวเคราะหทางสถตไดดวย อยางไรกตามการศกษาการแกปญหาทางฟสกส โดยเรมตนจากการเขยนโปรแกรมดวยภาษาฟอรแทรนจะทาใหนกศกษาเขาใจวธการศกษาการแกปญหาไดดและถกตองยงขน สาหรบคอมไพเลอรทใชกบโปรแกรมภาษาฟอรแทรนตามตวอยางในหนงสอเลนน ชอ FORCE 2.0 เปนทงคอมไพเลอรและอดเตอรบนวนโดว เปนโปรแกรมฟร นกศกษาสามารถดาวนโหลดไดจากอนเตอรเนท www.forceproject.hpq.com.hr โดยไมตองเสยคาใชจายใด ๆ ทงสน
PH615 11
แบบฝกหดบทท 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
* 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
บทท 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
จากโจทย 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
จากกราฟจะเหนไดวา 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
ขนท 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)
tε
ขนตอไปคานวณผลคณ
(12) (14) 6.067(1.569) 9.517f f = =
PH 615 18
ซงมคามากกวาศนย ไมมการเปลยนเครองหมายระหวางจดตาและจดกงกลาง ดงนนราก จะอยระหวาง 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
*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
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
*-- 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
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
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
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
ใชเปนสตรในการคานวณหารากของสมการ
รปท 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
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
ขอเสยของวธฟอลสโพซชน ถงแมวาวธฟอลสโพซชน จะใหคาตอบไดเรวกวาวธแบงสวน แตในบางกรณ วธ ฟอลสโพซชนอาจจะไมใหคาตอบเลย ดงตวอยางตอไปน ตวอยางท 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
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
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
เอาทพทจากโปรแกรม คอ รากของสมการ คอ 1.0 โดยทาการ iterate ถง 63 ครงจงจะไดคาตอบถกตอง
PH 615 31
รปท 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
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
เอาทพทจากโปรแกรม คอ ดงนน รากของสมการ คอ 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
ตวอยางท 2.10 จงหารากของสมการ x3.3 = 79 โดยวธฟอลสโพซชน ใช xl = 3, xu = 4 และ = 0.0001 sε
วธทา ใชโปรแกรมตามตวอยาง 2.8 โดยเปลยน f(x) เอาทพทจากโปรแกรม คอ ดงนน รากของสมการ คอ 3.7587072849
PH 615 35
แบบฝกหดบทท 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
บทท 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
วธทา
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
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
รากของสมการ = 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
รปท 3.1 การแกสมการโดยวธกราฟ
3.2 วธนวตน-ราฟสน (The Newton-Raphson Method)
เปนวธการหารากของสมการทนยมมากทสด เรมจากการเดาคาราก xi จากนนลากเสนสมผสจากจดน จดทเสนสมผสตดกบแกน x จะเขาใกลคารากของสมการมากขน ดงแสดงในรปท 3.2
รปท 3.2 วธนวตน-ราฟสน
PH 615 41
( ) ( )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
วธทา ( )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
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
( ) 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
ถงแมวาวธนวตน-ราฟสน จะมประสทธภาพมาก แตในบางกรณกอาจจะมปญหาในการคานวณได ดงตวอยางตอไปน
ตวอยาง 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
ใช 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
*---------------------------------------------- เอาทพทจากโปรแกรม คอ ดงนน จงไมสามารถหารากของสมการได ถา 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
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
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
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
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
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
ตวอยางท 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
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
ซงไมสามารถหารากของสมการได เมอเปลยน 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
วธซแคน
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
แทนทจะใชคาสองคาในการหาอนพนธ วธนจะใชคา δ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
( )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
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
ข) วธซแคน
เอาทพทคอ
ค) วธปรบปรงซแคน
PH 615 61
เอาทพทคอ ไดรากของสมการคอ 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
รปท 3.5 รากซา
วธท 1 วธนวตน-ราฟสน
ใชสมการ
1+ix = ( )( )i
ii xf
xfmx′
−
เมอ m = จานวนราก ในการหารากของสมการ
วธท 2 วธปรบปรงนวตน-ราฟสน
กาหนดให
( )xu = ( )( )xfxf′
จะเกดคารากทเดยวกบ f(x)
PH 615 63
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
วธท 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
* ---------------------------------------- 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
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
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
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
วธทา และ 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
ใกลเคยงกบคาจรง 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
*------------------------------------------------* * 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
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
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
( ) ( )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
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
* ************************ 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
แบบฝกหดบทท 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
บทท 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
ตวอยางท 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
วธทา กาหนดให จากสมการขางตน เขยนใหมไดเปน 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
ซงทาใหสมการเปนจรง ดงนน 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
หลกของเครเมอร เปนวธการคานวณหาผลเฉลยของระบบสมการทมจานวนไมมาก
นก เชน ถาเรามสมการ 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
วธทา
( ) ( ) ( )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
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
ตวอยางท 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
กาจดตวแปร
คณสมการดวย ⇒ = 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
ทาซาตอไปอกจะได
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
ตวอยางท 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
ดงนน
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
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
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
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
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
พจารณาสมการ
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
วธทา ก) 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
ค) 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
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
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
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
วธทา ก) กาหนดให , จากสมการขางตน เขยนใหมไดเปน 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
ข) จะไดวา
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
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
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
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
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
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
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
ตวอยางท 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
ตวอยางท 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
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
ตอไป 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
สรป ขนตอนของวธเกาส-จอรแดน
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
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
แบบฝกหดบทท 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
บทท 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
[ ]⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
101001
3231
21
lllL
ซงมคณสมบตวา [ ] [ ]{ } { }{ } [ ]{ } { }BXADXUL −=− จะได [ ][ ] [ ]AUL = และ [ ]{ } { }BDL =
สรป วธ LU ดคอมโพซชนเปนขนตอน คอ
[ ]{ } { }BXA = (a) Decomposition
[ ] [ ]LU [ ]{ } { }BDL = (b) Forward
[ ]D
[ ][ ] { }DXU = (c) Backward
[ ]X
PH 615 120
สาหรบ 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
วธทา
[ ] ⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−−−−
=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
[ ] [ ]⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−−−−
=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
จะได 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
โปรแกรมทใชในการแกสมการโดยวธ 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
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
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
ตวอยางท 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
ตวอยางท 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
[ ]⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−=
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
สาหรบ 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
ตวอยางท 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
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
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
เอาทพทจากโปรแกรม คอ ตวอยางท 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
*================================================================= 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
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
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
ซงจะไดเอาทพท โดยเมทรกซชดดานลางเปนอนเวรสของเมทรกสชดทอยดานบน คอ
[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
ตวอยางท 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
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
เอาทพทจากโปรแกรม คอ ผลลพธจากการคณเมทรกซ [A] และ [B] แสดงในเมทรกซชดท 3
PH 615 142
แบบฝกหดบทท 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
บทท 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
วธทา
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
ดงนน เวคเตอรทางดานขวาเปลยนเปน
⎪⎪⎭
⎪⎪⎬
⎫
⎪⎪⎩
⎪⎪⎨
⎧
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
ตวอยางท 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
ดงนน หลงจากอาศยโชลเลสกดคอมโพซชน จะได
[ ]⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
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
วธทา
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
ตวอยางท 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
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
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
ซงจะเหนไดวา ทาการ 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
จะเหนไดวา เมอทาการ 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
จะไดเอาทพท คอ ซงเกดการลเขา คาตอบของสมการ คอ x1 = 2.375000, x2 = 3.843750, x3 = 7.656250
6.4 การประยกตทางดานฟสกส การแกระบบของสมการดวยวธวเคราะหเชงตวเลขมความสาคญตอการแกปญหาทางดานฟสกสมาก เพราะวาในทางปฏบตการคานวณโดยการกดเครองคดเลขดวยมอ เพอแกระบบสมการอาจจะเกดความผดพลาดไดงาย และสนเปลองเวลามาก ปญหาทางฟสกสทสามารถนาวธวเคราะหเชงตวเลขมาประยกตใชงาน เชน ปญหาเรองมวลสมดลยภายในเครองปฏกรณปรมาณ การคานวณกระแสและศกยภายในวงจรไฟฟา และระบบมวลทสนบนสปรงเปนตน
PH 615 156
ตวอยางท 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
ตวอยางท 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
เอาทพท คอ ดงนน V1 = 37.4 โวลต, V2 = 16.4 โวลต, V3 = 7.9 โวลต ตวอยางท 6.8 จากวงจรตอไปน จงหาคากระแสและแรงดนของแหลงจายไฟในวงจร
PH 615 159
วธทา จากกฎของเคอรชอฟ จะได
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
ตวอยางท 6.9 มวล 3 อนผกตอกนวางอยบนพนเอยงดงรป จงหาความเรงของมวล และแรงตงในเสนเชอก วธทา จาก free – body diagram จะได
100a + T = 519.72
50a – T + R = 0
25a – R = 0 สวนหนงของโปรแกรมทใชในการคานวณคา a, T และ R คอ
PH 615 161
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
แบบฝกหดบทท 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
3. จากวงจรตอไปนจงหาคา I 1, I 2 และ I3 4. มวล 4 อน 5, 8, 10 และ 15 กโลกรม ผกตดกนและคลองผานรอกดงรป จงหา
ความเรงและแรงตงในเสนเชอก
PH 615 164
บทท 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
กาหนดให = จะได 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
เนองจาก ดงนน และ 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
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
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
ซงจะไดคาฟงกชนมากทสด คอ 1.776
7.2 การประมาณคาโดยอาศย Quadratic function การประมาณคาโดยอาศย Quadratic function อาศยหลกการทวา second – order polynomial เปนการประมาณคาทใกลกบรปทรงของฟงกชนใกลจดสงสดหรอตาสด ดงรป
PH 615 170
รปท 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
ทง เกา 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
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
เอาทพทจากโปรแกรม คอ จะไดคามากสดท 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
*---------------------------------------- เอาทพทจากโปรแกรม คอ ซงจะไดคามากทสด = 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
ตวอยางท 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
โปรแกรมตอไปน คานวณคามากสดโดยวธนวตน 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
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
ตวอยางท 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
ซงจะไดคามากสดของฟงกชน คอ 8.697929 ตรงกนทงสามวธ แตวธนจะเขาถงคาตอบไดเรวทสด (7 iterations เทานน)
PH 615 180
แบบฝกหดท 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
บทท 8 การปรบเสน และการประมาณคา
ขอมลทไดจากการทดลอง จะมการเบยงเบนมากเราอาจจะใชกราฟเสนตรงหรอเสนโคงใด ๆ มาแทนขอมลททดลองไดน ในบทนจะศกษาการคานวณวาฟงกชนใดเปนตวแทนของชดขอมลไดดทสดและไดดวยวธใด
รปท 8.1 ขอมล a) จากการทดลอง b) จากการ fit ดวยโพลโนเมยล c) จากการ fit ดวยเสนตรง
PH 615 183
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
หาคา ทนอยทสด โดย 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
สาหรบการ 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
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
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
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
* -------------------------------------------- * 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
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
สมการทใชแทนขอมล คอ 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
ตวอยางท 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
คานวณ 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
รปท 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
รปท 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
ตวอยางท 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
สมการเสนตรงทใชแทนขอมล คอ y = 3.389 + 0.372x โดยม ความคลาดเคลอนมาตรฐาน = 1.232 สมประสทธสมสมพนธ = 0.900
PH 615 198
เมอสลบ x กบ y แลว fit เสนตรง จะไดเอาทพท คอ ซงจะไดสมการเสนตรงใหมทใชแทนขอมล คอ y = - 5.387 + 2.176x โดยม ความคลาดเคลอนมาตรฐาน = 2.977 สมประสทธสมสมพนธ = 0.900
PH 615 199
ตวอยางท 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
รปท 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
หา 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
ตวอยางท 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
ดงนน 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
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
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
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
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
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
รปท 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
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
โดยมสมประสทธสหสมพนธ = 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
*==================================================== 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
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
เชนเดยวกบวธการทผานมา คาสมประสทธหาจากผลรวมของกาลงสองของความคลาดเคลอน
( )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
ตวอยางท 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
*==================================================== 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
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
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
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
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
วธทา
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
ตวอยางท 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
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
ตวอยางท 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
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
เอาทพทจากโปรแกรม คอ จะได 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
รปท 8.7 การประมาณอนกรมฟเรยรกบคลนรปสเหลยม
PH 615 228
แบบฝกหดบทท 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
บทท 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
ตวอยางท 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
รปท 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
วธทา
( )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
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
ตวอยางท 9.3 อาศยวธทราเปซอยดอล และ multiple trapezoidal คานวณอนทเกรทในตวอยาง 9.1 วธทา ใชโปรแกรมคานวณอนทเกรทโดยวธทราเปซอยดอลในตวอยาง 9.1 จะไดเอาทพท คอ a) b) c)
PH 615 236
จะเหนไดวา ถาแบง 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
สาหรบการใชหลกการซมปสน 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
วธท 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
โปรแกรมทใชในการคานวณคอ 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
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
RETURN END *============================================================ เอาทพทจากโปรแกรม คอ จะไดอนทเกรท = 1.6234670 ตวอยางท 9.5 จงหาอนทเกรทในตวอยาง 9.1 โดยใชวธการซมปสน 1/3 วธทา โปรแกรมทใชในการคานวณจากตวอยาง 9.4 โดยเปลยน f(x) เอาทพทจากโปรแกรม คอ
PH 615 242
a) b) c)
PH 615 243
ตวอยางท 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
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
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
b) c)
PH 615 247
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
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
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
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
แผนผงตอไปนแสดงการคานวณโดยวธรอมเบรก โดย 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
เอาทพทจากโปรแกรม คอ
9.5 การอนทเกรทโดยวธเกาสควอดราเจอร (Gauss Quadrature)
เปนวธการเลอกจดในการอนทเกรทใหเหมาะสมเพอทจะไดพนทใตกราฟทถกตองมากยงขน
รปท 9.6 วธเกาสควอดราเจอร
PH 615 253
ตวอยางท 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
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
แบบฝกหดบทท 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
บทท 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
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
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
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
สาหรบ 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
เชนเดยวกน จะสามารถหาอนพนธไดจาก
( ) ( )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
รปท 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
ผลเฉลยจรงท 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
สาหรบการคานวณดวยคอมพวเตอรใชโปรแกรมตอไปน 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
จะได 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
ตวอยางท 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
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
สาหรบวธรงกตตาลาดบสอง
( )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
สาหรบวธรงกตตาลาดบหา
( )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
โปรแกรมทใชในการคานวณ คอ 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
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
วธทา 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
สวนหนงของโปรแกรมโดยวธรงกตตาทใชในการคานวณ คอ *------------------------------------------------------- FUNCTION FUNC(X,Y) FUNC=(4.*EXP(0.8*X))-0.5*Y RETURN END *------------------------------------------------------- เอาทพทจากโปรแกรม คอ จะได y(0.5) = 3.751699 ตรงกบการใชเครองคดเลขดวยมอ
PH 615 274
ตวอยางท 10.8 จงใชวธรงกตตาลาดบสอนทเกรทสมการ
dxdy = yx2 – 1.2y
เมอ y(0) = 1 วธทา ใชโปรแกรมในตวอยาง 10.6 โดยเปลยนคาฟงกชน เอาทพทจากโปรแกรม คอ ซงจะไดคา y เมอ x = 0, 0.5, … , 4
การคานวณโดยใชโปรแกรมคอมพวเตอร จะใหผลทถกตองแมนยาและรวดเรว อยางไรกตามนกศกษาจะตองเขาใจขนตอนการแกปญหากอน โดยวธกดเครองคดเลขดวยมอ แลวจงนาผลลพธทไดมาเปรยบเทยบกน
PH 615 275
10.5 ปญหาคาทขอบเขตและคาไอเกน
การแกสมการดฟเฟอเรนเชยล จะขนกบคาเรมตนแตบางครง บางปญหาไมไดขนกบคาเรมตนคาเดยว แตจะมคาตาง ๆ ตามคาตวแปรทจดเหลานน คาเหลานมกจะเปนคาเฉพาะทจดขอบเขตของระบบ จงมชอเรยกวา ปญหาทขอบเขต
รปท 10.2 ปญหาคาทขอบเขต
ตวอยางปญหาคาทขอบเขตเชน ปญหาความรอนเคลอนทภายในแทงเหลกยาว ถาไมมฉนวนหมแทงเหลก จะมความรอนถายเทออกมาจากแทงเหลก ถาท x = 0 อณหภม = T1 และท x = L อณหภม = T2 จะเขยนเปนภาวะขอบเขตไดเปน
T(0) = T1 T(L) = T2
PH 615 276
โดยมสมการอนพนธแทนอณหภมทตาแหนงตาง ๆ
( TThdx
)a −′2Td
+2 = 0
เมอ = สมประสทธการถายเทความรอน ซงจะสามารถใชสมการเชงตวเลข เพอแกสมการหาอณหภมทตาแหนงตาง ๆ ได
h′
รปท 10.3 การถายเทความรอนในแทงเหลก
คาไอเกน (eigen value) เปนปญหาหนงของปญหาคาขอบเขตทเกยวของกบระบบทางฟสกส เชน ระบบการเคลอนทของมวลบนสปรง ระบบอนภาคภายใตศกยของกลศาสตรควนตม เปนตน
10.6 เลขสม (Random number)
การแกสมการอนพนธบางระบบทมลกษณะเฉพาะ อาจจะไมตองกระทาโดยใชวธการทไดกลาวมาแลว เชน การแผรงสของสารกมมนตรงส จะเปนไปอยาง random อตราการสลายตวของสารกมมนตรงส จะขนกบจานวนอะตอมทมอย
dtdN = - λN
สามารถใชเลขสมแทนโมเดลการแผรงส ซงทาใหไมจาเปนทจะตองแกสมการอนพนธ
โดยตรงฟงกชนทใชในการสรางเลขสม คอ
PH 615 277
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
แบบฝกหดบทท 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