fbpx
วิกิพีเดีย

วิธีแบ่งครึ่ง

การแบ่งครึ่งช่วง (Bisection method) คือการแบ่งออกเป็นสองส่วนเท่ากันในคณิตศาสตร์เป็นวิธีการหารากที่ซ้ำ ๆ การแบ่งออกเป็นสองส่วนเท่ากันช่วงเวลาและจากนั้นเลือกช่วงย่อยซึ่งรากต้องอยู่ในแนวแกน X สำหรับการประมวลผลต่อไป เป็นวิธีที่ง่ายและมีประสิทธิภาพ แต่ก็ยังค่อนข้างช้า ด้วยเหตุนี้มันจึงมักใช้เพื่อหาแนวทางในการแก้ปัญหาโดยประมาณซึ่งใช้เป็นจุดเริ่มต้นของวิธีการบรรจบกันอย่างรวดเร็วมากขึ้น วิธีการนี้เรียกว่าวิธีการลดช่วงเวลา วิธีการค้นหาแบบไบนารี

กระบวนการ

Steep1: ทำการเดาจุดสองจุดคือค่า Xl และค่า Xuสมมุติว่าค่า Xl เป็นค่าที่ต่ำกว่าจากนั้นทดสอบว่า f (Xl) f (Xu) < 0 ถ้าไม่ใช้ให้หาจุดใหม่ซึ่งจากขั้นตอนนี้ เรารู้ว่ารากจะต้องอยู่ในช่วงนี้

Step 2: ทําการประมาณค่า Root ที่ต้องการที่จุดกึ่งกลางระหว่างสองค่าใน Step 1 โดยคํานวณ

Step 3: หาว่าตอนนี้ Root ที่ต้องการอยู่ในครึ่งไหนดังนี้

 
Bisection method

3.1 ถ้า f (Xl) f (Xr) < 0 แสดงว่า Root ที่ต้องการอยู่ในครึ่งล่าง ให้ตั้ง Xu= Xr และกลับไปทํา Step 2

3.2 ถ้า f (Xl) f (Xr) > 0 แสดงว่า Root ที่ต้องการอยู่ในครึ่งบน ให้ตั้ง Xl = Xr และกลับไปทํา Step 2

3.3 ถ้า f (Xl) f (Xr) = 0 แสดงว่าคําตอบที่ต้องการเท่ากับ X

อัลกอริทึ่ม

# มีรากเดียว

def fn(x):

return x**3 + 5*x - 9

# กำหนดวิธีการแบ่งช่วง

def bisection( eq, segment, app = 0.3 ):

a, b = segment['a'], segment['b']

Fa, Fb = eq(a), eq(b)

if Fa * Fb > 0:

  raise Exception('No change of sign - bisection not possible')  

while( b - a > app ):

  x = ( a + b ) / 2.0

  f = eq(x)

  if f * Fa > 0: a = x

  else: b = x 

return x

#test

print(bisection(fn, {'a':0,'b':5}, 0.00003)) # => 1.32974624634

ตัวอย่าง: การหารากของพหุนาม

สมมติว่ามีการใช้วิธีการแบ่งครึ่งช่วง เพื่อหารากของพหุนาม

f(x) = x^3 - x - 2

ประการแรกต้องใช้ตัวเลขสองตัว a และ b เพื่อให้ f (a) และ f (b) มีสัญญาณตรงกันข้าม สำหรับฟังก์ชันข้างต้น a = 1 และ b = 2

เป็นไปตามเกณฑ์นี้เช่น

f(1) = (1)^3 - (1) = -2

และ

f(2) = (2)^3 - 2 =+ 4

เนื่องจากฟังก์ชันเป็นแบบต่อเนื่องต้องมีรากภายในช่วง [1, 2] ในจุดเริ่มต้นจุดสิ้นสุดของช่วงที่วงเล็บรากเป็น a_ {1} = 1 และ b_ {1} = 2 ดังนั้นจุดกึ่งกลางคือ

c1 = 2 + 1 / 2 = 1.5

ค่าฟังก์ชันที่จุดกึ่งกลางคือ f (c_ {1}) = (1.5) ^ {3} - (1.5) -2 = -0.125 เนื่องจาก f (c_ {1}) เป็นค่าลบ a = 1 จะถูกแทนที่ด้วย a = 1.5 สำหรับการทำซ้ำถัดไปเพื่อให้แน่ใจว่า f (a) และ f (b) มีสัญญาณที่ตรงกันข้าม เช่นนี้ยังคงช่วงระหว่าง a และ b จะกลายเป็นเล็กมากขึ้นบรรจบกับรากของฟังก์ชัน ดูสิ่งนี้เกิดขึ้นในตารางด้านล่าง

แบ, งคร, บทความน, ไม, การอ, างอ, งจากแหล, งท, มาใดกร, ณาช, วยปร, บปร, งบทความน, โดยเพ, มการอ, างอ, งแหล, งท, มาท, าเช, อถ, เน, อความท, ไม, แหล, งท, มาอาจถ, กค, ดค, านหร, อลบออก, เร, ยนร, าจะนำสารแม, แบบน, ออกได, อย, างไรและเม, อไร, บทความน, หร, อส, วนน, ของบทค. bthkhwamniimmikarxangxingcakaehlngthimaidkrunachwyprbprungbthkhwamni odyephimkarxangxingaehlngthimathinaechuxthux enuxkhwamthiimmiaehlngthimaxacthukkhdkhanhruxlbxxk eriynruwacanasaraemaebbnixxkidxyangiraelaemuxir bthkhwamnihruxswnnikhxngbthkhwamtxngkarprbrupaebb sungxachmaythung txngkarcdrupaebbkhxkhwam cdhna aebnghwkhx cdlingkphayin aela hruxkarcdraebiybxun khunsamarthchwyaekikhpyhaniidodykarkdthipum aekikh danbn caknnprbprunghruxcdrupaebbxun inbthkhwamihehmaasmkaraebngkhrungchwng Bisection method khuxkaraebngxxkepnsxngswnethakninkhnitsastrepnwithikarharakthisa karaebngxxkepnsxngswnethaknchwngewlaaelacaknneluxkchwngyxysungraktxngxyuinaenwaekn X sahrbkarpramwlphltxip epnwithithingayaelamiprasiththiphaph aetkyngkhxnkhangcha dwyehtunimncungmkichephuxhaaenwthanginkaraekpyhaodypramansungichepncuderimtnkhxngwithikarbrrcbknxyangrwderwmakkhun withikarnieriykwawithikarldchwngewla withikarkhnhaaebbibnarikrabwnkar aekikhSteep1 thakaredacudsxngcudkhuxkha Xl aelakha Xusmmutiwakha Xl epnkhathitakwacaknnthdsxbwa f Xl f Xu lt 0 thaimichihhacudihmsungcakkhntxnni eraruwarakcatxngxyuinchwngniStep 2 thakarpramankha Root thitxngkarthicudkungklangrahwangsxngkhain Step 1 odykhanwnStep 3 hawatxnni Root thitxngkarxyuinkhrungihndngni Bisection method 3 1 tha f Xl f Xr lt 0 aesdngwa Root thitxngkarxyuinkhrunglang ihtng Xu Xr aelaklbiptha Step 23 2 tha f Xl f Xr gt 0 aesdngwa Root thitxngkarxyuinkhrungbn ihtng Xl Xr aelaklbiptha Step 23 3 tha f Xl f Xr 0 aesdngwakhatxbthitxngkarethakb X xlkxrithum aekikh mirakediywdef fn x return x 3 5 x 9 kahndwithikaraebngchwngdef bisection eq segment app 0 3 a b segment a segment b Fa Fb eq a eq b if Fa Fb gt 0 raise Exception No change of sign bisection not possible while b a gt app x a b 2 0 f eq x if f Fa gt 0 a x else b x return x testprint bisection fn a 0 b 5 0 00003 gt 1 32974624634 twxyang karharakkhxngphhunam aekikh smmtiwamikarichwithikaraebngkhrungchwng ephuxharakkhxngphhunamf x x 3 x 2prakaraerktxngichtwelkhsxngtw a aela b ephuxih f a aela f b misyyantrngknkham sahrbfngkchnkhangtn a 1 aela b 2epniptameknthniechnf 1 1 3 1 2aelaf 2 2 3 2 4enuxngcakfngkchnepnaebbtxenuxngtxngmirakphayinchwng 1 2 incuderimtncudsinsudkhxngchwngthiwngelbrakepn a 1 1 aela b 1 2 dngnncudkungklangkhuxc1 2 1 2 1 5khafngkchnthicudkungklangkhux f c 1 1 5 3 1 5 2 0 125 enuxngcak f c 1 epnkhalb a 1 cathukaethnthidwy a 1 5 sahrbkarthasathdipephuxihaenicwa f a aela f b misyyanthitrngknkham echnniyngkhngchwngrahwang a aela b caklayepnelkmakkhunbrrcbkbrakkhxngfngkchn dusingniekidkhunintarangdanlangekhathungcak https th wikipedia org w index php title withiaebngkhrung amp oldid 9211678, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม