กระบวนการเดลต้ากำลังสองของไอท์เคน
ในการวิเคราะห์เชิงตัวเลขกระบวนการเดลต้ากำลังสองของ Aitkenหรือการประมาณค่าแบบ Aitkenเป็น วิธี การเร่งความเร็วอนุกรมที่ใช้เพื่อเร่งอัตราการลู่เข้าของลำดับ วิธีนี้ตั้งชื่อตามAlexander Aitkenผู้ซึ่งแนะนำวิธีนี้ในปี 1926 ซึ่งเป็นส่วนหนึ่งของการขยาย วิธีการ ของBernoulli [ 1 ]วิธีนี้มีประโยชน์มากที่สุดสำหรับการเร่งการลู่เข้าของลำดับที่ลู่เข้าเชิงเส้น รูปแบบเบื้องต้นเป็นที่รู้จักของSeki Kōwa (1642 – 1708) และนำไปใช้กับการหาค่าที่ถูกต้องของวงกลม กล่าวคือ การคำนวณค่า π
คำนิยาม
กำหนดลำดับกับกระบวนการเดลต้ากำลังสองของ Aitken เชื่อมโยงลำดับนี้กับลำดับใหม่
ซึ่งสามารถเขียนได้อีกแบบว่า
กับและทั้งสองลำดับนั้นเหมือนกันในทางพีชคณิต แต่ลำดับหลังมีเสถียรภาพเชิงตัวเลข ที่ดีกว่า ในการนำไปใช้ในการคำนวณ
ถือว่าไม่ชัดเจนหากลำดับนั้นประกอบด้วยองค์ประกอบที่เป็นศูนย์ ซึ่งเกิดขึ้นหากลำดับของผลต่างไปข้างหน้ามีพจน์ที่ซ้ำกันหรือไม่ จากมุมมองทางทฤษฎี หากสิ่งนั้นเกิดขึ้นเฉพาะกับดัชนีจำนวนจำกัดเท่านั้น เราสามารถใช้กระบวนการ Aitken กับลำดับเพียงบางส่วนได้ด้วยดัชนี โดยที่เป็นดัชนีสุดท้ายสำหรับลำดับ ซ้ำกัน ในทางปฏิบัติ พจน์แรกๆ ของลำดับมักให้ความแม่นยำที่ต้องการ นอกจากนี้ เมื่อคำนวณลำดับด้วยวิธีเชิงตัวเลข ต้องระมัดระวังในการหยุดการคำนวณก่อนที่ข้อผิดพลาดจากการปัดเศษในตัวส่วนจะมากเกินไป เนื่องจากการแปลงลำดับอาจทำให้ตัวเลขสำคัญ หายไป ได้
คุณสมบัติ
กระบวนการเดลต้ากำลังสองของ Aitken เป็น วิธี การเร่งการล convergenceและเป็นกรณีพิเศษของการแปลงลำดับที่ไม่เป็นเชิงเส้น
ลำดับซึ่งลู่เข้าสู่ค่าจำกัดกล่าวกันว่าลู่เข้าแบบเชิงเส้นหรือในทางเทคนิคเรียกว่าแบบ Q-เชิงเส้น ถ้ามีจำนวนบางจำนวนซึ่ง
นั่นหมายความว่าในทางอนุกรมวิธาน ระยะห่างระหว่างลำดับและลิมิตของมันจะลดลงในสัดส่วนที่เกือบเท่ากันในแต่ละขั้นตอน อัตราส่วนของการลดลงจะเข้าใกล้สัดส่วนนั้นมากขึ้นเรื่อยๆ บางครั้งเรียกสิ่งนี้ว่า "การลู่เข้าเชิงเรขาคณิต" เนื่องจากเป็นคุณสมบัติเฉพาะของอนุกรมเรขาคณิตหรือ "การลู่เข้าแบบเลขชี้กำลัง" เนื่องจากเป็นการลู่เข้าในลักษณะเดียวกัน
วิธีการของ Aitken จะช่วยเร่งการลู่เข้าของลำดับถ้าภายใต้เงื่อนไขที่กำหนดไว้ข้างต้น ถือว่าตรงตามเงื่อนไข
ไม่ใช่ตัวดำเนินการเชิงเส้นบนลำดับ แต่เป็นตัวดำเนินการเชิงเส้นเมื่อเทียบกับการบวกของลำดับคงที่:ถ้า คือลำดับคงที่ใดๆคงที่สำหรับทุกสิ่งสิ่งนี้ชัดเจนจากการแสดงออกของในแง่ของตัวดำเนินการผลต่างจำกัด
โดยทั่วไปแล้วกระบวนการใหม่นี้จะไม่ลู่เข้าแบบกำลังสอง แต่สำหรับ ลำดับ ฟังก์ชันที่ทำซ้ำซึ่งสอดคล้องกับเงื่อนไขสำหรับฟังก์ชันบางอย่างเนื่องจากลำดับที่เร่งความเร็ว ลู่เข้าสู่จุดคงที่การลู่เข้าจึงเป็นแบบกำลังสอง ในกรณีนี้ เทคนิคนี้เรียกว่าวิธีของสเตฟเฟนเซน
จากประสบการณ์ การดำเนินการ Aช่วยขจัด "พจน์ความคลาดเคลื่อนที่สำคัญที่สุด" สามารถตรวจสอบได้โดยพิจารณาลำดับที่มีรูปแบบดังนี้, ที่ไหน: ลำดับจากนั้นจะไปถึงขีดจำกัดชอบลดลงเหลือศูนย์
ในทางเรขาคณิต กราฟของฟังก์ชันเลขชี้กำลังที่ทำให้พึงพอใจ,และมีเส้นกำกับแนวนอนที่(ถ้า)
นอกจากนี้ยังสามารถแสดงได้ว่าหากลำดับลู่เข้าสู่ค่าจำกัดในอัตราที่มากกว่า 1 อย่างชัดเจนไม่ได้มีอัตราการลู่เข้าที่ดีกว่า (ในทางปฏิบัติ แทบจะไม่พบการลู่เข้าแบบกำลังสอง ซึ่งหมายความว่าต้องได้ทศนิยมที่ถูกต้องมากกว่า 30 (หรือ 100) ตำแหน่งหลังจาก 5 (หรือ 7) รอบการคำนวณ (โดยเริ่มจากตัวเลขที่ถูกต้อง 1 หลัก) โดยปกติแล้วในกรณีนั้นไม่จำเป็นต้องเร่งความเร็ว)
ในทางปฏิบัติโดยทั่วไปแล้วจะลู่เข้าสู่ค่าจำกัดได้เร็วกว่ามากอย่างที่แสดงให้เห็นในตัวอย่างการคำนวณด้านล่าง โดยปกติแล้ว การคำนวณแบบนี้จะถูกกว่ามาก(ซึ่งเกี่ยวข้องกับการคำนวณผลต่าง การคูณ และการหารเพียงครั้งเดียว) น้อยกว่าการคำนวณพจน์จำนวนมากของลำดับนั้นอย่างไรก็ตาม ต้องระมัดระวังไม่ให้เกิดข้อผิดพลาดเนื่องจากความแม่นยำไม่เพียงพอในการคำนวณผลต่างระหว่างตัวเศษและตัวส่วนของนิพจน์
ตัวอย่างการคำนวณ
ตัวอย่างที่ 1 : ค่าของสามารถประมาณได้โดยการกำหนดค่าเริ่มต้นให้กับและทำซ้ำตามลำดับต่อไปนี้ ซึ่งเรียกว่าวิธีของเฮรอน : เริ่มต้นด้วย
| n | X | ขวาน] |
|---|---|---|
| 0 | 1 | 1.4285714 |
| 1 | 1.5 | 1.4141414 |
| 2 | 1.4166667 | 1.4142136 |
| 3 | 1.4142157 | -- |
| 4 | 1.4142136 | -- |
เป็นที่น่าสังเกตว่า วิธีการของ Aitken ไม่ได้ช่วยประหยัดค่าใช้จ่ายในการคำนวณสองรอบในที่นี้ การคำนวณสามรอบแรกยังคงใช้ต้นทุนเดิมค่าที่ต้องการห้าค่าแรกค่าต่างๆ นอกจากนี้ ข้อที่สองค่าที่ได้มีความแม่นยำน้อยกว่าค่าที่ 4ค่าดังกล่าวไม่น่าแปลกใจ เนื่องจากกระบวนการของ Aitken เหมาะที่สุดสำหรับลำดับที่ลู่เข้าแบบเชิงเส้น มากกว่าแบบกำลังสอง และวิธีการของ Heron ในการคำนวณรากที่สองนั้นลู่เข้าแบบกำลังสอง
ตัวอย่างที่ 2 : ค่าของสามารถคำนวณได้เป็นผลรวมอนันต์โดยใช้สูตรของไลบ์นิซสำหรับπ :
| n | เงื่อนไขของชุด | X = ผลรวมย่อย | ขวาน] |
|---|---|---|---|
| 0 | 1 | 1 | 0.79166667 |
| 1 | − 0.33333333 | 0.66666667 | 0.78333333 |
| 2 | 0.2 | 0.86666667 | 0.78630952 |
| 3 | − 0.14285714 | 0.72380952 | 0.78492063 |
| 4 | 0.11111111 | 0.83492063 | 0.78567821 |
| 5 | − 9.0909091 × 10 − 2 | 0.74401154 | 0.78522034 |
| 6 | 7.6923077 × 10 − 2 | 0.82093462 | 0.78551795 |
| 7 | -6.6666667 × 10 − 2 | 0.75426795 | -- |
| 8 | 5.8823529 × 10 − 2 | 0.81309148 | -- |
ในตัวอย่างนี้ วิธีของ Aitken ถูกนำมาใช้กับอนุกรมที่ลู่เข้าแบบไม่เป็นเชิงเส้น และช่วยเร่งการลู่เข้าได้อย่างมาก การลู่เข้ายังคงเป็นแบบไม่เป็นเชิงเส้น แต่เร็วกว่าการลู่เข้าแบบเดิมมาก: ครั้งแรกค่าซึ่งการคำนวณต้องใช้สามค่าแรกค่าต่างๆ นั้น ใกล้เคียงกับขีดจำกัดมากกว่าค่าที่แปดค่า.
ตัวอย่างรหัสเทียมสำหรับการประมาณค่าแบบ Aitken
ต่อไปนี้เป็นตัวอย่างของการใช้การประมาณค่าแบบ Aitken เพื่อช่วยหาลิมิตของลำดับเมื่อได้รับข้อมูลเบื้องต้นบางส่วนโดยถือว่าลิมิตของลำดับนี้เป็นจุดคงที่(พูดตัวอย่างเช่น หากลำดับกำหนดโดยโดยมีจุดเริ่มต้นจากนั้นฟังก์ชันจะเป็นซึ่งมี :={\sqrt {2}}} เป็นจุดคงที่ (ดูวิธีการคำนวณรากที่สอง ) และค่าของจุดคงที่นี้จะถูกประมาณค่า
รหัสเทียมนี้ยังคำนวณค่าประมาณของ Aitken ให้กับค่าประมาณแบบ Aitken จะถูกแทนด้วยaitkenXในระหว่างการคำนวณค่าประมาณนั้น สิ่งสำคัญคือต้องตรวจสอบว่าตัวหารมีค่าน้อยเกินไปหรือไม่ ซึ่งอาจเกิดขึ้นได้หากเรามีความแม่นยำสูงอยู่แล้ว หากไม่มีการตรวจสอบนี้ อาจทำให้เกิดข้อผิดพลาดจำนวนมากจากการหาร ค่าจำนวนน้อยนี้จะถูกใช้แทนด้วยepsilonเนื่องจากการแสดงเลขฐานสองของจุดคงที่อาจเป็นอนันต์ (หรืออย่างน้อยก็ใหญ่เกินกว่าจะเก็บไว้ในหน่วยความจำที่มีอยู่) การคำนวณจะหยุดลงเมื่อค่าประมาณอยู่ภายในtoleranceค่าจริง
%ตัวเลือกเหล่านี้ขึ้นอยู่กับปัญหาที่กำลังแก้ไขx0 = 1 %ค่าเริ่มต้นf ( x ) = ( 1 / 2 ) * ( x + 2 / x ) %ฟังก์ชันที่หาองค์ประกอบถัดไปในลำดับtolerance = 10 ^- 10 %ต้องการความแม่นยำ 10 หลักepsilon = 10 ^- 16 %ห้ามหารด้วยจำนวนที่น้อยกว่าค่านี้maxIterations = 20 %ห้ามทำการวนซ้ำไปเรื่อยๆhaveWeFoundSolution = false %เราสามารถหาคำตอบได้ภายในค่าความคลาดเคลื่อนที่ต้องการหรือไม่? ยังไม่สำหรับi = 1 : จำนวนการวนซ้ำสูงสุดx1 = f ( x0 ) x2 = f ( x1 )ถ้า( x1 ~= x0 ) lambda = absoluteValue (( x2 - x1 ) / ( x1 - x0 )) %ตัวเลือกเสริม: คำนวณค่าประมาณของ |f'(fixedPoint)| ซึ่งแสดงด้วย lambda endตัวหาร= ( x2 - x1 ) - ( x1 - x0 );ถ้า( ค่าสัมบูรณ์ของตัวหาร< เอปซิลอน) %เพื่อหลีกเลี่ยงข้อผิดพลาดที่เพิ่มขึ้นอย่างมาก อย่าหารด้วยตัวเลขที่เล็กเกินไปพิมพ์( 'คำเตือน: ตัวหารเล็กเกินไป' ) หยุด%ออกจากลูปสิ้นสุดaitkenX = x2 - ( ( x2 - x1 ) ^ 2 ) / ตัวหารถ้า( ค่าสัมบูรณ์( aitkenX - x2 ) < ค่าความคลาดเคลื่อน) %ถ้าค่าอยู่ในช่วงความคลาดเคลื่อนพิมพ์( "จุดคงที่คือ " , aitkenX )) %แสดงผลลัพธ์ของการประมาณค่าแบบ Aitken haveWeFoundSolution = true break %เสร็จแล้ว ออกจากลูปendx0 = aitkenX %อัปเดต x0 เพื่อเริ่มต้นใหม่endถ้า( haveWeFoundSolution == false ) %ถ้าเราไม่สามารถหาคำตอบได้ภายในค่าความคลาดเคลื่อนที่ต้องการพิมพ์( "คำเตือน: ไม่สามารถหาคำตอบได้ภายในค่าความคลาดเคลื่อนที่ต้องการ" , tolerance ) พิมพ์( "ค่าประมาณที่คำนวณได้ครั้งล่าสุดคือ " , aitkenX ) endดูเพิ่มเติม
หมายเหตุ
- ↑ Aitken, Alexander (1926). "เกี่ยวกับการแก้สมการพีชคณิตด้วยวิธีเชิงตัวเลขของเบอร์นูลลี". Proceedings of the Royal Society of Edinburgh . 46 : 289– 305. doi : 10.1017/S0370164600022070 .