การหารากของสมการ f(x) =...
TRANSCRIPT
![Page 1: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/1.jpg)
หนวยท 2การหารากของสมการ f(x) = 0
2.1 บทน าเมอก าหนดให f(x) = 0 .....(2.1)โดยท f(x) เปนฟงชนตอเนอง ( Continuous function ) และเปนฟงชนไมเปนเชงเสน ( nonlinear
function ) ตองการหาคา x ทสอดคลองกบสมการท (1) ตวอยางของ (1) จะแบงออกไดเปน 2 กลมคอกลม 1 ฟงกชนผสมของฟงชนพชคณต ( Algebraic) กบ ฟงชนอดศย (transcendental) เชน
e – x – x = 0x + cos (x) = 0
sin (x) – x + 0.5 = 0x2 + x - 2 = 0x2 – ln (x) – 2 = 0
กลม 2 ฟงชนพหนาม ( Polynomial) เชนx5 – 15.5x4 + 77.5x3 – 15.5x2 + 124x – 32 = 0
รากของสมการคอคาตวแปรของสมการซงเมอน าไปแทนคาลงในสมการแลวไดคาสมการเทากบศนย เชน สมการ f(x) = x3 – 3x + 1 สามารถเขยนกราฟไดดงรปท 2.1
รปท 2.1 กราฟของ f(x) = x3 - 3x + 1
จะเหนวากราฟของฟงชน f(x) ในรปท 2.1 ตดผานแกน x หรอ f(x) = 0 ทคา x = -1.8, 0.3, 1.5 เมอพจารณาในชวงคาของ x = -2 ถง 2.5 และเมอพจารณาในชวงคาของ x = 0 ถง 2 กราฟ f(x) จะตดแกน x ทคา x = 0.3, 1.5 ซงคาดงกลาวนเมอน าไปแทนในสมการแลวจะท าให f(x) = 0 เราเรยกคาตาง ๆ นวา รากของสมการ
จากการแบงสมการขางตนทงสองกลมตางกเปนสมการไมเปนเชงเสนทม x เปนตวแปรเพยงตวเดยว ในการหาคารากของสมการเหลานถาเปนสมการทมก าลงเปน 2 หรอ 3 เราสามารถทจะค านวณไดไมยากนก แตถามเทอมของลอการทม หรอเอกโปเนนเชยลอยดวยอาจจะตองใชเวลามากเมอค านวณโดยไมใชเครองค านวณชวย
!" !#$% !# !&$% & &$% # #$% " "$%!"
&
"
'
(
)
#&
*
+
+,* - !.-.*./.#
![Page 2: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/2.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 27
พจารณาจากคาของ f(x) เมอเราแทนคา x ลงในสมการจะไดคา f(x) ซงแปรตามคา x สามารถใชเครองหมายของคาฟงชน f(x) คอเมอเครองหมายเปลยนจาก บวก(+) เปน ลบ(-) หรอตรงกนขามชวยใหเราสามารถประมาณไดวาคารากของสมการอยระหวางคา x ทอยใกลกนโดยพจารณาทมเครองหมายของ f(x) เปลยน จะท าใหสามารถหาคา x (รากของสมการ) ทเมอน ามาแทนลงในสมการ f(x) แลวท าให f(x) = 0 ไดเรวขนเพราะไมตองทดลองแทนดวยคา x ทกคา ซงวธการนเราจะน ามาใชเปนล าดบขนตอนวธเชงตวเลขเพอเขยนโปรแกรมหาคารากของสมการโดยน ามาใชก าหนดเงอนไขส าหรบตรวจเชคเครองหมายของคา f(x) ทค านวณออกมาได ซงมวธการหาคารากสมการหลายวธคอ วธแบงสองชวง และวธต าแหนงผดเปนการหารากสมการโดยการประมาณคาเปนชวง ๆ สวนวธนวตนราฟสน และวธเสนตดโคงจะเปนวธทใชความชนของเสนตรง และการท าซ าจนไดคารากสมากรทตองการออกมาซงจะกลาวถงตอไป2.2 วธกราฟ
จาก f(x) = 0เราจะแยก f(x) ออกเปน f(x) = f1(x) – f2(x)เขยนกราฟของ y = f1(x) , y = f2(x) โดยใชแกนและสเกลเดยวกน ตรวจดวา กราฟทงสองตดกนทใด
รปท 2.2จดตด A มพกด (x* , f(x*))นนคอ f1(x*) = f2(x*)
f1(x*) + f2(x*) = 0f(x*) = 0
แสดงวา x* เปนรากจรงของ f(x) = 0เพอความสะดวกและเขยนกราฟไดรวดเรว ควรเลอกใช f1(x), f2(x) ใหเปนฟงกชนทเขยนกราฟไดงาย
ตวอยาง 2.1 จงหาต าแหนงรากจรงอยางหยาบ ๆ ของฟงชนตอไปนคอ1. 3xex = 12. sin (x) – x + 0.5 = 03. x2 – ln(x) – 2 = 0
A (x*, f(x*))
y= f1(x)
y= f2(x)x
y=f(x)
0
![Page 3: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/3.jpg)
28 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
วธท า 1. 3xex = 1 สามารถเขยนเปน 3x = e– x แยกสมการเพอเขยนกราฟได y = 3x และ y = e– x
รปท 2.32. sin (x) – x + 0.5 = 0
sin (x) = x – 0.5เขยนกราฟของ y = sin(x) และ y = x – 0.5
รปท 2.43. x2 – ln(x) – 2 = 0
x2 – 2 = ln(x)เขยนกราฟของ y = x2 – 2 และ y = ln(x)
รปท 2.5มรากจรง 2 ตว คอ ตวท 1 x ≈ 0.2
ตวท 2 x ≈ 1.6
y= 3 xy= ex
x
y=f(x)
0 1 2-1-2x~ 0.25
y= x - 0.5
x
y=f(x)
1 2 3-3 -2 -1
1
2
y= sin(x)
-1
x~1.5
y= x2 - 2
x
y=f(x)
y=x2
- 2 y= ln( x)
1 2 3-1-2-3
1
2
3
-1
-2
x= 0.2
x= 1.6
![Page 4: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/4.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 29
2.3 วธแบงสองชวง(Bisection Method) บางครงเรยกวธแบงครงชวง (Half interval method) ซงมวธหารากของสมการ f(x) = 0 ทมความตอเนองบนชวง (x1,x2) ดงนคอ
รปท 2.6 การเลอกชวง x1 x2
ขนท 1 พจารณาเลอกชวงของ (x1,x2) ท f(x) มความตอเนองในชวงของ (x1,x2) แลวมการเปลยนแปลงเครอง
หมายของ f(x) แสดงวามคารากของสมการ ทท าให f(x) = 0 อยในชวงของ (x1,x2) เชน คารากของสมการ y = x2 – 2
รปท 2.7 ประมาณคารากของสมการ y = x2 – 2 อยในชวง x = 1.2 และ x = 1.5
พจารณาจากกราฟจะเหนวากราฟตดแกน x หรอ f(x) = 0 ทคา x ประมาณมากวา 1.2 แตนอยกวา 1.5 ซงคาของ f(1.2) มคาเปนลบ และคาของ f(1.5) มคาเปนบวก นนคอ
ถาก าหนดใหพจารณาในชวง x1= 1.2 และ x2 = 1.5 แลวจะไดวา1.2 < 1.5 และ f(1.2) * f(1.5) ≤ 0
ถา f(x1)*f(x2) = 0 เมอเงอนไขนเปนจรงจะไดวา คา x1 หรอ x2 เปนรากของสมการ
ขนท 2 ถา f(x1)*f(x2) ≤ 0 ใหก าหนดคา x คาใหมเปน xm = (x1 + x2) / 2 ในทนคอ
(x1, f(x1))
(x2, f(x2))
x2xnxmx1
(x1, f(x1))
(x2, f(x2))
x2
xnxm
x1
& &$% # #$% " "$%!"
!#
&
#
"
-
'
%
![Page 5: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/5.jpg)
30 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
xm = (1.2 + 1.5 ) / 2 = 2.7 / 2 = 1.35
ซงอาจจะไดคา f(xm) = 0 หรอ f(xm)*f(x1) < 0 หรอ f(xm)*(x2) < 0 กได
กรณทถาแทนคา xm ลงในสมการแลวท าให f(xm) = 0 แสดงวา xm เปนรากของสมการ
แตจากสมการนได f(xm) = (1.35)2 – 2 = - 0.1775 นนคอ f(xm) มเครองหมายลบ คอ f(xm)<0 ดงนนเราจะใชเงอนไขดงกลาวขางตนชวยในการหาคารากของสมการในวธแบงสองชวงดงน
กรณ f(xm) = 0 จะไดวา xm คอรากของสมการ
กรณ f(x1)*f(xm) < 0 หมายความวารากของสมการอยในชวง x1 และ xm จะแทนคา x2
เดมดวยคา xm (แทน 1.5 ดวย 1.35) แลวท าซ าหาคาใหม จาก (x1+xm) / 2 แลวตรวจดวาเขาเงอนไขกรณใด
กรณ f(xm)*f(x2) < 0 หมายความวารากของสมการอยในชวง xm และ x2 จะแทนคา x1เดมดวยคา xm (แทน 1.2 ดวย 1.35) แลวท าซ าหาคาใหม จาก (xm+x2) / 2 แลวตรวจดวาเขาเงอนไขดงกลาวขางตนกรณใด
จะพจารณาเหนวาชวงทครอบคลมรากของสมการจะแคบลง จนสดทายจะไดคารากสมการทท าให f(x) = 0 หรอบางครงอาจเลอกคาทท าให f(x) มคาเขาใกล 0 มาก ๆ หรอเทากบคายอมรบ คาดงกลาวถอวาเปนรากของสมการ บางครงอาจก าหนดใหเปนคาคลาดเคลอน เชน ถอวา x เปนรากของสมการเมอคาสมบรณของ สมการ f(x) < 0.0001 เมอเรายอมรบไดวา 0.0001 ≈ 0
วธการทกลาวมานเปนขนตอนวธเชงเลขส าหรบหาคารากของสมการเรยกวาวธแบงสองชวง หรอ วธแบงครงชวง น ามาเขยนเปนขนตอนการค านวณ (Algorithm) ไดดงนล าดบขนตอน 2.1 วธแบงสองชวง (Bisection Method)
1. ก าหนดคาเรมตน x1, x2 คาขอบเขต ε = n105.0 −× ( n = จ านวนหลกตวเลขทศนยม)
2. ตรวจสอบวา f(x1), f(x2) มเครองหมายตรงกนขามหรอไม ดวยการใชเงอนไข
f(x1) ⋅ f(x2) < 0 ?
ถาใชท าขนตอไป ถาไมใชกหยดการกระท าแสดงวาไมมรากในชวง (x1, x2)
3. ค านวณ xm = 2xx 21 + ....( 2.2 )
4. แทนคา xm ในฟงชน ถา |f(xm)| < ε หยดเพราะพบคารากแลว มฉะนนท าขนตอนตอไป
5. ตรวจสอบวา ชวงยอยใด มรากของ f(xm) = 0 โดยการใชเงอนไข
ถา f(x1) ⋅ f(xm) < 0 แทน x2 ดวย xm แลวยอนกลบไปท าขน 3
มฉะนนแทน x1 ดวย xm แลวยอนกลบไปท าขน 3
![Page 6: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/6.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 31
โฟวลชารท 2.1 (Bisection Method)
รปท 2.8 โฟลวชารทของวธแบงสองชวง
ตวอยาง 2.2 จงหารากของสมการ 3xex = 1 ตองการค าตอบมทศนยมถกตอง 4 ต าแหนงวธคด 3xex = 1
คณดวย e – x จะได 3x = e – x หรอ 3x – e – x = 01. check ; x = 0.25 ; f(x) = -0.028801 < 0
x = 0.26 ; f(x) = 0.008948 > 9แสดงวามรากจรงในชวง (0.25, 0.26)จะได x1 = 0.25 และ x2 = 0.26
แสดงผลทไดจากการท าซ าโดยวธแบงสองชวงดงตารางท 2.1
START
read data : x1, x2, εdefine function : f(x)
f(x1)f(x2) < 0 exitNo
STOPYes
n = 0
xm= (x1 + x2) / 2
n = n + 1
|f(xm)| < ε Yesprint : n, x1, x2, xm, f(x1),f(x2),f(xm)
STOPNo
print : n, x1, x2, xm, f(x1),f(x2),f(xm)
f(x1)f(xm) < 0Yes
No
x2:= x
x1:= x
![Page 7: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/7.jpg)
32 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
ตารางท 2.1 ผลการท าซ าดวยวธแบงสองชวง ( ตวอยางท 2.2 )n x1 x2 xm = 2
xx 21 + f(x1) f(xm)1 0.25 0.26 0.255 –0.028801 –0 .0099162 0.255 0.26 0.2575 –0.009916 –0.0004823 0.2575 0.26 0.25875 –0.000482 –0.0042344 0.2575 0.25875 0.257125 –0.000482 –0.0018765 0.2575 0.258125 0.257813 –0.000482 –0.0006896 0.2575 0.257813 0.257657 –0.000482 –0.0001097 0.2575 0.257657 0.257579 –0.000482 –0.0001858 0.257579 0.257657 0.257618 –0.000185 –0.0000369 0.257618 0.257657 0.257638 –0.000036 –0.000039
ค าตอบ x = 0.2576
ความมประสทธภาพ วธแบงสองชวงนสะดวกทจะน าไปใชเขยนโปแกรมใหคอมพวเตอรค านวณ เพราะเปนวธทงาย และลเขาหาค าตอบแนนอน ถาเงอนไขเปนจรงคอ f(x) มความตอเนองในชวง [x1,x2 ] และถา f(x1) f(x2) < 0 แสดงวา
f(x1) และ f(x2) มเครองหมายตรงกนขาม ดงนนสมการ f(x) = 0 จะมรากอยางนอยหนงคาในชวง [x1,x2 ]ความผดพลาดกอาจเกดขนได เนองจากการสะสมคาคลาดเคลอนในการค านวณแตละรอบ อาจท าให
f(x) ณ จดแบงครงชวง xn เปนคาลบทมขนาดเลกมาก แตในความเปนจรง xn อาจเปนคาบวกทชนดเลกมาก
(และในทางกลบกน) จงเปนเหตใหการเลอกชวงยอยตอไปผดพลาดได เพอใหไดคา xn ทมความแมนย าเพยงพอ
ระเบยบวธนเหมาะจะใชในกรณท f(x) มเครองหมายเปลยนไปแตละ xn แตระเบยบวธนใชไมไดกบรากซ าพจารณารปท 2.9 ทต าแหนง x = 2 อกประการหนง ถาสมการ f(x) = 0 มราก 2 คาทอยใกลเคยงกนมาก กไมเหมาะจะใชระเบยบวธน เพราะอาจค านวณขามไปไดหรออาจขามไมได เชน ทต าแหนง x = 1 และ x = 2 ถาทงสองจดแทนทจะหางกนเทากบ 1 แตหางกนเปน 0.1 หรอ 0.01 เปนตน
& &$% # #$% " "$% - -$%!'
!-
!"
!#
&
#
"
-
'
%
(
รปท 2.9 รากสองคาใกลเคยงกนมาก และท x = 2 มรากซ า
![Page 8: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/8.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 33
ระเบยบวธนลเขาหาค าตอบคอนขางชา ทงนเพราะหลงการกระท าซ า n ครง ชวงทมรากอยจะกวาง
= 1n21
2xx
++
ซงหมายความวา ตองใชจ านวนการท าซ าคอนขางมาก จงไมเหมาะจะค านวณดวยมอ แตควรใช
คอมพวเตอรชวยค านวณสามารถใชโปรแกรม MATLAB เพอวาดกราฟดงรปท 2.2 ของสมการ y = x2 – 2 ขางตนและหาราก
ของสมการไดโดยพมพล าดบค าสงลงในหนาตางค าสงของ MATLAB ดงน
>> %This is plot of y = x^2 – 2>> x=0:0.1:2.5;>> y=x.^2-2;>> plot(x,y),...>> title('plot of y = x^2 - 2'); grid
และเขยนค าสงเพอหาคารากไดดงน
>> a=[1 0 -2]; >> r=roots(a) >> r = 1.4142, -1.4142 จะไดคารากสมการสองคา คอ 1.4142 , –1.4142หมายเหต เครองหมาย >> เปนเครองหมายทเครองแสดงวาพรอมรบค าสงจะเหนในหนาคางค าสงไมตองพมพอก
เขยนโปรแกรมภาษา ซ ไดดงน#include "stdio.h"#include "conio.h"#include "iostream.h"#include "stdlib.h"#include "math.h"float fxn(float);main(){ int n,max; float x1,x2,xm,fx1,fx2,fxm; clrscr(); cout<<"Enter lower limit x1 = ";cin>>x1; cout<<"Enter upper limit x2 = ";cin>>x2; cout<<"Enter max iteration = ";cin>>max; fx1 = fxn(x1);
![Page 9: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/9.jpg)
34 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
fx2 = fxn(x2); if (fx1*fx2 >=0)
{printf("\n not have root in range x1 and x2\n");getch();return 0;}cout<<"\n n\t x1\t x2\t xm\tfx1\t fx2\t fxm\n"<<endl;for (n=1;n<=max;n++){ xm=(x1+x2)/2; fxm=fxn(xm); fx2=fxn(x2); if (fxm*fx2 >0)
x2=xm; else x1=xm; printf("%2d %8.4f %10.4f %10.4f %10.4f %10.4f %10.4f\n",n,x1,x2,xm,fx1,fx2,fxm); n+1; }
cout<<"\nRoot of equation is "<<xm;endl; getch(); return 0; }
float fxn(float x) { float fx; //fx = pow(x,3) -3*x + 1; //fx=0.1 + (0.51*x) - (sin(x)); //fx=2.5 + 1.7*x - 0.9*pow(x,2); fx=-2.0 +6.2*x - 4.0*pow(x,2)+0.7*pow(x,3); return fx; }
![Page 10: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/10.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 35
เขยนโปรแกรม Matlab ( แกไขคา n ปรบตาม error) ไดคอx1 = input(' input lower limits :');x2 = input(' input upper limits :');sec = input(' input function :');fx1 = fxn(x1,sec);fx2 = fxn(x2,sec);xm = (x1+x2)/2;fxm= fxn(xm,sec);if fx1*fx2 >= 0 fprintf('\n not have root in range x1 and x2 \n'); pause(10);
elsefprintf(' \n n x1 x2 xm fx1 fx2 fxm\n');n=1;while abs(fxm) > 0.000001 xm = (x1+x2)/2; fxm= fxn(xm,sec); fx1= fxn(x1,sec); fx2= fxn(x2,sec); if fxm*fx2 > 0 x2 = xm; else x1 = xm; end fprintf('%2d %8.4f %10.4f %10.4f %10.4f %10.4f %10.4f \n ',n,x1,x2,xm,fx1,fx2,fxm); n = n+1;endend %if
แฟมของ ฟงชนส าหรบใชเลอกโจทย f(x) ตองจดเกบในชอเดยวกบชอฟงชน กรณนคอ fxn.m% function [fx] = fxn(x,sel); function [fx] = fxn(x,sel);
if sel ==1 fx =x^3-3*x+1;elseif sel == 2 fx = 0.1+0.51*x-sin(x);
![Page 11: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/11.jpg)
36 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
elseif sel == 3 fx=2.5+1.7*x-0.9*x^2;else fx=-2.0+6.2*x-4*x^2+0.7*x^3;end
2.4 วธต าแหนงผด (False Position Method or Regula-falsi Method)
เปนวธเกาแกส าหรบหาคารากของสมการ f(x) = 0 และมความคลายคลงกบวธแบงสองสวนมขนตอนคอ
ขนท 1 วธนเราจะเลอก จด x1 และ x2 ซง f(x1) และ f(x2) มเครองหมายตรงกนขาม พจารณาจากรปกราฟของ y=f
(x) ตดแกน x ซงอยระหวางจดตด AB น แสดงวารากของสมการอยระหวาง x1 และ x2 ซงท าใหไดผลคณของฟง
ชน f(x1) * f(x2) < 0
x2x3x4x1
A[x1,f(x1)]
B[x2,f(x2)]
x5P(x)
y = f(x)]
0
รปท 2.10 การหารากโดยวธต าแหนงผด
สมการของเสนคอรดทตอผานจด A[x1,f(x1)] และ B[x2,f(x2)] คอ
[y-f(x1)] / [x-x1] = [f(x2) - f(x1)] / [x2-x1]
วธนจะใชเสนคอรด AB สมการ f(x) โดยประมาณ และใชจดตดบนแกน x เปนคารากโดยประมาณเมอท าการแปลงสมการจะไดจดตดบนแกน x ซงเปนคารากในทน คอ xm จากสมการ ( 3 )
xm = x2-[(x2-x1)*f(x1) ] / [f(x2) -f(x1)] …..( 2.3 )
ขนท 2 ถา f(x1) และ f(xm) มเครองหมายตรงกนขาม แสดงใหเหนวาคารากของสมการจะอยระหวาง x1 และ xm
ดงนนเราจะแทน x2 ดวย xm ทค านวณไดจากสมการ (3) ซงกคอคา x ล าดบตอไป เมอไดคาแลวกน าไปแทนในสมการ f(x) = 0 ถาไดคาเทากบศนยหรอใกลเคยงกบความถกตองทตองการ แสดงวาคา x ทหาไดเปนค าตอบ (ราก) ของสมการ
![Page 12: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/12.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 37
ถายงไมเปนไปตามทก าหนด กจะท าซ ากระบวนการเดมโดยใชสมการ ( 3 ) ตอไปจนกระทงไดค าตอบ กระบวนการนเราเรยกวา วธต าแหนงผด น ามาเขยนเปนขนตอนการค านวณ ไดดงน
ล าดบขนตอน 2.2 วธต าแหนงผด1. ก าหนดคาเรมตน x1, x2, ε , f(x)
2. ตรวจสอบ f(x1) ⋅ f(x2) < 0 หรอไม ถาใชท าขอ 3 ถาไมใช แสดงวาไมมคารากอยในชวง
(x1, x2) ทเลอก จะหยดท าตอไป ถามคาเปนไปตามเงอนไขกหาคาใหมตามสมการในขอ 3
3. ค านวณ xm = )x(f)x(f)xx)(x(fx12122
2 −−−
4. ตรวจสอบวา |f(xm)| < ε ใชหรอไม ถาใชหยด มฉะนนท าขอ 5 ตอไป
5. เงอนไข f(x1) ⋅ f(xm) < 0 ใชหรอไม
ถาใช แทน x2 ดวย xm แลวยอนไปท าขอ 3
ถาไมใช แทน x1 ดวย xm แลวยอนไปท าขอ 3
หรอ สามารถแทนไดดวยล าดบขนคลายกนดงน
1.. อานคาเรมตนของขดจ ากดลางและขดจ ากดบนของชวงทคาดวาจะมคารากอย เชน x1= 0 และ x2 =
1 แทนคา x1, x2 ลงในสมการ f (x)
2.. หาคาระหวางกลางของขดจ ากดในขอ 1 จากสมการ
xm = [x1*f(x2) - x2*f(x1)] / [f(x2) -f(x1)]
3.. หาคา f(x) = 0 โดยใชคา x1, x2 และ xm แทนคาลงในสมการทจะหาคาราก
4.. ตรวจสอบเงอนไข ถา f(xm) = 0 บอกใหทราบวารากของสมการ คอ xm จบการท างาน ถาไมใช ท าขอ 5
5.. ตรวจสอบเงอนไข ถา f (xm)*f (x2) < 0 แสดงวารากอยในชวง xm และ x2 ก าหนดให x1 = xm แลวท าตงแตขอท 2 ซ า ถาไมเปนตามเงอนไข ท าขอ 6 ตอไป
6. ตรวจสอบเงอนไข ถา f (xm)*f (x2) > 0 แสดงวารากอยในชวง x1 และ xm ก าหนดให x2 = xmแลวท าตงแตขอท 2 ซ า
7. ท าตงแตขอ 2 จนพบค าตอบ(รากของสมการ) แลว พมพคารากของสมการ (ค าตอบ)
8. จบ
![Page 13: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/13.jpg)
38 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
โฟวลชารท 2.2 วธต าแหนงผด ( ε= (0. )105 n−× เมอ n = จ านวนตวเลขหลงจดทศนยม )
รปท 2.10 โฟวลชารทการหารากของสมการดวยวธต าแหนงผด
ตวอยาง 2.3 หารากของ 3xex = 1 โดยวธ Method of False Position ตองการทศนยมถกตอง 4 ต าแหนงจาก 3xex = 1เอา e – x คณตลอด ; 3x = e – x หรอ 3x – e – x = 0
f(x) = 3x – e – x
ใชจดเรมตน x1 = 0.25 และ x2 = 0.26
dx = )x(f)x(f)xx()x(f
12122
−−⋅
ตารางท 2.2 ผลการท าซ าดวยวธต าแหนงผด ( ตวอยางท 2.3 )x1 x2 f(x1) f(x2) dx xm = x2 – dx f(xm)
0.25 0.26 -0.028801 0.008948 0.002370 0.25763 (0.88549)10-5
START
read data : x1, x2, εdefine function : f(x)
f(x1)f(x2) < 0 exitNo
STOPYes
n = 0
xm = x2 - dx
n = n + 1
|f(xm)| < ε Yes print n, x1,x2,f(x1),f(x2),f(xm)
STOP
No
print n, x1,x2,f(x1),f(x2),f(xm)
Yes
)1x(f)2x(f)1x2x()2x(fdx −⋅=
f(x1) f(xm) < 0No
x1 = xmx2 = xm
![Page 14: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/14.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 39
ค าตอบ x = 0.2576
ตวอยางท 2.4 จงหารากของสมการ x3- 2x- 5 = 0 โดยใชวธต าแหนงผด และก าหนดใหคดความถกตองททศนยม 3 ต าแหนง
วธท า ทดลองน าคาตวเลขแทน x ในสมการ x3- 2x- 5 = 0 ไดคาของสมการดงน
x 0 1 2 3 4
f(x) -5 -6 -1 16 51
ครงท 1 พจารณาคา f (2) = -1 และ f (3) = 16 มเครองหมายตางกน แสดงวารากของสมการอยระหวาง 2 กบ 3
ดงนนเลอกให x1 = 2 และ x2 = 3 โดยใชสมการ ( 3 ) ในวธต าแหนงผด เราจะได
xm = x1-[(x2-x1)*f(x1) ] / [f(x2) - f(x1)]
= 2 - [(3 - 2)*(-1)] / [16 -(-1)]
= 2 + 1/17 = 2.0588
จะไดคา f (xm) = f(2.0588) = (2.0588)3 - 2(2.0588) - 5 = -0.3908
เลอกให x1 = 2.0588, x2 = 3 จะได f (x1) = f (2.0588) = -0.3908 และ f (x2) = f (3) = 16 และใชสมการ( 3 )
หาคาราก (xm) ตอไป ท าซ าจนกระทงไดคาของสมการ f(x) =0.00X (ความถกตองเปนทศนยม 3 หลก)
ครงท 2, 3, 4, 5, 6 และ 7 ไดคาดงน
x4 = 2.0813 x5 = 2.0862 x6 = 2.0915
x7 = 2.0934 x8 = 2.0941 x9 = 2.0943
ดงนนรากของสมการทถกตองททศนยม 3 หลก คอ 2.094สามารถเขยนโปรแกรมภาษา ซ ไดคอ#include "stdio.h"#include "conio.h"#include "iostream.h"#include "stdlib.h"#include "math.h"float fxn(float);main(){ int n,max;
![Page 15: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/15.jpg)
40 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
float x1,x2,xm,fx1,fx2,fxm; clrscr(); cout<<"Enter lower limit x1 = ";cin>>x1; cout<<"Enter upper limit x2 = ";cin>>x2; cout<<"Enter max iteration = ";cin>>max; fx1 = fxn(x1); fx2 = fxn(x2); if (fx1*fx2 >=0)
{printf("\n not have root in range x1 and x2\n");getch();return 0;}cout<<"\n n\t x1\t x2\t xm\tfx1\t fx2\t fxm\n"<<endl;for (n=1;n<=max;n++) { fx1=fxn(x1); fx2=fxn(x2); xm=((x1*fx2)-(x2*fx1))/(fx2 - fx1);
fxm =fxn(xm);if (fxm*fx2 <0)
x1=xm; else x2=xm; printf("%2d %8.4f %10.4f %10.4f %10.4f %10.4f %10.4f\n",n,x1,x2,xm,fx1,fx2,fxm); n+1; }
cout<<"\nRoot of equation is "<<xm;endl; getch(); return 0; }
float fxn(float x) { float fx; fx = pow(x,2) +(x*sin(x)) - 4;
![Page 16: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/16.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 41
//fx=0.1 + (0.51*x) - (sin(x)); //fx=2.5 + 1.7*x - 0.9*pow(x,2); //fx=-2.0 +6.2*x - 4.0*pow(x,2)+0.7*pow(x,3); return fx;
}สามารถเขยนโปรแกรม Matlab ไดคลายกบวธแบงสองชวง ตางกนทสมการหาคารากตวใหมเปลยนจาก
สมการท ( 2 ) เปนสมการท ( 3 ) และแกไขเงอนไขใหเปนไปตามวธต าแหนงผด นอกจากนในวธนวตน-ราฟสนและวธตดเสนโคงจะเขยนโปรแกรมไดคลายกนและตางกนทสมการส าหรบหาคารากตวใหมและเงอนไขของ แตละวธเชนกน ดงนนจะไมแสดงโปรแกรม Matlab2.5 วธนวตน-ราฟสน (Newton-Rhapson Method)
เปนวธทใชส าหรบหาคารากสมการทก าหนดหรอเดาคาเรมตนเพยงจดเดยว หากเลอกคาเรมตนทเหมาะสมคอมคาใกลกบคารากแทจรงพอสมควรจะท าใหไดค าตอบเรวมากเมอเทยบกบวธแบงสองชวงและวธต าแหนงผดในหวขอทกลาวขางตน
สมมตฟงชน f(x) เปนฟงชนทมความตอเนอง (continuous function ) และมความตอเนองของอนพนธ ( continuous derivative )
รปท 2.11 การหารากสมการดวยวธนวตนราฟสน
เรมตนดวย x0 อนเปนคาประมาณของราก x ของ f(x) = 0 (x0 ไดมาโดยวธกราฟหรอการเดาคา)
จาก x0 หาจดบนเสนโคง y = f(x) นนคอจด (x0, f(x0)) ณ จดน ลากเสนสมผสตดแกน x ทจด x1, x1 จะเปนคาประมาณตวถดไปของราก x จากนน กด าเนนการดวยวธเดยวกน
สมการของเสนสมผสเสนโคงทจด (x0, f(x0)) คอ
y – f(x0) = f'(x0) ⋅ (x – x0)
เสนสมผสตดแกน x ท (x1, 0) จะได
–f (x0) = f'(x0) ⋅ (x – x0) หรอ x1 = )x(f)x(fx
00
0 ′−
ดวยวธเดยวกน จะได x2 ;
x0
f(x0)y=f(x)
0 x1x2
x
![Page 17: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/17.jpg)
42 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
x2 = )x(f)x(fx11
1 ′−
ท าเชนนเรอยไปจะไดสตรทวไป คอ
xn+1 = )x(f)x(fx
nn
n ′− ; nกคาดบถดไปจาการทาซาลา1n...2,1,0n
=+=
.....(2.4)
วธหาค าตอบของวธนสามารถแทนไดดวยล าดบขนดงน
1. เลอกคารากโดยประมาณ ( เชน x0 = 2 ) แทนลงในสมการ f(x) ถาไดคา f(x0) = 0 แสดงวา x0 คอรากของสมการ ถาไมเปนตามเงอนไขนกตองท าล าดบขนท 2 ตอไป
2. หาคาอนพนธของสมการ f(x) และหาคารากทมคาใกลคาทแทจรงตอไปจากสมการ
x1 = x0 - [f(x0) / f’(x0)]
หรอ xn+1 = xn - [f(xn) / f’(xn)]
3. หาคา f (xn+1) ถา f (xn+1) = 0 แสดงวา xn+1 เปนคารากของสมการ
4. ท าตงแตขอ 2 จนพบค าตอบ(รากของสมการ) แลว พมพคารากของสมการ (ค าตอบ) 5. หยดหรอจบโปรแกรมหรอล าดบขนตอน 2.3 วธนวตน-ราฟสน (Newton's Method)
1. ก าหนด f (x), f '(x), คาเรมตน x0, คาขอบเขต ε
2. ค านวณคา x = )x(f)x(fx
00
0 ′−
3. หยดค านวณ ถา |x – x0| < ε มฉะนนแทน x0 ดวย x แลวยอนกลบไปท าขอ 2 ซ า
เพอความสะดวกในการค านวณดวยมอ สามารถสรางตารางไดดงนx f(x) f ' (x) dx = f(x)/ f '(x)x0 f(x0) f'(x0) dx0 = f(x0) / f '(x0)
x1 = x0 – dx0 f(x1) f'(x1) dx1 = f(x1) / f '(x1)
x2 = x1 – dx1 : : :
![Page 18: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/18.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 43
โฟวลชารท 2.3 วธนวตน-ราฟสน (Newton's Method)
รปท 2.12 โฟวลชารทการหารากของสมการดวยวธนวตนราฟสน
ตวอยางท 2.5 จงหารากของสมการ 3x + sin (x) – ex = 0 โดยใชวธของนวตน ตองการค าตอบทมความถกตองททศนยม 6 ต าแหนง
f(x) = 3x + sin (x) – ex
f ' (x) = 3 + cos (x) – ex
START
read data : x0, εdefine fn. : f(x), f'(x)
n = 0
x = x0 -dx
n = n + 1
|x - x0| < ε
Yesprint n, x, f(x)
STOP
)x(f)x(fdx
00
′=
x0 = xNo
![Page 19: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/19.jpg)
44 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
เรมตนดวย x0 = 0
n x f(x) f'(x) dx = f(x)/f'(x)0 0 -1.0 3.0 -0.3333331 0.333333 -0.068418 2.549345 -0.0268372 0.360170 (-6.2977)10 – 4 2.502264 (-2.5168)10 – 4
3 0.3604217 (-7.00)10 –9
ค าตอบ x = 0.3604217 ; |f(x)| = 7.00 × 10 – 9 < 5 × 10 – 7
เขยนโปรแกรมภาษา ซ ไดดงน#include "stdio.h"#include "conio.h"#include "iostream.h"#include "stdlib.h"#include "math.h"float fxn(float);float dfxn(float);main(){ int n,max; float e,re,x,x0,x1,fx,fx0,dfx; clrscr(); cout<<"Enter initial x0 = ";cin>>x0; cout<<"Enter tolerance e = ";cin>>e; cout<<"Enter max iteration = ";cin>>max; cout<<" n\tx0\t x\t fx0\t fx\t f'x0\n"<<endl;
fx0 =fxn(x0);dfx =dfxn(x0);x = x0 - fx0/dfx;
for (n=1;n<=max;n++){fx0 =fxn(x0);dfx =dfxn(x0);
![Page 20: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/20.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 45
x = x0 – fx0/dfx; fx = fxn(x); printf("%2d %8.4f %10.4f %10.4f %10.4f %10.4f\n",n,x0,x,fx0,fx,dfx);x0=x;
re=((-fx0/dfx)*100)/x;if (abs(re<e)){
cout<<"\nRoot of equation is "<<x0; getch(); return 0;}}
return 0; } float fxn(float x)
{ float fx; fx = pow(x,2) -2; return fx; } float dfxn(float x) { float df; df = 2*x; return df;
}2.6 วธเสนตดโคง (Secant Method)
วธนตองใชจดเรมตน 2 จด เหมอนกบวธแบงสองชวง และวธต าแหนงผดแตมขอแตกตางคอไมจ าเปนทจดเรมตน 2 จดนนจะตองอยคนละดานของรากของสมการ f(x) = 0 นนคอ คาของ f(x) ทจดเรมตน 2 จด ไมจ าเปนตองมเครองหมายตางกนนนเอง
0
y=f(x)
x2 x0 x1x3
x x
รปท 2.13 การลเขาหาค าตอบของวธเสนตดโคง
![Page 21: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/21.jpg)
46 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
สมมตให x0, x1 เปนคาประมาณเรมตนของราก x ของสมการ f(x) = 0 สามารถประมาณกราฟ
ของ y = f(x) ดวยเสนตรงทผานจด (x0, f(x0)) และจด (x1, f(x1)) เสนตรงนตดแกน x ท (x2, 0) x2 เปนคาประมาณถดไปของ x
เราหาสมการเสนตรงไดจาก )x(f)x(fxx
0101
−− = )x(fy
xx11
−−
จด (x2, 0) อบยบนเสนตรง นนคอ x2 = 0, y = 0
จะได )x(f)x(fxx
0101
−− = )x(f
xx112
−−
x2 = )0x(f)1x(f)0x1x()1x(f
1x −−⋅−
จาก x1, x2 หาคาประมาณ x3 ไดโดยวธการเชนเดยวกน จะได
x3 = )x(f)x(f)xx()x(fx
12122
2 −−⋅−
ท าเชนนเรอยไป จะไดสดรการท าซ า
xn+1 = )x(f)x(f)xx()x(fx
1nn1nnn
n −−
−−⋅− ....(2.5)
สตรของวธเสนตดโคง คลายคลงกบสตรการท าซ าในวธต าแหนงผด แตวธเสนตดโคงไมตองพจารณาวา f(x) จะมเครองหมายเปลยนไปหรอไม
ล าดบขนตอน 2.4 วธเสนตดโคง (Secant Method)1. ก าหนดคาเรมตน x0, x1, คาชอบเขต ε, ฟงกชน f(x)
2. ค านวณคา x = )x(f)x(f)xx()x(fx
01011
1 −−⋅−
3. หยดการค านวณ ถา |x –x1| < ε มฉะนน แทนคา x0 ดวย x1, x1 ดวย x แลวยอนไปท าขอ 2
![Page 22: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/22.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 47
โฟลวชารท 2.4 วธเสนตดโคง (Secant Method)
รปท 2.14 โฟลวชารทของวธเสนตดโคง
ส าหรบการค านวณดวยมอ เพอความสะดวก รวดเรว เราสรางตารางส าหรบการค านวณดงนx y = f(x) ∆∆∆∆x ∆∆∆∆y
yx
∆∆ dx = y
xy ∆∆⋅
x0 y0
x1 y1 ∆x1 = x1 – x0 ∆y1 = y1 – y0 Z1 dx1 = y1 ⋅ Z0
x2 = x1 – dx1 y2 ∆x2 = x2 – x1 ∆y2 = y2 – y1 Z2 dx2 = y2 ⋅ Z1x3 = x2 – dx2 y3 ∆x3 = x3 – x2 ∆y3 = y3 – y2 Z3 dx3 = y3 ⋅ Z2
x4 = x3 – dx3 y4 ∆x4 = x4 – x3 ∆y4 = y4 – y3 Z4 dx4 = y4 ⋅ Z3
: : : : : :
START
read data : x0, x1, ε definefunction : f(x)
n = 0
x =x1 - dx
n = n + 1
|x - x1| < ε
Yes
print n, x, f(x)
STOP
)0x(f)1x(f)0x1x()1x(fdx −
−⋅=
x0 = x1f(x0) = f(x1)
x1 = xf(x1) = f(x)
No
![Page 23: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/23.jpg)
48 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
ตวอยางท 2.6 จงหารากของสมการ 3x+ sin (x) – ex = 0 ตองการค าตอบถกตองททศนยม 6 ต าแหนงf(x) = 3x + sin x – ex ใชคาเรมตน x0 = 0 , x1 = 1
n x y = f(x) ∆x ∆yyx
∆∆ dx = y
xy ∆∆⋅
0 -10 1 1.123189 1 2.123189 0.470990 0.5290101 0.470900 0.265160 -0.529010 -0.858029 0.616541 0.1634822 0.307508 -0.134823 -0.163482 -0.399983 0.408722 -0.0551053 0.362613 0.005478 0.055105 0.140301 0.392763 0.0021524 0.360416 (9.83)10 – 5 -0.002152 -0.005380 0.400000 (3.93)10-5
5 0.3604217 (-7.00)10 – 9
ค าตอบคอ x = 0.3604217 ; |f(x)| = 7.00 × 10– 9 < 5 × 10– 8 < 5 × 10– 7
หมายเหต วธเสนตดโคงบางครงไมลเขา แตในกรณทลเขาจะลเขาดวยอนดบสงกวาก าลงหนง คอ ≈ 1.618ขอดของวธเสนตดโคง คอ ไมตองเรมตนดวยจดทอยคนละดานของราก บางครงถารากเปนจดสมผส
ภายนอก x กสามารถใชวธนหารากได ในขณะทวธแบงสองชวงใชไมได
ตวอยางท 2.7 การไมลเขาเมอใชวธเสนตดโคง แมวาจะเลอก x0 ใกลต าแหนงของรากกตาม
f(x) = (x3 – 3x2 – x + 9) ex = 0 คาเรมตน x0 = - 1 , x1 = -2
รปท 2.15 กรณไมลเขาสค าตอบของวธเสนตดโคง
0
y=f(x)
x2
x0
x1x3
x
![Page 24: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/24.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 49
เขยนโปรแกรมภาษา ซ ไดดงน#include <stdio.h>#include <conio.h>#include <iostream.h>#include <stdlib.h>#include <math.h>#define DEFAULT_LOOP 100#define DEFAULT_TOL 1.0E-07#define ZERO_APPROACH 1.0E-07double TF(double); /* Function -- for finding roots */void InputValue(double*,double*,int*,double*);int Secant(double,double,double*,int*,double* );void DisplayOutput(int,int,double,double );/* Global Variable *//* keeping the results in array for display */double first[1000],second[1000],xx[1000],yy[1000];void main(){double guess1, /* first initial guess */
guess2, /* second guess */root,tolerance;
int loop_limit, /* Maximum of Iteration */ error; /* Flag for printing output */ guess1 = guess2 = root = tolerance=0; loop_limit = 0; error = 0; clrscr(); printf("\n\t\tFind Root of equation by Secant method\n"); printf("\t\t===========================================\n"); InputValue(&guess1,&guess2,&loop_limit,&tolerance); error = Secant(guess1,guess2,&root,&loop_limit,&tolerance); DisplayOutput(error,loop_limit,root,tolerance);}
![Page 25: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/25.jpg)
50 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
void InputValue( double* lower, double* upper, int* maxloop, double* tol){char buffer[81]; printf("\nInput First initial estimated root : ");gets(buffer); *lower=atof(buffer); printf("Input Second initial estimated root : " );gets(buffer); *upper=atof(buffer); printf("Input Limit of iteration : ");gets(buffer); *maxloop = atoi(buffer); printf("Tolerence (default = 1E-7): ");gets(buffer); *tol = atof(buffer);}void DisplayOutput(int printflag,int iter,double root,double tolerance){int i;
switch(printflag) {case 0 : {if (iter) {
printf("\n Iter Guess 1 Guess 2 x y(x) \n"); printf( "===== ======= ========= ======= ========");
}; for ( i =1; i <= iter; i++) { printf("\n%3d %10.5f %10.5f %10.5f %10.5f ",
i,first[i],second[i],xx[i],yy[i]); if (i%15==0){
getch(); clrscr();
printf("\n Iter Guess 1 Guess 2 x y(x) \n"); printf( "===== ======= ========= ======= ========");
} } printf("\n\n Approximate root of eqn = % 12.8f", root); printf("\n tolerence of f(x) = %e",tolerance); break; } /* case 0 */
![Page 26: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/26.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 51
case 1 : { printf ("\n The slope is nearly zero. Choose a new Guess!!.\n"); break; case 2:{ printf("\nIt must exceed the limit of iteration.\n"); break; } } } /* switch */}/*======================================================================*/int Secant(double x1, double x2, double* root,int* maxloop,double *tol){double x3,y1,y2,y3;int found=0,i=0;
if (*maxloop <= 0 ) *maxloop = DEFAULT_LOOP;if (*tol <= 0) *tol = DEFAULT_TOL;y1 = TF(x1);y2 = TF(x2);if (fabs(y1) <= ZERO_APPROACH) {
found = 1;}else{
if (fabs(y2) <= ZERO_APPROACH) { found = 1;}else{if (fabs(y2-y1) <= ZERO_APPROACH) return(1);}
} while (!found && (i < *maxloop)){
i+=1; first[i] =x1; second[i]=x2; /* for display */ x3 = x2-y2*(x2-x1)/(y2-y1); /* secant formula */ xx[i] = x3; /* for display */ y3 = TF(x3);
![Page 27: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/27.jpg)
52 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
yy[i] = y3; /* for display */ if (fabs(x2-x1) < *tol) { found = 1; break; } y1 = y2; x1 = x2; x2 = x3; y2 = y3;
} /* while loop */ *root = x2; if (i >= *maxloop && !found)
return 2; else
*maxloop = i;return 0;}double TF(double h){
/*y=.........*/return(3.284*exp(-(h-36089)/20806) - 7.35);
}/*======================================================================*/2.7 การหารากของสมการพหนาม
ก าหนดให สมการพหนามดกร n (Polynomial Equation Degree n)p(x) = an + 1x
n + anxn – 1 + ... + a3x2 + a2x + a1 = 0 .....(2.6)
โดยทสมประสทธ ai (i = 0, 1, 2, ..., n) เปนจ านวนจรงตองการหา รากคาตาง ๆ ของ (6) กอนแกสมการ (6) ควรจะดองมความรพนฐานเกยวกบสมการ
พหนาม เชน ทฤษฎพนฐานทางพชคณต (Fundamental Theorem of Algebra) ทสามารถจะสรปไดวา1. สมการพหนาม (6) จะมรากทงหมด n ราก โดยทรากทงหมดน ไมจ าเปนตองมคาแตกตางกน
หมด และอาจจะเปนรากจรง หรอรากเชงซอนกได และถาม a + bi เปนรากเชงซอน 1 คา ดงนน คสงยค
(Coujugate) a – bi จะเปนคารากของ p(x) = 0 ดวย
2. ถาดกรของพหนามเปนเลขค และสมประสทธ ai เปนจ านวนจรง ดงนน p(x) = 0 จะตองมรากจรงอยางนอย 1 ราก ทงนเพราะวา ถามรากเชงซอนจะตองมดกรเปนจ านวนคเสมอ
นอกจากนแลว ยงมแนวทางพจารณาไดอกวา p(x) = 0 จะมรากจรงหรอเปลา
![Page 28: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/28.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 53
กฎแหงเครองหมายของเดสการตส (Descrates' rule of sign)สมการพหนาม ทมสมประสทธเปนจ านวนจรงบวก จะมจ านวนรากจรงทเปนคาบวก ไมเกนจ านวน
ครงของการเปลยนเครองหมายของสมประสทธตวอยางท 2.8
1. p(x) = x5 – x4 + 3x3 – 9x2 + 10x – 10มรากเชงซอน 4 ราก รากจรง 1 ราก คอx1 = –1 + 2i, x2 = –1 – 2i, x3 = 1 + i, x4 = 1 – i, x5 = 1
2. p(x) = x4 + 5x2 + 4 = 0ไมมการเปลยนเครองหมายของสมประสทธ ฉะนนจงไมมรากจรง
(x2 + 1) (x2 + 4) = 0(x + i) (x – i) (x + 2i) (x – 2i) = 0
x = –i , i , –2i , 2iซงเปนรากเชงซอนทงหมด
การหารากจรงของ an+1xn + anxn – 1 + ... + a3x2 + a2x + a1 = 0 กระท าโดยใชวธของนวตน
xn + 1 = )nx(p)nx(p
nx ′− .....(2.7)
n = จ านวนการท าซ า และ n = 0, 1, 2, .....p(xn) คอ คาของพหนาม p(x) ท xn
p'(xn) คอ คาของอนพนธของ p'(x) ท xn
เรมตนดวย x0 อนเปนคาประมาณเรมตนของรากจรง และแตละรากหาไดจากวธการคนหาต าแหนงทของราก
การค านวณคาของ p(xn) จะไมใชการแทนคา xn ลงใน p(x) โดยตรง เพราะใชจ านวนครงของการบวก การคณคอนขางมาก อาจท าใหผลลพธมคาคลาดเคลอนมากดวย
พจารณา p(x) = a4x3 + a3x2 + a2x + a1แทนคา xi โดยตรง p(xi) = a4(xi)
3 + a3(xi)2 + a2xi + a1
ใชเครองหมายคณ = 3 + 2 + 1 = 6 ครงใชเครองหมายบวก = 3 ครงแตถาเขยน p(xn) ในแบบการคณซอน (Nested Multiplication)
p(xn) = ((a4xn + a3)xn) + a2)xn + a1 .....(2.8)จะเหนวาใชการคณเพยง 3 ครง และใชการบวกเพยง 3 ครงเทานน
![Page 29: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/29.jpg)
54 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
การหาคาของพหนามโดยวธของฮอรเนอร (Horner's Method)การหาคาของ p(x) หนงสอบางเลมจะเรยกวธการหารสงเคราะห (Syntetic division) แทนทจะเรยก
วธของฮอรเนอรจาก (8) น ามาเขยนเปนตารางการค านวณไดดงน
a4 a3 a2 a1x = xi - a4xi (a4xi + a3)xi ((a4xi + a3) xi + a2) xi
a4 a4xi + a3 (a4xi + a3)xi + a2 ((a4xi + a3) xi + a2) xi + a1 = p(xi)
ส าหรบการหาคาของพหนาม p(x) ดกร n เมอ x = z เรมตนดวยการเขยน ส.ป.ส. ของ xn เรยงตามล าดบ ถา ส.ป.ส. ตวใดมคาเปนศนย กใสคา 0 ดวย ดงตารางขางลางน
p(x) : an + 1 an an – 1 ... ak ... a2 a1x = z : - zbn + 1 zbn ... zbk + 1 ... Zb3 zb2
bn + 1 bn bn – 1 ... bk ... b2 b1 = p(z)
โดยท 1,...,1n,nk;zbab ab
1kkk
1n1n−=+=
=
+
++ .....(2.9)
ล าดบขนตอน 2.5 Horner's Method or Nested Multiplication or Synthetic Division1. ก าหนดให : ส.ป.ส. ak เมอ k = 1, 2, 3, n + 1 ; คา z
2. bn + 1 = an + 1
3. ส าหรบ k = n ถง 1 ทละ -1 ท า bk = ak + zbk + 1
4. p(z) = b1
![Page 30: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/30.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 55
โฟวลชารท 2.5 Horner's Method or Nested Multiplication or synthetic Division
รปท 2.16 โฟวลชารทวธของ Horner's หรอ การคณซอน หรอ Synthetic divisionตวอยางท 2.9 จงหาคาของ p(x) = 3x5 – 2x4 + x2 – 7x – 4 เมอ x = 2
a6 a5 a4 a3 a2 a13 -2 0 1 -7 -4
x = 2 - 6 8 16 34 543 4 8 17 27 50 = p(2)
b6 b5 b4 b3 B2 b1
ตรวจสอบp(2) = 3(2)5 – 2(2)4 + (2)2 - 7(2) – 4
= 3(32) –2(16) +4 – 14 – 4= 96 – 32 + 4 – 14 – 4= 50
การหาคาอนพนธ p'(x)ก าหนดพหนาม p(x) ดกร n : p(x) = an + 1x
n + anxn – 1 + ... + a3x2 + a2x + a1 = 0
โดยการหารดวย x – z จะไดผลลพธเปนพหนามดกร n - 1 และเศษ r1
START
input : a(k) ; k = 1, 2, n + 1
b(n+1) = a(n+1)
b(k) = a(k) + z . b(k + 1)
output : print p(z)
k = n (-1) 1
p(z) = b(1)
STOP
![Page 31: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/31.jpg)
56 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
zx)x(p
− = zxr)x(q 1−+ .....(2.10)
q(x) เปนพหนามดกร n – 1 ซงเขยนในรปq(x) = bn + 1x
n – 1 + bnxn – 2 + ... + b4x2 + b3x + b2 .....(2.11)แทน q(x) ใน (2.10)
p(x) = (x – z)(bn + 1xn – 1 + bnxn – 2 +... + b4x2 + b3x + b2) + r1
= bn + 1xn + bnxn – 1 + ... + b4x3 + b3x2 + b2x + r1 - zbn + 1 x
n – 1 - ... - zb4x2 - zb3x - zb2
p(x) = bn + 1xn + (bn – zbn + 1) x
n – 1 + ... + (b3 – zb4)x2 + (b2 – zb3)x + (r1 – zb2) .....(2.12)
เปรยบเทยบสมการ (2.12) กบ p(x) = an + 1xn + anxn – 1 + ... + a3x2 + a2x + a1
จะพบวา bn + 1 = an + 1
bk = ak + zbk +1 ; k = n, n – 1, ..., 1
โดยท b1 = r1 = a1 + zb2
จาก (2.10) zx)x(p
− = zxr)x(q 1−+
ถา (x – z) หาร p(x) ลงตว ดงนนเศษ r1 = 0
กรณท (x – z) หาร p(x) ไมลงตว ดงนนเศษ r1 = a1 +zb2
q(x) เปนพหนามดกร (n –1) ซง ส.ป.ส. bk : k = n + 1, n, ... , 2 ซงหาไดจาก
an + 1 an an – 1 ... ak ... a2 A
x = z - zbn + 1 zbn ... zbk + 1 ... zb3 zb2
bn + 1 bn bn – 1 -- bk -- b2 b1 = a1 + zb2 = เศษ r1bn + 1 = an + 1
bk = ak + zbk + 1 ; k = n, n – 1, ...1
จาก (10) p(x) = (x – z) q(x) + r1แทน x = z : p(z) = r1
อนพนธของสมการ (10) เทยบกบ x : p' (x) = (x – z) q'(x) + q(x) ⋅ 1เมอ x = z p' (z) = (z – z) q'(z) + q(z)จะไดวา p' (z) = q(z)นนหมายความวา การหาคาของ p' (x) เมอ x = z คอ การหาคาของ q(z) นนเอง เราท าการหาแบบ
Horner ดงเชนทผานมาดงน
![Page 32: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/32.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 57
q(x) bn + 1 bn bn – 1 ... bk ... b3 b2x = z - zcn + 1 zcn ... zck + 1 ... zc4 zc3
cn + 1 cn cn – 1 --- ck --- c3 c2 = q(z) = p'(z)
โดยท cn + 1 = bn + 1
ck = bk + zck + 1 ; k = n, n – 1, ..., 3, 2 ....(2.13)น าตารางทงสองมาเขยนตอกนไดดงน
p(x) : an + 1 an an – 1 ... ak ... a2 a1x = z - zbn + 1 zbn ... zbk + 1 ... zb3 zb2
q(x) : bn + 1 bn bn – 1 --- bk --- b2 b1 = p(z)- zcn + 1 zcn ... zck + 1 ... zc3
cn + 1 cn cn – 1 --- ck --- c2 = p'(z)เขยนเปนสตรไดดงน
bn + 1 = an + 1
cn + 1 = bn + 1 .....(2.14)
bk = ak + zbk + 1 ; k = n, n – 1, ...1
ck = bk + zck + 1 ; k = n, n – 1, ..., 2ล าดบขนตอน 2.6 การค านวณ (Compute) p(x), p'(x) for x = z
1. ก าหนดให ส.ป.ส. ak , k = 1, 2, ..., n + 1 คา z
2. bn + 1 = an + 1
cn + 1 = bn + 13. ส าหรบ k = n ถง 2 ทละ -1 ท า
bk = ak + z ⋅ bk + 1
ck = bk + z⋅ ck + 1
4. b1 = a1 + z ⋅ b2
5. p(z) = b1p'(z) = c2
![Page 33: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/33.jpg)
58 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
โฟวลชารท 2.6 การค านวณ p(x) , p'(x) for x = z
รปท 2.17 โฟวลชารทค านวณ p(x) และ p ' (x)
START
input : a(k) ; k = 1, 2, n + 1input z
b(n+1) = a(n+1)c(n+1) = b(n+1)
b(k) = a(k) + z . b(k + 1)c(k) = b(k) + z . c(k + 1)
output : print p(z), dp(z)
k = n (-1) 2
b(1) = a(1) + z . b(2)
STOP
p(z) = b(1)dp(z) = c(2)
![Page 34: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/34.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 59
ตวอยางท 2.10 จงหาคา p(2) และ p'(2) ชอง p(x) = 3x5 – 2x4 + x2 – 7x – 4
3 -2 0 1 -7 -4x = 2 - 6 8 16 34 54
3 4 8 17 27 50 = p(2)- 6 20 56 1463 10 28 73 173 = p'(2)
p(2) = 50p'(2) = 173
ตรวจสอบp'(x) = 15x4 – 8x3 + 2x – 7
p'(2) = 15(2)4 – 8(2)3 + 2(2) – 7= 15(16) – 8(8) + 4 – 7= 240 – 64 + 4 – 7= 173
การหาคาอนพนธอนดบสงของพหนาม p(x)เพองายตอการเขาใจ จะยกตวอยาง p(x) ดกร 4
p(x) = a5x4 + a4x3 + a3x2 + a2x + a1ให z เปนจ านวนจรงใด ๆ
หาร p(x) ดวย (x – z)
−+=−
−+=−
−+=−
−+=−
zxrazx
)x(qzx
r)x(qzx)x(q
zxr)x(qzx
)x(qzx
r)x(qzx)x(p
45
3
33
2
22
1
11
.....(2.15)
โดยท r1, r2, r3, r4 เปน เศษหาไดจาก Complete Horner Table ดงน
![Page 35: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/35.jpg)
60 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
Complete Horner Tablep(x) : a5 a4 a3 a2 a1
x = z zb5 zb4 zb3 zb2
q1(x) : b5 b4 b3 b2 b1 = p(z) ⇒ เศษ r1- zc5 zc4 zc3
q2(x) : c5 c4 c3 c2 = q1(z) ⇒ เศษ r2- zd3 zd4
q3(x) : d5 d4 d3 = q2(z) ⇒ เศษ r3- zc5
c5 c4 = q3(z) ⇒ เศษ r4
โดยท c5 = d5 = c5 = b5 = a5
ในทน p(x) = a5x4 + a4x3 + a3x2 + a2x+ a1q1(x) = b5x3 + b4x2 + b3x + b2
q2(x) = c5x2 + c4x + c3
q3(x) = d5x + d4จาก (2.15) แทนคายอนกลบจากบรรทดลางไปสบรรทดบน
q3(x) = a5(x – z) + r4
q2(x) = (x – z) q3(x) + r3
= (x – z) (a5(x – z) + r4) + r3
= a5(x – z)2 + r4(x – z) + r3
q1(x) = (x – z) q2(x) + r2
= (x – z) [a5(x – z)2 + r4(x – z) + r3] + r2
= a5(x – z)3 + r4(x – z)2 + r3(x – z) + r2
p(x) = (x – z) q1(x) + r1= (x – z)[a5(x – z)3 + r4(x – z)2 + r3(x – z) + r2] + r1= a5(x – z)4 + r4(x – z)3 + r3(x – z)2 + r2 (x – z) + r1
ซงเปนพหนามในเทอมดกรของ (x – z) ซง ส.ป.ส. a5, r4, r3, r2, r1 หาไดจาก Complete Horner Table
![Page 36: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/36.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 61
ถา p(x) เปนพหนามดกร n ใด ๆ เราดดแปลง p(x) เปนพหนามดกรของ (x – z) ไดดงนp(x) = r1 + r2(x – z) + r3(x – z)2 + r4(x – z)3 + ...+rn + 1(x – z)n .....(2.16)
เรากระจาย p(x) รอบจด x = z โดยใชอนกรมเทเลอร จะไดวา
p(x) = p(z) + p'(z) (x – z) + p"(z) !2)zx( 2− +p'"(z) !3
)zx( 3− +...+p(n)(z) !n)zx( )n(− .....(2.17)
เทยบ ส.ป.ส. เทอมดานขวาในสมการ (2.16), (2.17) จะไดp(z) = r1 p(z) = r1p'(z) = r2 p'(z) = r2
!21 p"(z) = r3 หรอ p"(x) = 2!r3
Μ Μ
!n1 p(n)(z) = rn + 1 p(n)(z) = n!rn + 1
โดยท r1, r2, r3, ..., rn +1 หาไดจาก Complete Horner Table
ตวอยางท 2.11 จงแปลงพหนาม p(x) = 2x3 – x2 + 3x – 5 ใหเปนพหนามในเทอม (x – 2) และจงหาคา p(2) ,p'(2), p"(2), p'"(2)
2 -1 3 -5x = 2 - 4 6 18
2 3 9 13 = r1- 4 142 7 23 = r2
- 42 11 = r3
p(x) = 2(x – 2)3 + 11(x – 2)2 + 23(x – 2) + 13p(2) = 13p'(2) = 23p"(2) = 2!(11) = 22p'"(2) = 3!(2) = 12
ตรวจสอบ
=′′′=−=−=′′
=+−=+−=′
12)x(p22224)2("p,2x12)x(p
233424)2('p,3x22x6)x(p
![Page 37: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/37.jpg)
62 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
2.7.1 การหารากจรงของพหนาม โดยวธของนวตนเราไดรการหาคาของ p(x) และ p'(x) แลว ในทนตองการหารากของพหนาม
p(x) = 0เราจะผนวกวธของ Horner กบวธของ Newton เขาดวยกนจะไดสมการ (2.18)
xn + 1 = )nx(p)nx(p
nx ′− ; n = 0, 1, 2, ... .....(2.18)
โดยเรมตนท x0 ซงเปนคาประมาณเรมตนของรากจรงตวใดตวหนงของ p(x) = 0 ค านวณหาคาของ p(x0), p ' (x0) โดยใชวธ Horner แลวปรบปรงคา x0 ใหดขนโดยใชสตรนวตน (2.18)
x1 = )x(p)x(px
00
0 ′−
จากนนค านวณคา p(x1), p'(x1) โดยใชวธ Horner แลวปรบปรงคา x1 ใหดขนโดยใชสตร (2.18)
x2 = )x(p)x(px11
1 ′−
ท าเชนนเรอยไปจนกวาจะได p(xn) = 0 หรอ xn มคาแมนย า ( ทศนยมถกตองตามทตองการ )เขยนเปนล าดบขนตอนการหารากจรงไดดงล าดบขนตอน 2.7ล าดบขนตอน 2.7 หารากจรง 1 คาของ p(x)
1. ก าหนด ส.ป.ส. ak , k = 1, 2, ..., n + 1
คาขอบเขต ε, δ, คาเรมตน x0 = z
2. bn + 1 = an + 1
cn + 1 = bn + 13. Iteration i = 04. ส าหรบ k = n ถง 2 ทละ -1 ท า
bk = al + z ⋅ bk + 1
ck = bk + z ⋅ ck + 1
5. b1 = a1 + z ⋅ b2
6. dx = 21
cb
7. x = z – dx8. Iteration i = i + 19. หยด ถา | dx | < ε และ | b1 | < δมฉะนน แทน z ดวย x แลวยอนไปท าขอ 4
![Page 38: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/38.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 63
การหาคาเรมตนของรากจรงแตละราก1. พจารณาจากเครองหมาย p(x) เชน p(xn) ⋅ p(xn + 1) < 0 แสดงวารากจรงอยระหวา (xn, xn + 1)
2. กรณทเปนรากซ า p(xn) ⋅ p(xn + 1) > 0 กรณนตองดเครองหมายของอนพนธ ถาเครองหมายของ
p'(xn – 1) แตกตางกบของ p'(xn + 1) และ |P(x)| < δ , δ = 10 – 2 แสดงวามรากท xn
รปท 2.18โฟวลชารท 2.7 หารากจรง 1 คา (Find one Real of p(x)
START
input : read a(k), k = 1,2, n +1, ε, δ, z
b(n+1) = a(n+1)c(n+1) = b(n+1)
i = 0
i = i + 1
| dx | < εYes
output : print i, x
STOP
z = x
k = n(-1)2
b(k) = a(k) + z . b(k+1)c(k) = b(k) + z . c(k+1)
b(1) = a(1) + z . b(2)dx = b(1) / c(2)
x = z - dx
| b(1) < δNo
0
y=f(x)
xnxn-1
x x
p(x)
xn+1
รปท 2.19 โฟวลชารทการหารากจรงของนวตน 1 ราก
![Page 39: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/39.jpg)
64 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
ตวอยางท 2.12 จงหารากจรงทงหมดของ p(x) = 3x5 – 2x4 + x2 – 7x – 4 ตองการค าตอบถกตองททศนยม4 ต าแหนง ( หารากจรงวามกคากอน )
ส.ป.ส. ของ p(x) มเครองหมาย + - + - - เปลยนไป 3 ครง นนคอมรากจรงไมเกน 3 คาx p(x) p'(x)
-1.5 -24.16 92.94-1.2 -5.77 35.53-0.9 0.03 6.87-0.6 0.06 -4.53-0.3 -1.83 -7.43
0 -4 -70.3 -6.02 -6.490.6 -7.87 -5.580.9 -9.03 -1.191.2 -7.64 12.681.5 0.41 44.941.8 22.33 107.41
มรากจรงอยใกล ๆ x = -0.9 , x = -0.6, x = 1.5 และรากอก 2 รากเปนรากเชงซอนการหารากจรงตวทหนง ใชคาเรมตน x 0 = -0.9
3 -2 0 1 -7 -4x = -0.9 - -2.7 4.23 -3.807 2.5263 4.02633
3 -4.7 4.23 -2.807 -4.4737 0.02633- -2.7 6.66 -9.801 11.34723 -7.4 10.89 -12.608 6.8735
x1 =
−− 8735.602633.09.0 = -0.90383
3 -2 0 1 -7 -4x = -0.90383 - -2.71149 4.25839 -3.84886 2.57489 3.99955
3 -4.71149 4.25839 -2.84886 -4.42511 -0.00045- -2.71147 6.70911 -9.91276 11.534343 -7.42298 10.9675 -12.76162 7.10923
x2 =
−−− 10923.700045.090383.0 = -0.90377
![Page 40: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/40.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 65
3 -2 0 1 -7 -4x = -0.90377 - -2.71131 4.25794 -3.84820 2.57489 3.99955q1(x) 3 -4.71131 4.25794 -2.84820 -4.42588 -0.00002
- -2.71131 6.70834 -9.91100 11.531383 -7.42262 10.96628 -12.75920 7.10550
x3 =
−−− 10550.700002.090377.0 = -0.90377
รากจรงตวทหนง คอ x = -0.90377การหารากจรงตวทสอง ใชคาเรมตน x0 = -0.6
p(x) = ( x + 0.90377 ) ( 3x4 – 4.71131x3 + 4.25794x2 – 2.84820x – 4.42588 )
q1(x) : 3 -4.71131 4.25794 -2.84820 -4.42588x = -0.6 - -1.8 3.90670 -4.89884 4.64822
3 -6.51131 8.16473 -7.74704 0.22234- -1.8 4.98679 -7.890913 -8.31131 13.15152 -15.63795
x1 =
−−− 63795.15
22234.06.0 = -0.58578
3 -4.71131 4.25794 -2.84820 -4.42588x = -0.58578 - -1.75734 3.78921 -4.71386 4.42970
3 -6.46865 8.04715 -7.56206 0.00382- -1.75734 4.81862 -7.536513 -8.31131 12.86577 -15.09857
x2 =
−−− 09857.15
00382.058578.0 = -0.58553
3 -4.71131 4.25794 -2.84820 -4.42588x = -0.58553 - -1.75659 3.78715 -4.71064 4.42593
3 -6.46790 8.04509 -7.55884 0.00005- -1.75659 4.81569 -7.530373 -8.22449 12.86078 -15.08921
x3 =
−−− 08921.15
00005.058553.0 = -0.58553
รากจรงตวทสอง คอ x = - 0.58553p(x) = (x + 0.90377) (x + 0.58553) (3x3 – 6.46790 x2 + 8.04509x – 7.55884)
![Page 41: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/41.jpg)
66 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
การหารากจรงตวทสาม ใชคาเรมตน x0 = 1.5
3 -6.46790 8.04509 -7.55884x = 1.5 - 4.5 -2.95185 7.63986
3 -1.9679 5.09324 0.08102- 4.5 3.798153 2.5321 8.89139
x1 =
− 89139.808102.05.1 = 1.49089
3 -6.46790 8.04509 -7.55884x = 1.49089 - 4.47267 -2.974668 7.559441
3 -1.99523 5.070422 0.000601- 4.47267 3.6935913 2.47744 8.764013
x2 =
− 764013.8000601.049089.1 = 1.49082
3 -6.46790 8.04509 -7.55884x = 1.49082 - 4.47246 -2.974841 7.558824
3 -1.99544 5.070249 -0.000012- 4.47246 3.6927913 2.47702 8.76304
x3 =
−− 76304.8000012.049082.1 = 1.49082
รากจรงตวท 3 คอ x = 1.49082p(x) = (x + 0.90377) (x + 0.58553)(x – 1.49082)(3x2 – 1.99544x + 5.070249)
![Page 42: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/42.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 67
รากทเหลออก 2 รากเปนรากเชงซอนหาไดจากสตร
x = )3(2)070249.5)(3(42)99544.1(99544.1 −−±
= 6861207.5699544.1 −±
= 0.33257 + 1.25677iรากตวท 1 = -0.90377รากตวท 2 = -0.58553รากตวท 3 = 1.49082รากตวท 4 = 0.33257 + 1.25677iรากตวท 5 = 0.33257 – 1.25677i
2.7.2 วธของแบรสโตว (Bairstow's Method) วธของแบรสโตว มไวส าหรบใชหารากเชงซอนของพหนาม
p(x) = an + 1 xn + anxn – 1 + ... + a3x2 + a2x + a1 = 0 .....(2.19)
ถา p(x) มรากเชงซอน คสงยค กเปนรากเชงซอนดวย นนคอ z1, z2 = α ± iβ เปนรากของ p(x) = 0ดงนน h(x) = (x – (α + iβ)) (x – (α – i β))
= x2 – 2αx + (α2 + β2)หรอจะเขยน
h(x) = x2 – rx – s โดยท
β+α=⋅=α=+=
2221
21zzs
2zzr
ฟงกชน h(x) จะเปนตวประกอบก าลงสองของ p(x) เมอเอา h(x) = x2 – rx – s หาร p(x) จะได
p(x) = (x2 – rx – s) q(x)+b2(x – r) + b1 .....(2.20)โดยท q(x) เปนพหนามก าลง (n – 2) และพจน b2(x – r) + b2 เปนเศษ q(x) เขยนไดในแบบ
q(x) = bn + 1xn – 2 + bnxn – 3 + bn – 1x
n – 4 + ...+ b5x2 + b4x + b3) .....(2.21)จากสมการ (20)จะไดวา
p(x) = (x2 – rx – s)(bn + 1xn – 2 + bnxn – 3 + bn – 1x
n – 4 + ...+ b5x2 + b4x + b3)+ b2(x – r) + b1= bn + 1x
n + (bn – rbn + 1)xn – 1 + (bn – 1 – rbn – sbn + 1)x
n + 2 +....+ (bk – rbn + 1 - sbk + 2)xk – 1
+ ...+ (b2 – rb3 – sb4) x + b1 – rb2 – sb3 .....(2.22)
![Page 43: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/43.jpg)
68 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
เปรยบเทยบ ส.ป.ส. ของ x ก าลงตางๆ ใน (2.22) กบ (2.19)p(x) = an + 1 x
n + anxn – 1 + an – 1xn – 2 + ... + akxk – 1 + ... + a3x2 + a2x + a1
จะพบวาbn + 1 = an + 1
bn – rbn + 1 = an
bn – 1 – rbn – sbn + 1 = an – 1
bk – rbk + 1 –sbk + 2 = ak
b1 – rb2 – sb3 = a1
หรอbn + 1 = an + 1
bn = an + rbn + 1
bk = ak + rbk + 1 +s bk + 2 , k = n – 1, n – 2, ..., 2, 1
สรางเปนตารางการหารสงเคราะห ของตวประกอบก าลงสอง ดงน
p(x) : an + 1 an an – 1 ... ak .... a3 a2 a1r - rbn + 1 rbn ... rbk + 1 .... rb4 rb3 rb2s - - sbn + 1 ... sbk + 2 ... sb5 sb4 sb3
q(x) : bn + 1 bn bn - 1 ... bk ... b3 b2 b1u v
ถา b2 = 0, b1 = 0 จะไดวา p(x) = (x2 – rx – s) q(x)
ตวอยางท 2.131. จงหาร p(x) = x5 + 6x4 – 20x2 + 22x – 8 ดวย (x2 + 2x – 3) โดยวธการหารสงเคราะหของ
ตวประกอบก าลงสองในทน r = -2 , x = 3
![Page 44: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/44.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 69
a6 a5 a4 a3 a2 a11 6 0 -20 22 8
r = -2 -2 -8 10 -4 -6s = 3 3 12 -15 6
1 4 -5 2 3 8b2 b1
p(x) = (x2 + 2x – 3) (x3 + 4x2 –5x + 2) + 3(x + 2) + 8
(x2 – rx – s) ( q(x) ) + b2(x – r) + b1
2. จงหาร p(x) = x4 + 5x2 + 4 ดวย x2 + 1 ในทน r = 0, s = -1
a5 a4 a3 a2 a11 0 5 0 4
r = 0 0 0 0 0s = -1 -1 0 -4
1 0 4 0 0b2 b1
p(x) = (x2 – rx – s) q(x) +b2(x – r) + b1(x4 + 5x2 + 4) = (x2 +1)(x2 + 4)
แสดงวา x2 + 1 เปนตวประกอบก าลงสองของ x4 + 5x2 + 4
จดมงหมายของเรา คอ จะหาวธของ Bairstowแนวคดของ Bairstow กคอ การหาร quadratic factor ของ p(x) นนเอง
p(x) = (x2 – rx – s) q(x)
คอ ตองการหา x2 – rx – s คอ จะหาคา r, s ทท าให b2 = 0, b1 = 0
เราจะสงเกตเหนวา คาของ b2, b1 ขนอยคา s* ของ r, s ดวยเหตนเราจงเขยน b2, b1 เปนฟงกชนของตวแปร r, s ดงน
b2 = b2(r, s) , b1 = b1(r, s)และตองหาคา r = r* , s = s*ทท าให
![Page 45: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/45.jpg)
70 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
====
0*)s*,r(bb0*)s*,r(bb
11
22 .....(2.23)
เรากระจายฟงกชน b2 = b2(r, s), b1 = b1(r, s) รอบจด (r0, s0) โดยใชอนกรมเทเลอรของ 2 ตวแปร
b2(r, s) = b2(r0, s0) + (r – r0) r)s,r(b 002
∂∂ + (s – s0) s
)s,r(b 002∂
∂ +...
b1(r, s) = b2(r0, s0) + (r – r0) r)s,r(b 001
∂∂ + (s – s0) s
)s,r(b 001∂
∂ +...
โดยท s)s,r(b 002
∂∂ หมายถงอนพนธยอย ( partial derivative ) ของ b2 = b2(r, s) เทยบกบตวแปร
r แลวแทนคา r = r0, s = s0ถา r = r*, s = s* และจาก (2.23) จะได
0 = b2(r*, s*) ≈ b2(r0, s0) + (r* – r0) r)s,r(b 002
∂∂ + (s* – s0) s
)s,r(b 002∂
∂
0 = b1(r*, s*) ≈ b1(r0, s0) + (r* – r0) r)s,r(b 001
∂∂ + (s* – s0) s
)s,r(b 001∂
∂
−=∂∂−+∂
∂−
−=∂∂−+∂
∂−
)s,r(bs)s,r(b)s*s(r
)s,r(b)r*r(
)s,r(bs)s,r(b)s*s(r
)s,r(b)r*r(
001001
0001
0
002002
0002
0 .....(2.24)
ในทางปฏบตในการหาคา r = r* , s = s* เราจะไดเพยงคาประมาณ r1, s1 แทนคา r* = r1, s* =
s1 ใน (2.24) จะได
)s,r(bs)s,r(b)ss(r
)s,r(b)rr(
)s,r(bs)s,r(b)ss(r
)s,r(b)rr(
001001
01001
01
002002
01002
01
−=∂∂−+∂
∂−
−=∂∂−+∂
∂−
เขยนยอ ๆ เปน
01011
112
22sss,rrr;
bsbrr
br
bsbrr
br−=∆−=∆
−=∂∂∆+∂
∂∆
−=∂∂∆+∂
∂∆.....(2.25)
ถาเราทราบ rb2∂∂ , s
b2∂∂ , r
b1∂∂ , s
b1∂∂ ทจด (r0, s0) กแกสมการ (25) หาคา ∆r , ∆s ซงกจะได
คา r1, s1 ตวใหมตอไป
![Page 46: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/46.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 71
แนวทางการหา rb2∂∂ , s
b2∂∂ , r
b1∂∂ , s
b1∂∂
เนองจากbn+1 = an + 1 bn = an + rbn + 1
r1nb
∂+∂ = 0 s
nb∂
∂ = 0
bn = an + rbn + 1 bn – 1 = an – 1 + rbn + sbn + 1
rnb
∂∂ = bn + 1 + r r
1nb∂+∂
s1nb
∂−∂ = r s
nb∂
∂ + bn + 1
rnb
∂∂ = bn + 1 s
1nb∂
−∂ = bn + 1
bn – 1 = an – 1 + rbn + sbn + 1 bn – 2 = an – 2 + rbn – 1 + sbn
r1nb
∂−∂ = r
nbrnb ∂∂+ s
2nb∂−∂ = nbs
1nbr +∂−∂
r1nb
∂−∂ = bn + rbn + 1 s
2nb∂−∂ = bn + rbn + 1
bn – 2 = an – 2 + rbn – 1 + sbn bn – 3 = an – 3 + rbn – 2 + sbn – 1
r2nb
∂−∂ = bn – 1 + r
1nb∂−∂ +s r
nb∂
∂s
3nb∂−∂ = r s
2nb∂−∂ +bn – 1 +s s
1nb∂
−∂
= bn – 1 + r s2nb
∂−∂ + s s
1nb∂
−∂
s3nb
∂−∂ = bn – 1 +r r
1nb∂−∂ + s s
nb∂
∂
bk = ak + rbk +1 + sbk + 2
tkb
∂∂ = bk + 1 + r r
2kbsr1kb
∂+∂+∂
+∂ ; k = n – 1, n – 2, ..., 2, 1จะสงเกตเหนวา
r1nb
∂+∂ = s
nb∂
∂ = 0
rnb
∂∂ = s
1nb∂
−∂
r1nb
∂−∂ = s
2nb∂−∂
r2nb
∂−∂ = s
3nb∂−∂
หรอจะเขยนทวไป rkb
∂∂ = s
1kb∂
−∂ , k = n + 1, n ,..., 2
ถาให ck + 1 = rkb
∂∂ = s
1kb∂
−∂ , k = n, n – 1, ..., 2 .....(2.26)
![Page 47: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/47.jpg)
72 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
ผลทไดคอ
3cs1b;2cr
1b4cs
2b;3cr2b
=∂∂=∂
∂=∂
∂=∂∂
.....(2.27)
แทน (2.27) ลงใน (2.25) :1b3sc2rc2b4sc3rc
−=∆+∆−=∆+∆
.....(2.28)
เมอทราบคา c2, c3, c4 กแกสมการหา ∆r, ∆s ไดท าใหหาคา r1 = r0 + ∆r , s1 = s0 + ∆s ได
การหาคา c2, c3, c4
จาก (2.26) ck + 1 = rkb
∂∂
k = n ; cn + 1 = rnb
∂∂ = bn + 1
k = n – 1 ; cn = r1nb
∂−∂ = bn + r⋅bn + 1 = bn + r⋅cn + 1
ck + 1 = rkb
∂∂ = bk + 1 + r. r
1kb∂+∂ + s⋅ r
2kb∂+∂
k = k – 1 ; ck = bk + r⋅ rkb
∂∂ + s⋅ r
1kb∂+∂
ck = bk + r ⋅ ck + 1 + s ⋅ ck + 2
เขยนสรปคา bk, ck ตาง ๆ ไดดงน
bn + 1 = an + 1
bn = an + r ⋅ bn + 1
bk = ak + r ⋅ bk + 1 + s ⋅ bk + 2k = n – 1, n – 2, ..., 1
cn + 1= bn + 1
cn = bn + r ⋅ cn + 1
ck = bk + r ⋅ ck + 1 + s ⋅ ck + 2 k = n – 1, n – 2, ..., 2
เพอความสะดวกในการค านวณคา bk, ck ตาง ๆ เราสรางตาราง Quadratic synthetic divisionp(x) : an + 1 an an - 1 ... ak ... a4 a3 a2 a1
r rbn + 1 rbn ... rbk + 1 ... rb5 rb4 rb3 rb2s sbn1 ... sbk + 2 ... sb6 sb5 sb4 sb3
q(x) : bn + 1 bn bn – 1 ... bk ... b4 b3 b2 b1r rcn + 1 rcn ... rck + 1 ... rc5 rc4 rc3 rc2s scn + 1 ... sck + 2 ... sc6 sc5 sc4
cn + 1 cn cn - 1 ... ck ... c4 c3 c2
...(2.29)
![Page 48: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/48.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 73
ยอนกลบไปทระบบสมการ (2.28)
132
243bscrcbscrc
−=∆+∆−=∆+∆
.....(2.28)
D = 32
43cccc
= 4223 ccc − ตอง ≠ 0
D1 = 31
42cbcb
−−
= b1c4 – b2c3 , D2 = 12
23bcbc
−−
= b2c2 – b1c3
∆r = DD1 , ∆s = D
D2
r1 = r0 + ∆ r , s1 = s0 + ∆s
จากนนใชคา r1, s1 เปนคาเรมตนค านวณดวยวธการแบบเดยวกน จนกวาจะไดคา b2 = 0, b1 = 0 หรอไดคา r, s ถกตองตามทตองการ จะได
p(x) = (x2 – rx – s) q(x)
การหารากเชงซอนของ x2 – rx – s = 0 ใชสตรส าเรจ x1, 2 = 2s4rr 2 +±
ตวอยางท 2.14 จงหารากเชงซอนของ p(x) = x4 + x3 + 3x2 + 4x + 6 ใชคาเรมตน r0 = -2.1, s0 = -1.9 เพอหา
quadratic factor ของ (x2 – rx – s) ของ p(x) ตองการความถกตองททศนยม 4 ต าแหนงครงท 1
1.0000 1.0000 3.0000 4.0000 6.0000r = -2.1 -2.1000 2.3100 -7.1610 2.2419s = -1.9 -1.9000 2.0900 -6.4790
1.0000 -1.1000 3.4100 -1.0710 1.7701-2.1000 6.7200 -17.2830 b2 b1
-1.9000 6.08001.0000 -3.2000 8.2300 -12.2740
c4 c3 c2
แทนลงใน 7701.1s2300.8r2740.120710.1s2000.3r2300.8
bscrcbscrc
132
243−=∆+∆−
=∆−∆⇒−=∆+∆
−=∆+∆
![Page 49: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/49.jpg)
74 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
D = 2300.82740.122000.32300.8
−−
= 28.4561000
D1 = 2300.87701.12000.30710.1
−−
= 3.1500100
D2 = 7701.12740.120710.12300.8
−− = - 1.4224690
r1 =
+− 4561000.281500100.31.2 = –1 .9893028
s1 =
−+− 4561000.284224690.19.1 = –1.9499881
ครงท 21.0000 1.0000 3.0000 4.0000 6.0000
r = – 1.9893028 -1.9893028 1.9680228 -6.0037848 0.1485138s = – 1.9499881 -1.9499881 1.9291286 -5.8851317
1.0000 -0.9893028 3.0180347 -0.0746562 0.2633821-1.9893028 5.9253484 -13.9119800
-1.9499881 5.80824541.0000 -2.9786056 6.9933950 -8.1783707
6.9933950∆r – 2.9786056∆s = 0.0746562-8.1783904∆r + 6.9933950∆s = - 0.2633821
D = 9933950.61783907.89786056.29933950.6
−−
= 24.547373
D1 = 9933950.62633821.09786056.20746562.0
−−
= -0.2624111
D2 = 2633821.01783907.80746562.09933950.6
−− = -1.2313674
r1 = D1D
1r + =
−+− 547373.242624111.09893028.1
= –1 .9999927
s2 = DDs 2
1+ =
−+− 547373.242313674.19499881.1
= –2.0001509จะเหนวา r2 → r* = -2
s2 → s* = -2 ∴ quadratic factor ของ p(x) คอ x2 – 2x + 2
![Page 50: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/50.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 75
p(x) = (x2 + 2x + 2) q(x)
1.0000 1.0000 3.0000 4.0000 6.0000r* = – 2 -2.0000 2.0000 -6.0000 0.0000s* = – 2 -2.0000 2.0000 -6.0000
1.0000 -1.0000 3.0000 0.0000 0.0000
q(x) = x2 – x + 3
p(x) = (x2 + 2x + 2) (x2 – x + 3 ) = 0
หารากของ x2 + 2x + 2 = 0
x = 2)2)(1(442 −±−
= 2i22 ±− = -1 + i
หารากของ x2 – x + 3 = 0
x = 21211 −±−
= i2115.0 ± = 0.5 + 1.6583123i
p(x) มรากเชงซอน 4 รากคอ –1 + i , –1 – i , 0.5 + 1.6583123 i , 0.5 – 1.6583123 i
ล าดบขนตอน 2.8 Bairstow's Methodส าหรบหา quadratic factor x2 – rx – s ของ p(x) = an +1 xn + anxn – 1 + ... + a2x + a11. ก าหนด ส.ป.ส. ของ p(x), ak, k = 1, 2, ..., n + 1คาขอบเขต ε, คาเรมตน r, s
2. ให bn + 1 = an + 1 ; cn + 1 = bn + 1i = 0
3. bn = an + r ⋅ bn + 1 , cn = bn + r ⋅ cn + 14. ค านวณ
bk = ak + r ⋅ bk + 1 + s ⋅ bk + 2
ck = bk + r ⋅ ck + 1 + s ⋅ ck + 2 k = n – 1, n – 2, ..., 2
5. b1 = a1 + r ⋅ b2 + s ⋅ b3
6. det = 23c = c2 ⋅ c4
![Page 51: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/51.jpg)
76 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
det 1 = b1 ⋅ c4 – b2 ⋅ c3
det 2 = b2 ⋅ c2 – b1 ⋅ c37. ถา det = 0 แลว แทน dr = (0.05)r , ds = (0.05)s
มฉะนน dr = det1 / det , ds = det 2 / det8. r = r + dr , s = s + ds
i = i + 19. ถา | dr | < ε และ | ds | < ε แลว แสดง quadratic factor = x2 – rx – sมฉะนนยอนกลบไปท าขอ 3.
![Page 52: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/52.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 77
โฟวลชารท 2.8 Bairstow's Method
รปท 2.20 โฟวลชารทของการหารากของสมการพหนามดวยวธของแบรสโตว
START
input : a(k), k = 1, 2,n +1, ε, r, s
b(n+1) = a(n+1)c(n+1) = b(n+1)
i = 0
det = c(3) * c(3) - c(2) * c(4)det1 = b(1) .c(4) - b(2) *c(3)
det2 = b(2) * c(2) - b(1) * c(3)
det = 0Yes
output : print quadraticfactor = x2 - rx - s
STOP
k = n-1(-1)2
b(k) = a(k) + r . b(k+1) + s . b (k+2)c(k) = b(k) + r . c(k+1) + s . c (k+2)
b(1) = a(1) + r * b(2) + s * b(3)
| ds | < εNo
b(n) = a(n) + r . b(n+1)c(n) = b(n) + r . c(n+1)
r = r + drs = s + ds
dr = det1 / detds = dets / det
No
| dr | < εNo
dr = 0.05*rds = 0.05*s
YesYes
![Page 53: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/53.jpg)
78 ระเบยบวธเชงเลขส าหรบงานวศวกรรม
2.8 สรปในหนวยนกลาวถงวธการหารากสมการไมเปนเชงเสนคอ วธแบงสองชวง วธต าแหนงผด วธนวตน
ราฟสน วธเสนตดโคง นอกจากนยงมวธหาคารากของสมการพหนามทน าเสนอในหนวยนคอวธของฮอรเนอรทใชรวมกบวธของนวตน และวธของแบรสโตว ซงสามารถใชส าหรบหาคารากเชงซอนไดดวย แตอยางไรกตามไมมวธใดดทสดและแกปญหาไดทกปญหา ซงแตละวธกมขอดขอเสยตางกน
วธแบงสองชวงและวธต าแหนงผดจะสามารถลเขาหาค าตอบอยางแนนอน โดยตองเลอกคาเรมตนใหคาฟงชนมเครองหมายตางกนแตความเรวในการเขาหาค าตอบจะชา
วธนวตนราฟสนจะลเขาหาค าตอบเรวกวาวธอน แตตองหาอนพนธของฟงชนท าใหไมสะดวก สามารถใชวธเสนตดโคงแทนไดแตความเรวในการลเขาหาค าตอบจะชากวาของวธนวตนราฟสน นอกจากนถาเลอกคาเรมตนไมเหมาะสมอาจท าใหไมลเขาหาค าตอบได
วธฮอรเนอรและแบรสโตวชวยใหสามารถหาคารากของฟงชนทเปนรากเชงซอนไดโดยไมตองหาอนพนธของสมการ
![Page 54: การหารากของสมการ f(x) = 0rmuti.ac.th/user/kittiwut/company_files/numerical_pdf/num_U2.pdf · กลุ ม 2 ฟ งชันพหุนาม ( Polynomial)](https://reader033.vdocuments.net/reader033/viewer/2022050718/5e16679ec31ca2316f3f3d08/html5/thumbnails/54.jpg)
หนวยท 2 การหารากของสมการ f(x) = 0 79
แบบฝกหดท 2
1. ใชวธกราฟหาต าแหนงของรากสมการตอไปน1
1.1 x + cos (x) = 01.2 ex + 2x – 2 = 0
2. หารากของสมการโดยวธแบงสองชวง ตองการความถกตองทจดทศนยม 4 ต าแหนงของสมการ 3xex = 1
ก าหนดใหคารากอยระหวาง x1 = 0.25 และ x2 = 0.263. หารากของสมโดยวธต าแหนงผด ใหมความถกตองททศนยม 3 ต าแหนง2
3.1 x3 - 4x -9 = 03.2 x6 - x4 - x3 - 1 = 0
4. แสดงลกษณะการลเขาหาค าตอบของวธนวตนราฟสน พรอมทงเขยนสมการทใชหาคารากของวธน5. ใชวธต าแหนงผดค านวณหารากของสมการตอไปน โดยใหมความถกตองททศนยม 4 ต าแหนง
5.1 xex = 2 5.2 cos x = 3x - 1 5.3 xex = cos x 5.4 x log10x = 1.2
6. หารากเชงซอนของ p(x) ตอไปน โดยมการท าซ า ( Iteration ) เพยง 2 ครง 5.1 p(x) = 3x4 – 2 x3 + 4 x2 – x + 6 = 0 ใชคาเรมตน r = 1 และ s = 1
5.2 p(x) = 5x4 + 7 x2 + x + 3 = 0 และควอดราตคแฟคเตอรโดยประมาณของ p(x) คอ x2 - 0.5 x + 1
5.3 p(x) = 2x4 – 3 x3 + 5 x2 + x + 9 = 0 มคาประมาณของรากรากหนงเปน -0.5 + i
******
1 ปรงจนทร วงศวเศษ เอกสารค าสอนระเบยบวธเชงตวเลข I. สถาบนเทคโนโลยพระจอมเกลาธนบร หนา 3-42 B.S. Grewal Numerical Methods in Engineering & Science :KHANNA PUBLISHERS, 1996 , p35.