วิธีของเบอร์นูลลี

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

วิธีการของเบอร์นูลลีได้รับการแนะนำครั้งแรกโดยนักคณิตศาสตร์และนักฟิสิกส์ชาวสวิส - ฝรั่งเศสดาเนียล เบอร์นูลลี (ค.ศ. 1700-1782) ในปี ค.ศ. 1728 [ 1 ] [ 6 ]เขาสังเกตเห็นแนวโน้มจากอนุกรมเวียนเกิดที่สร้างขึ้นโดยใช้สัมประสิทธิ์พหุนามที่เติบโตตามอัตราส่วนที่เกี่ยวข้องกับรากของพหุนาม แต่ไม่ได้พิสูจน์ว่าทำไมจึงได้ผล[ 6 ]ในปี ค.ศ. 1725 เบอร์นูลลีได้ย้ายไปที่เซนต์ปีเตอร์สเบิร์ก กับ นิโคเลาส์ที่ 2 เบอร์นูลลีน้องชายของเขาซึ่งเสียชีวิตด้วยไข้ในปี ค.ศ. 1726 [ 7 ]ขณะอยู่ที่นั่น เขาได้ทำงานอย่างใกล้ชิดกับเลออนฮาร์ด ออยเลอร์ศิษย์ของโยฮันน์ เบอร์นูลลีและได้สร้างความก้าวหน้ามากมายในด้านฮาร์มอ นิก ส์เศรษฐศาสตร์คณิตศาสตร์ (ดูปรากฏการณ์เซนต์ปีเตอร์สเบิร์ก ) และอุทกพลศาสตร์[ 7 ]ออยเลอร์เรียกวิธีการของเบอร์นูลลีว่า "มีประโยชน์มาก" และให้เหตุผลว่าทำไมจึงได้ผลในปี 1748 [ 8 ] [ 3 ]นักคณิตศาสตร์โจเซฟ-หลุยส์ ลากรองจ์ได้ขยายความเรื่องนี้สำหรับกรณีที่มีรากหลายรากในปี 1798 [ 5 ] [ 3 ]วิธีการของเบอร์นูลลีมีมาก่อนอัลกอริทึมการหารากอื่นๆ เช่นวิธีการของเกรฟ (ตั้งแต่ปี 1826 ถึงแดนเดลิน) [ 9 ] [ 10 ]และร่วมสมัยกับวิธีการของฮัลลีย์ (ปี 1694) [ 11 ] [ 12 ]ตั้งแต่นั้นมา วิธีการนี้ได้มีอิทธิพลต่อการพัฒนาอัลกอริทึมที่ทันสมัยมากขึ้น เช่น วิธีการ QD [ 13 ] [ 14 ]
วิธีการ
กำหนดพหุนาม ดีกรีdที่มีสัมประสิทธิ์เชิงซ้อนเลือกค่าเริ่มต้นd ค่า ซึ่งมักจะเป็น[ 15 ] จากนั้นพิจารณาลำดับที่กำหนดโดยความสัมพันธ์เวียนเกิด[ 2 ]
ให้เป็นอัตราส่วนของพจน์ที่ต่อเนื่องกันของลำดับ ถ้ามีรากเชิงซ้อนเพียงรากเดียวที่มีค่าสัมบูรณ์สูงสุด ลำดับของ จะมีลิมิตเป็นรากนี้[ 16 ]
ถ้าสัมประสิทธิ์ของพหุนามเป็นจำนวนจริงแล้ว ตามทฤษฎีบทรากสังยุคเชิงซ้อนรากแต่ละรากของพหุนามจะต้องเป็นจำนวนจริงหรือเป็นส่วนหนึ่งของ คู่สัง ยุคเชิงซ้อนดังนั้น ถ้าพหุนามมีรากเชิงซ้อนเด่นเพียงรากเดียว สัมประสิทธิ์จะต้องรวมจำนวนเชิงซ้อนด้วยและลำดับที่สร้างขึ้นโดยใช้สัมประสิทธิ์นั้นจะประกอบด้วยจำนวนเชิงซ้อน วิธีของเบอร์นูลลีจะใช้ได้ผลในการหารากเด่นเพียงรากเดียว ไม่ว่าจะเป็นจำนวนจริงหรือจำนวนเชิงซ้อนก็ตาม[ 2 ]ถ้าหากรากเป็นส่วนหนึ่งของ คู่สั งยุคเชิงซ้อน ราก แต่ละรากในคู่นั้นจะมีค่าสัมบูรณ์สูงสุดเท่ากัน และจำเป็นต้องใช้วิธีของเบอร์นูลลีในรูปแบบที่ดัดแปลงเพื่อคำนวณค่าเหล่านั้น[ 3 ]
การได้มาซึ่งวิธีการ
คำตอบของสมการผลต่างอันดับที่n
มีแบบฟอร์ม
โดยที่เป็นรากเชิงซ้อนที่แตกต่างกันของpและเป็นพหุนามในmที่มีดีกรีน้อยกว่าความซ้ำซ้อนของสำหรับรากแบบง่ายจะเป็นค่าคงที่ สัมประสิทธิ์สามารถกำหนดได้จาก พจน์ d แรก ของลำดับโดยการแก้ระบบสมการเชิงเส้น ระบบนี้มีคำตอบที่ไม่ซ้ำกันเสมอ เนื่องจากเมทริกซ์ของระบบเป็นเมทริกซ์ Vandermondeหากรากเป็นแบบง่าย หรือเป็นเมทริกซ์ Vandermonde แบบต่อเนื่องในกรณีอื่น[ 17 ]
ผลหารของพจน์สองพจน์ที่อยู่ติดกันในลำดับคือ
การแยกตัวประกอบทำให้ได้ผลลัพธ์ดังนี้
สมมติว่าเป็นรากที่เด่นที่สุด โดยที่สำหรับแต่ละอัตราส่วนจะมีค่าสัมบูรณ์น้อยกว่า 1 ดังนั้นเมื่อmเพิ่มขึ้นจะเข้าใกล้ศูนย์ ดังนั้นแม้สำหรับ ที่ไม่ใช่ค่าคงที่ดังนั้นลิมิตของเศษส่วนจึงเหมือนกับลิมิตของซึ่งเท่ากับ 1 ถ้า เป็น ค่า คง ที่หรือพหุนามที่ไม่เป็นศูนย์ในm
ดังนั้น ในทุกกรณีที่มีรากเพียงรากเดียวที่มีค่าสัมบูรณ์สูงสุด[ 18 ]
สมมติฐานนี้เป็นไปตามเงื่อนไขโดยใช้ค่าเริ่มต้นเป็นศูนย์ทั้งหมดตามด้วยค่าสุดท้ายเป็น 1 [ 15 ]อันที่จริงกฎของ Cramerบ่งชี้ว่าเป็นผลหารแบบมีเครื่องหมายของเมทริกซ์ Vandermonde ที่ไม่เอกฐานสองเมทริกซ์ หากรากทั้งหมดเป็นรากเดี่ยว ในกรณีที่มีรากหลายราก สัมประสิทธิ์เด่นของเป็นผลหารแบบมีเครื่องหมายของเมทริกซ์ที่ต่อเนื่องกันที่ไม่เอกฐานสองเมทริกซ์
ส่วนขยาย

วิธีของเบอร์นูลลีลู่เข้าสู่รากที่มีค่าสัมบูรณ์มากที่สุดของพหุนามด้วยลำดับการลู่เข้าเชิงเส้น [ 3 ] วิธีนี้จะไม่ลู่เข้าเมื่อมีรากเชิงซ้อนที่แตกต่างกันสองรากที่มีค่าสัมบูรณ์มากที่สุดเท่ากัน แต่มีส่วนขยายของวิธีนี้ที่ใช้ได้ในกรณีนี้[ 2 ]สำหรับการหารากที่มีค่าสัมบูรณ์น้อยที่สุด สามารถใช้วิธีนี้กับพหุนามผกผัน (พหุนามที่ได้จากการกลับลำดับของสัมประสิทธิ์) และกลับผลลัพธ์ เมื่อใช้การลดรากด้วยวิธีเช่นวิธีของฮอร์เนอร์การลดรากจากรากที่เล็กที่สุดจะมีเสถียรภาพมากกว่า[ 20 ]
เพื่อเร่งการบรรจบกันAlexander Aitkenได้พัฒนาAitken delta-squared process ของเขา เป็นส่วนหนึ่งของการปรับปรุงส่วนขยายของวิธีการของ Bernoulli ซึ่งค้นหารากทั้งหมดพร้อมกัน[ 19 ] [ 21 ]ส่วนขยายอีกอย่างหนึ่งของวิธีการของ Bernoulli คือวิธีการ Quotient-Difference (QD) ซึ่งค้นหารากทั้งหมดพร้อมกัน แม้ว่าจะไม่เสถียรก็ตาม[ 3 ]เนื่องจากการบรรจบกันที่ช้าของวิธีการของ Bernoulli และความไม่เสถียรของวิธีการ QD จึงสามารถใช้เป็นวิธีที่เชื่อถือได้ในการค้นหาค่าเริ่มต้นสำหรับอัลกอริทึมการค้นหารากอื่นๆ แทนที่จะทำซ้ำจนกว่าจะถึงค่าความคลาดเคลื่อน[ 22 ]
ตัวอย่าง


ตัวอย่างต่อไปนี้แสดงให้เห็นถึงวิธีการของเบอร์นูลลีที่ใช้กับพหุนามกำลังสอง ให้ . ดังนั้น, , และความสัมพันธ์เวียนเกิดจึงเป็นดังนี้:
เมื่อใช้ค่าเริ่มต้นที่แนะนำจะได้ตารางต่อไปนี้:
| n | x | q | | q - φ | | คำสั่ง |
|---|---|---|---|---|
| -1 | 0 | − | − | − |
| 0 | 1 | 1 | 0.618033989 | − |
| 1 | 1 | 2 | 0.381966011 | 2.44042009 |
| 2 | 2 | 1.5 | 0.118033989 | 0.766784227 |
| 3 | 3 | 1.666 | 0.047966011 | 1.086347793 |
| 4 | 5 | 1.6 | 0.018033989 | 0.972379866 |
| 5 | 8 | 1.625 | 0.006966011 | 1.016299341 |
| 6 | 13 | 1.61538461538 | 0.002649373 | 0.993860956 |
| 7 | 21 | 1.61904761905 | 0.00101363 | 1.002357448 |
| 8 | 34 | 1.61764705882 | 0.00038693 | 0.999101399 |
| 9 | 55 | 1.61818181818 | 0.000147829 | 1.000343479 |
ในที่สุดลำดับนี้จะลู่เข้าสู่ค่าซึ่งรู้จักกันในชื่ออัตราส่วนทองคำซึ่งเป็นรากที่ใหญ่ที่สุดของพหุนามตัวอย่าง ลำดับนี้ ก็คือ ลำดับฟิโบนาชชีที่รู้จักกันดีวิธีการของเบอร์นูลลีใช้ได้ผลแม้ว่าลำดับจะใช้ค่าเริ่มต้นที่แตกต่างกันแทนที่จะเป็น 0 และ 1 ลิมิตของผลหารยังคงเหมือนเดิม
ตัวอย่างนี้ยังแสดงให้เห็นว่าค่าความคลาดเคลื่อนสัมบูรณ์เข้าใกล้ศูนย์เมื่อลำดับดำเนินต่อไป จากนั้นจึงสามารถคำนวณลำดับการลู่เข้าโดยใช้ค่าความคลาดเคลื่อนสามค่าที่อยู่ติดกัน ตัวอย่างนี้แสดงให้เห็นว่าวิธีการของเบอร์นูลลีลู่เข้าแบบเชิงเส้นเมื่อเข้าใกล้รากเด่นของพหุนาม
การเปรียบเทียบกับวิธีการอื่นๆ
เมื่อเปรียบเทียบกับอัลกอริธึมการหาค่ารากอื่นๆ วิธีของเบอร์นูลลีมีข้อดีและข้อจำกัดที่แตกต่างกัน ตารางต่อไปนี้สรุปความแตกต่างที่สำคัญหลายประการของวิธีของเบอร์นูลลีเมื่อเปรียบเทียบกับวิธีอื่นๆ:
| วิธี | ลำดับการบรรจบกัน | การคาดเดาเบื้องต้น | รากหลายราก | ใช้สารอนุพันธ์ |
|---|---|---|---|---|
| วิธีของเบอร์นูลลี | เชิงเส้น (ลำดับที่ 1) | เลขที่ | ไม่ (ใหญ่ที่สุด) | เลขที่ |
| วิธีเซแคนท์ | ซูเปอร์ลิเนียร์ (1.618) | ใช่ (2 คะแนน) | เลขที่ | เลขที่ |
| วิธีการของแบร์สโตว์ | กำลังสอง (ลำดับที่ 2) | ใช่ (กำลังสอง) | ใช่ (เป็นคู่) | เลขที่ |
| วิธี Durand–Kerner | กำลังสอง (ลำดับที่ 2) | ใช่ ( คะแนน d ) | ใช่ ( ราก d ) | เลขที่ |
| วิธีของนิวตัน | กำลังสอง (ลำดับที่ 2) | ใช่ (1 คะแนน) | เลขที่ | ใช่ (ลำดับที่ 1) |
| วิธีการของแฮลลีย์ | ลูกบาศก์ (ลำดับที่ 3) | ใช่ (1 คะแนน) | เลขที่ | ใช่ (ลำดับที่ 1 และ 2) |
ข้อดี
- ไม่มีการคาดเดาเบื้องต้น: วิธีของนิวตันวิธีซีแคนท์วิธีของฮัลลีย์และวิธีการอื่นๆ ที่คล้ายกัน ล้วนต้องการค่าเริ่มต้นอย่างน้อยหนึ่งค่า[ 23 ]วิธีของเบอร์นูลลีต้องการเพียงสัมประสิทธิ์พหุนามเท่านั้น ทำให้ไม่จำเป็นต้องคาดเดาเบื้องต้น
- ไม่ต้องหาอนุพันธ์: แม้ว่าการหาอนุพันธ์ของพหุนามจะทำได้ง่ายโดยใช้กฎกำลังแต่การคำนวณนี้ไม่จำเป็นในวิธีของเบอร์นูลลี
- โดยธรรมชาติแล้วพบรากที่เด่น: โดยปกติ การหารากขนาดใหญ่ถือว่าไม่เสถียร แต่การแทนที่zในpด้วยซึ่งจะกลับลำดับของสัมประสิทธิ์ แล้วกลับผลลัพธ์ของวิธีของเบอร์นูลลี จะให้รากที่เล็กที่สุดของpซึ่งเสถียรกว่า[ 8 ] [ 20 ]
ข้อจำกัด
- การลู่เข้าช้า: Fröberg เขียนว่า "โดยทั่วไปแล้ว วิธีของ Bernoulli จะลู่เข้าช้า ดังนั้นควรใช้วิธี Newton-Raphson แทน" [ 24 ]ซึ่งขัดแย้งกับ Jennings ที่เขียนว่า "ค่าศูนย์โดยประมาณที่ได้จากวิธีของ Bernoulli สามารถปรับปรุงให้ดียิ่งขึ้นได้โดยการใช้ เช่น วิธี Newton-Raphson" [ 4 ]ผู้เขียนคนหนึ่งสนับสนุนการใช้ instead-of ในขณะที่อีกคนหนึ่งสนับสนุนการใช้ in-conjunction-with เนื่องจากลำดับการลู่เข้าเชิงเส้น สิ่งสำคัญคือต้องสังเกตว่าการลู่เข้าช้าของวิธีนี้สามารถปรับปรุงได้ด้วย กระบวนการ delta- squared ของ Aitken [ 19 ]
- ค้นหารากทีละราก: เวอร์ชันมาตรฐานของวิธีของเบอร์นูลลีจะค้นหารากเพียงรากเดียว ต้องใช้การลดทอนเพื่อค้นหารากอื่น เมื่อเปรียบเทียบกับอัลกอริทึมต่างๆ เช่นวิธีDurand–Kerner วิธี Aberth วิธี Bairstowและเวอร์ชัน "RPOLY" ของอัลกอริทึม Jenkins–Traub อัลกอริทึมเหล่านี้จะค้นหารากหลายรากโดยค่าเริ่มต้น เราสามารถเอาชนะข้อจำกัดนี้ได้โดยการใช้ส่วนขยายของวิธีของเบอร์นูลลี เช่น วิธีของ Aitken หรือวิธี QD [ 25 ]
- ปัญหาของตัวคูณ: ความซ้ำซ้อนและรากเด่นหลายตัว เช่น คู่สังยุค สามารถทำให้วิธีการของเบอร์นูลลีช้าลงได้ แต่สามารถปรับปรุงเพื่อแก้ไขปัญหานี้ได้[ 26 ] [ 27 ]
แอปพลิเคชันสมัยใหม่

แม้ว่าวิธีการของเบอร์นูลลีจะลู่เข้าแบบเชิงเส้น แต่ก็ยังคงมีความเกี่ยวข้องในคณิตศาสตร์เชิงคำนวณด้วยการค้นหาค่าเริ่มต้นสำหรับ อัลกอริทึม การค้นหารากพหุนามและการขยายไปสู่โดเมนทางคณิตศาสตร์ทั่วไปมากขึ้น[ 4 ] นอกจาก นี้ยังสามารถใช้เพื่อค้นหารากที่ซับซ้อนได้[ 2 ]อย่างไรก็ตาม การขยายวิธีการของเบอร์นูลลีที่ซับซ้อนกว่า เช่น วิธีการของ Aitken [ 19 ]และวิธีการ QD [ 2 ]สามารถค้นหารากที่ซับซ้อนได้ในขณะที่แก้ปัญหารากทั้งหมดพร้อมกัน นอกจากนี้ยังมีรูปแบบต่างๆ ของวิธีการของเบอร์นูลลีที่ปรับปรุงเสถียรภาพและจัดการกับรากหลายราก[ 26 ] [ 27 ] การวิเคราะห์วิธีการ QD ในปี 2025 รวมถึงการใช้งานในภาษาC [ 28 ]
ในการประยุกต์ใช้งานที่เกี่ยวข้อง วิธีของเบอร์นูลลีได้รับการพิสูจน์แล้วว่าเทียบเท่ากับวิธี Powerบนเมทริกซ์คู่ขนานสำหรับการค้นหาค่าลักษณะเฉพาะ [ 29 ] ความก้าวหน้าในอาร์เรย์ซิสโตลิกนำไปสู่เวอร์ชันแบบขนานของวิธีของเบอร์นูลลี[ 30 ]วิธีนี้ยังได้รับการขยายให้ครอบคลุมการค้นหาขั้วของฟังก์ชันตรรกยะซึ่งขยายไปสู่สาขาการวิเคราะห์เชิงซ้อน[ 31 ]ส่วนขยายของวิธีของเบอร์นูลลีถูกนำมาใช้เพื่อปรับปรุงวิธีการหลายขั้นตอนเชิงเส้น[ 32 ]การพัฒนาอีกรูปแบบหนึ่งของวิธีของเบอร์นูลลีที่ดัดแปลงแล้วสร้างฟังก์ชันเสริมโดยใช้การขยายอนุกรมเทย์เลอร์และลอเรนต์ เพื่อแก้หาค่าราก [ 33 ] [ 34 ]การใช้งานวิธีของเบอร์นูลลีรวมอยู่ในไลบรารีวิธีการเชิงตัวเลขโอเพนซอร์ส CodeCogs [ 35 ]วิธีนี้ยังได้รับการเขียนโปรแกรมบนEDSACพร้อมกับวิธีของ Graeffeแต่เลือกใช้วิธีของนิวตัน เนื่องจากเร็วกว่า [ 36 ]
รหัส
วิธีการของเบอร์นูลลีได้รับการนำไปใช้ในภาษาโปรแกรมPython ดังต่อไปนี้
def bernoulli_method ( c , eps = 1e-8 , max_iter = 60 ): """ วิธีของเบอร์นูลลีในการหารากเด่นของพหุนาม พารามิเตอร์ ---------- c : รายการ ราย ชื่อสัมประสิทธิ์ของพหุนามเรียงลำดับจากกำลังมากไปน้อย ตัวอย่างเช่น ถ้า p(x) = x^2 - x - 1, c = [1.0, -1.0, -1.0] eps : จำนวนทศนิยม (ตัวเลือก) ค่าความคลาดเคลื่อนของการลู่เข้า ค่าเริ่มต้นคือ 1e-8 max_iter : จำนวนเต็ม (ตัวเลือก) จำนวนการวนซ้ำสูงสุด ค่าเริ่มต้นคือ 60 ส่งคืนค่า ------- float หรือ complex รากเด่นของพหุนาม ถ้าพบ มิฉะนั้นจะส่งคืนค่า float('nan') ตัวอย่าง -------- >>> bernoulli_method([1.0, -1.0, -1.0]) # ตัวอย่างอัตราส่วนทองคำ 1.6180339901755971 >>> bernoulli_method([1.0, -3.0, 2.0]) # x^2 - 3x + 2 = (x - 2)(x - 1) 2.0000000074505806 """ n = len ( c ) x = [ 0.0 ] * ( n - 2 ) + [ 1.0 ] # เริ่มต้นด้วยศูนย์และ 1.0 q = []สำหรับi ในช่วง( n - 1 , max_iter + n ): # ใช้ความสัมพันธ์เวียนเกิด: x_n = -(a_1*x_{n-1} + ... + a_d*x_{nd})/a_0 x.append ( -sum ( c [ k ] * x [ -k + i ] สำหรับk ในช่วง( 1 , n ) ) / c[0]) q.append ( x [ -1 ] / x [ -2 ] ) # ผลหารของพจน์x สองพจน์ที่ต่อเนื่องกัน q_n = x_{n+1} / x_n# ตรวจสอบการลู่เข้าหลังจากค่าผลหารสองค่าถ้าlen ( q ) > = 2 และabs ( q [ -1 ] - q [ -2 ] ) <= eps : คืนค่าq [ -1 ] # คืนค่าผลหารที่คำนวณ ได้ล่าสุดreturn float ( "nan" ) # ไม่มีการบรรจบกันภายใน max_iterการปรับปรุงประสิทธิภาพอย่างหนึ่งคือการทำให้สัมประสิทธิ์เป็นมาตรฐานโดยใช้สัมประสิทธิ์นำหน้าในตอนต้นของวิธีการ ( c = [coef / c[0] for coef in c]) ซึ่งจะช่วยขจัดความจำเป็นในการดำเนินการหารในความสัมพันธ์เวียนเกิดภายในตัวลูปหลัก ( x.append(-sum(c[k] * x[-k + i] for k in range(1, n)))) การเปลี่ยนแปลงนี้ไม่มีผลกระทบต่อลำดับการลู่เข้าของวิธีการ การนำการลู่เข้าที่มีลำดับสูงกว่ามาใช้จะต้องใช้กระบวนการเดลต้ากำลังสองของ Aitken