อ่าน 29 นาที
วิธีการไล่ระดับคอนจูเกต
ในทางคณิตศาสตร์วิธีการไล่ระดับเชิงสังยุค (conjugate gradient method)เป็นอัลกอริทึมสำหรับการแก้ระบบสมการเชิงเส้นบาง ระบบด้วยวิธีเชิงตัวเลข...
วิธีการไล่ระดับคอนจูเกต

ในทางคณิตศาสตร์วิธีการไล่ระดับเชิงสังยุค (conjugate gradient method)เป็นอัลกอริทึมสำหรับการแก้ระบบสมการเชิงเส้นบาง ระบบด้วยวิธีเชิงตัวเลข โดยเฉพาะอย่างยิ่งระบบสมการที่มีเมทริกซ์เป็น เมทริกซ์บวกกึ่ง กำหนด (positive-semidefinite matrix ) วิธีการไล่ระดับเชิงสังยุคมักถูกนำไปใช้ในรูปแบบอัลกอริทึมแบบวนซ้ำ ซึ่ง สามารถนำไปใช้กับ ระบบ เมทริกซ์เบาบาง (sparse systems) ที่มีขนาดใหญ่เกินกว่าจะจัดการได้ด้วยวิธีโดยตรงหรือวิธีการโดยตรงอื่นๆ เช่น การแยกตัวประกอบโคลสกี้ (Cholesky decomposition ) ระบบเมทริกซ์เบาบางขนาดใหญ่มักเกิดขึ้นเมื่อแก้สมการเชิงอนุพันธ์ย่อยหรือปัญหาการหาค่าเหมาะสมที่สุด ด้วยวิธีเชิงตัวเลข
วิธีการไล่ระดับคอนจูเกตยังสามารถใช้ในการแก้ ปัญหา การหาค่าเหมาะสมที่สุด แบบไม่มีข้อจำกัด เช่นการลดพลังงานให้เหลือน้อย ที่สุด โดยทั่วไปแล้วเชื่อกันว่าเป็นผลงานของMagnus HestenesและEduard Stiefel [ 1 ] [ 2 ] ซึ่งได้เขียนโปรแกรมลงบนZ4 [ 3 ]และทำการวิจัยอย่างกว้างขวาง[ 4 ] [ 5 ]
วิธีการไล่ระดับแบบไบคอนจูเกต (Biconjugate Gradient Method)เป็นวิธีการทั่วไปที่ใช้กับเมทริกซ์ที่ไม่สมมาตรวิธีการไล่ระดับแบบคอนจูเกตที่ไม่เป็นเชิงเส้น ต่างๆ มุ่งหาค่าต่ำสุดของปัญหาการหาค่าเหมาะสมที่สุดที่ไม่เป็นเชิงเส้น
คำอธิบายปัญหาที่แก้ไขโดยวิธีไล่ระดับความชันแบบสังยุค
สมมติว่าเราต้องการแก้ระบบสมการเชิงเส้น
สำหรับเวกเตอร์ โดยที่ เมทริกซ์ที่ทราบนั้นเป็น เมทริกซ์ สมมาตร (เช่น) เป็นเมทริกซ์บวกแน่นอน (เช่นสำหรับเวกเตอร์ที่ไม่เป็นศูนย์ทั้งหมดใน) และ เป็นเมท ริก ซ์ จริงและ ก็เป็นที่ทราบเช่นกัน เราใช้สัญลักษณ์ แทนคำตอบเฉพาะของระบบนี้
การอนุมานเป็นวิธีการโดยตรง
วิธีการไล่ระดับเชิงสังยุค (Conjugate Gradient Method) สามารถพัฒนาได้จากหลายมุมมอง รวมถึงการประยุกต์ใช้เฉพาะทางของวิธีการทิศทางเชิงสังยุค (Conjugate Direction Method) สำหรับการหาค่าเหมาะสมที่สุด และการเปลี่ยนแปลงของ การวนซ้ำแบบ Arnoldi / Lanczosสำหรับ ปัญหา ค่าลักษณะเฉพาะแม้ว่าจะมีวิธีการที่แตกต่างกัน แต่การพัฒนาเหล่านี้มีหัวข้อร่วมกันคือ การพิสูจน์ความเป็นตั้งฉากของค่าตกค้างและความเป็นสังยุคของทิศทางการค้นหา คุณสมบัติทั้งสองนี้มีความสำคัญอย่างยิ่งต่อการพัฒนาสูตรที่กระชับและเป็นที่รู้จักกันดีของวิธีการนี้
เรากล่าวว่าเวกเตอร์ที่ไม่เป็นศูนย์สองตัว คือและเป็นคู่สังยุคกัน (โดยสัมพันธ์กับ) ถ้า
เนื่องจากเมทริกซ์สมมาตรและเป็นเมทริกซ์บวกแน่นอน ด้านซ้ายมือจึงกำหนดผลคูณภายใน
เวกเตอร์สองตัวเป็นคู่สังยุคกันก็ต่อเมื่อเวกเตอร์ทั้งสองตั้งฉากกันโดยพิจารณาจากผลคูณภายใน การเป็นคู่สังยุคเป็นความสัมพันธ์แบบสมมาตร: ถ้าเป็นคู่สังยุคกับแล้วเป็นคู่สังยุคกับสมมติว่า
คือเซตของเวกเตอร์ที่สัมพันธ์กันโดยสัมพันธ์กับ นั่นคือสำหรับทุกแล้วจะเป็นฐานสำหรับและเราสามารถแสดงคำตอบของในฐานนี้ได้:
การคูณปัญหาทางซ้ายด้วยเวกเตอร์จะได้ผลลัพธ์ดังนี้
และดังนั้น
วิธีนี้ให้[ 4 ]สำหรับการแก้สมการ: หาลำดับของทิศทางคู่ควบ จากนั้นคำนวณสัมประสิทธิ์
เป็นวิธีการแบบวนซ้ำ
หากเราเลือกเวกเตอร์สังยุคอย่างระมัดระวัง เราอาจไม่จำเป็นต้องใช้เวกเตอร์ทั้งหมดเพื่อให้ได้ค่าประมาณที่ดีของคำตอบดังนั้น เราจึงต้องการมองวิธีการไล่ระดับสังยุคเป็นวิธีการวนซ้ำ วิธีนี้ช่วยให้เราสามารถแก้ระบบสมการที่มีค่า มากจนวิธีการโดยตรงใช้เวลานานเกินไปได้ โดยประมาณ
เราใช้สัญลักษณ์ แทนค่าเริ่มต้นของ(เราสามารถสมมติได้โดยไม่เสียความเป็นทั่วไปว่ามิฉะนั้นให้พิจารณาระบบแทน) เริ่มต้นด้วยเราค้นหาคำตอบ และในแต่ละรอบการทำซ้ำ เราจำเป็นต้องมีตัวชี้วัดเพื่อบอกเราว่าเราเข้าใกล้คำตอบ(ซึ่งเราไม่ทราบ) มากขึ้นหรือไม่ ตัวชี้วัดนี้มาจากข้อเท็จจริงที่ว่าคำตอบนั้นเป็นตัวลดค่าต่ำสุดเพียงตัวเดียวของฟังก์ชันกำลังสอง ต่อไปนี้
การมีอยู่ของตัวลดค่าต่ำสุดเพียงหนึ่งเดียวนั้นเห็นได้ชัดเจน เนื่องจากเมทริกซ์เฮสเซียนของอนุพันธ์อันดับสองเป็นเมทริกซ์สมมาตรบวกแน่นอน
และการที่ตัวลดค่าต่ำสุด (ใช้) แก้ปัญหาเริ่มต้นได้นั้น เป็นผลมาจากอนุพันธ์อันดับแรกของมัน
วิธีนี้แนะนำให้เลือกเวกเตอร์ฐานตัวแรกเป็นค่าลบของเกรเดียนต์ของที่ เกร เดียนต์ของ เท่ากับเริ่มต้นด้วยการคาดเดาเบื้องต้นซึ่งหมายความว่าเราเลือกเวกเตอร์อื่นๆ ในฐานจะเป็นคอนจูเกตกับเกรเดียนต์ ดังนั้นจึงเรียกว่าวิธีเกรเดียนต์คอนจูเกตโปรดทราบว่า ก็คือ ค่าตกค้างที่ได้จากขั้นตอนเริ่มต้นของอัลกอริธึมนี้ ด้วย
ให้เป็นค่าตกค้างที่ขั้นตอนที่ th:
ดังที่สังเกตได้ข้างต้นคือค่าลบของความชันที่ดังนั้น วิธี การลดความชันจะต้องเคลื่อนที่ไปในทิศทางr kอย่างไรก็ตาม ในที่นี้เรายืนยันว่าทิศทางจะต้องเป็นคู่กัน วิธีการที่ใช้ได้ผลในการบังคับใช้สิ่งนี้คือการกำหนดให้ทิศทางการค้นหาถัดไปสร้างขึ้นจากค่าตกค้างปัจจุบันและทิศทางการค้นหาก่อนหน้าทั้งหมด ข้อจำกัดเรื่องคู่กันนี้เป็นข้อจำกัดประเภทออร์โทนอร์มอล ดังนั้นอัลกอริทึมจึงสามารถมองได้ว่าเป็นตัวอย่างของการทำให้เป็นออร์โทนอร์มอลแบบแกรม-ชมิดท์ซึ่งจะได้นิพจน์ต่อไปนี้:
(ดูภาพด้านบนของบทความเพื่อดูผลกระทบของข้อจำกัดการสมมูลต่อการล convergence) เมื่อพิจารณาตามทิศทางนี้ ตำแหน่งที่เหมาะสมที่สุดถัดไปจะได้รับจาก
กับ
โดยความเท่าเทียมกันสุดท้ายเป็นผลมาจากนิยามของนิพจน์สำหรับสามารถหาได้หากแทนที่นิพจน์สำหรับx k +1ลงในfและทำให้มีค่าน้อยที่สุดเมื่อเทียบกับ
อัลกอริทึมที่ได้
อัลกอริทึมข้างต้นให้คำอธิบายที่ตรงไปตรงมาที่สุดของวิธีการไล่ระดับคอนจูเกต ดูเหมือนว่าอัลกอริทึมตามที่ระบุไว้จะต้องการการจัดเก็บทิศทางการค้นหาก่อนหน้าทั้งหมดและเวกเตอร์ตกค้าง รวมถึงการคูณเมทริกซ์-เวกเตอร์จำนวนมาก ซึ่งอาจทำให้การคำนวณมีค่าใช้จ่ายสูง อย่างไรก็ตาม การวิเคราะห์อย่างละเอียด[ 6 ] : หน้า 558 ของอัลกอริทึมแสดงให้เห็นว่าตั้งฉาก กับ นั่น คือสำหรับและตั้งฉากกับนั่นคือสำหรับสิ่งนี้สามารถพิจารณาได้ว่าเมื่ออัลกอริทึมดำเนินไปและ ครอบคลุม พื้นที่ย่อย Krylovเดียวกันโดยที่สร้างฐานตั้งฉากกับผลคูณภายในมาตรฐาน และสร้างฐานตั้งฉากกับผลคูณภายในที่เกิดจากดังนั้น จึงสามารถพิจารณาได้ว่าเป็นภาพฉายของบนพื้นที่ย่อย Krylov
นั่นคือ ถ้าวิธี CG เริ่มต้นด้วยแล้ว[ 7 ]โดยที่คือคำตอบของ
อัลกอริทึมสำหรับการแก้ปัญหาที่เป็นเมทริกซ์จริง สมมาตร และเป็นบวกแน่นอน มีรายละเอียดดังต่อไปนี้ เวกเตอร์อินพุตอาจเป็นคำตอบเริ่มต้นโดยประมาณ หรือ ก็ได้นี่เป็นการกำหนดรูปแบบที่แตกต่างจากขั้นตอนที่แม่นยำซึ่งอธิบายไว้ข้างต้น
นี่คืออัลกอริทึมที่ใช้กันบ่อยที่สุด สูตรเดียวกันนี้ยังใช้ในวิธีการไล่ระดับเชิงสังยุคแบบไม่เชิงเส้น ของเฟลตเชอร์-รีฟส์ ด้วย
รีสตาร์ท
เราสังเกตว่าคำนวณโดย วิธี ไล่ระดับความชันที่ใช้กับการตั้งค่าจะทำให้คำนวณโดยวิธีไล่ระดับความชัน จาก ในทำนองเดียวกัน กล่าวคือ สามารถใช้เป็นการใช้งานแบบง่ายของการเริ่มต้นใหม่ของการวนซ้ำไล่ระดับความชันแบบสังยุค[ 4 ]การเริ่มต้นใหม่อาจทำให้การบรรจบกันช้าลง แต่อาจปรับปรุงเสถียรภาพได้หากวิธีไล่ระดับความชันแบบสังยุคทำงานผิดปกติ เช่น เนื่องจาก ข้อผิดพลาดใน การ ปัดเศษ
การคำนวณค่าตกค้างแบบชัดเจน
สูตรและซึ่งทั้งคู่เป็นไปตามเลขคณิตที่แม่นยำ ทำให้สูตรและเทียบเท่ากันทางคณิตศาสตร์ สูตรแรกใช้ในอัลกอริทึมเพื่อหลีกเลี่ยงการคูณเพิ่มเติมด้วยเนื่องจากเวกเตอร์ได้รับการคำนวณแล้วเพื่อประเมินสูตรหลังอาจมีความแม่นยำมากกว่า โดยแทนที่การคำนวณที่ชัดเจนด้วยการคำนวณโดยปริยายด้วยการเรียกซ้ำซึ่งขึ้นอยู่กับ การสะสม ข้อผิดพลาดจากการปัดเศษดังนั้นจึงแนะนำให้ใช้สำหรับการประเมินเป็นครั้งคราว[ 8 ]
โดยทั่วไปแล้วค่ามาตรฐานของค่าตกค้างจะถูกใช้เป็นเกณฑ์ในการหยุดการคำนวณ ค่ามาตรฐานของค่าตกค้างที่แสดงอย่างชัดเจนจะให้ระดับความแม่นยำที่รับประกันได้ทั้งในการคำนวณที่แม่นยำและในกรณีที่มีข้อผิดพลาดจากการปัดเศษ ซึ่งการลู่เข้าจะหยุดชะงักลงตามธรรมชาติ ในทางตรงกันข้าม ค่าตกค้างโดยปริยาย นั้นทราบกันดีว่าจะมีแอมพลิจูดลดลงเรื่อยๆ แม้จะต่ำกว่าระดับของข้อผิดพลาดจากการปัดเศษดังนั้นจึงไม่สามารถนำมาใช้ในการกำหนดการหยุดชะงักของการลู่เข้าได้
การคำนวณค่าอัลฟาและเบตา
ในอัลกอริทึมนี้จะเลือกให้ตั้งฉากกับตัวส่วนจะถูกทำให้ง่ายขึ้นจาก
เนื่องจาก. ถูกเลือกให้มีค่าเป็นคู่ควบกับ. ในตอนเริ่มต้นคือ
โดยใช้
และในทำนองเดียวกัน
ตัวเศษของถูกเขียนใหม่เป็น
เนื่องจากและตั้งฉากกันโดยธรรมชาติ ตัวส่วนจึงถูกเขียนใหม่เป็น
โดยใช้ข้อเท็จจริงที่ว่าทิศทางการค้นหาเป็นคู่กัน และอีกครั้งที่ว่าค่าตกค้างเป็นตั้งฉากกัน ซึ่งจะทำให้ได้ผลลัพธ์ในอัลกอริทึมหลังจากตัดทิ้งแล้ว
ตัวอย่างโค้ดในภาษา Julia (ภาษาโปรแกรม)
โดยใช้พีชคณิตเชิงเส้น""" x = conjugate_gradient(A, b, x0 = zero(b); atol=length(b)*eps(norm(b))ส่งคืนคำตอบของสมการ `A * x = b` โดยใช้วิธีการไล่ระดับเชิงสังยุค`A` ต้องเป็นเมทริกซ์บวกกำหนด หรือตัวดำเนินการเชิงเส้นอื่นๆ`x0` คือค่าประมาณเริ่มต้นสำหรับคำตอบ (ค่าเริ่มต้นคือเวกเตอร์ศูนย์)`atol` คือค่าความคลาดเคลื่อนสัมบูรณ์ของขนาดค่าตกค้าง `b - A * x`เพื่อการบรรจบกัน (ค่าเริ่มต้นคือค่าเอปซิลอนของเครื่อง)ส่งคืนเวกเตอร์คำตอบโดยประมาณ `x`"""ฟังก์ชันconjugate_gradient (A , b :: AbstractVector , x0 :: AbstractVector = zero ( b ); atol = length ( b ) * eps ( norm ( b )))x = copy ( x0 ) # เริ่มต้นโซลูชันr = b - A * x0 # ค่าตกค้างเริ่มต้นp = copy ( r ) # ทิศทางการค้นหาเริ่มต้นr²old = r ' * r # ค่ากำลังสองของค่าตกค้างk = 0ในขณะที่r²old > atol ^ 2 # ทำซ้ำจนกว่าจะบรรจบกันAp = A * p # ทิศทางการค้นหาα = r²old / ( p ' * Ap ) # ขนาดขั้นตอน@. x += α * p # อัปเดตโซลูชัน# อัปเดตค่าคงเหลือ:ถ้า( k + 1 ) % 16 == 0 # ทุกๆ 16 รอบการทำซ้ำ ให้คำนวณค่าตกค้างใหม่ตั้งแต่เริ่มต้นr .= b .- A * x # เพื่อหลีกเลี่ยงการสะสมของข้อผิดพลาดเชิงตัวเลขอื่น@. r -= α * Ap # ใช้สูตรการอัปเดตที่ช่วยประหยัดผลคูณเมทริกซ์-เวกเตอร์หนึ่งครั้งจบr²ใหม่= r ' * r@. p = r + ( r²new / r²old ) * p # อัปเดตทิศทางการค้นหาr²old = r²new # อัปเดตค่าความคลาดเคลื่อนกำลังสองk += 1จบส่งคืนxจบตัวอย่างโค้ดในMATLAB
ฟังก์ชัน x = conjugate_gradient ( A, b, x0, tol )% ส่งคืนคำตอบของสมการ `A * x = b` โดยใช้วิธีการไล่ระดับเชิงสังยุคหมายเหตุ: เมทริกซ์ A ควรมีสมมาตรและเป็นเมทริกซ์บวกแน่นอนถ้าnargin < 4tol = eps ;จบr = b - A * x0 ;p = r ;rsold = r ' * r ;x = x0 ;ในขณะที่sqrt ( rsold ) > tolAp = A * p ;อัลฟา= rsold / ( p ' * Ap );x = x + alpha * p ;r = r - alpha * Ap ;rsnew = r ' * r ;p = r + ( rsnew / rsold ) * p ;rsold = rsnew ;จบจบตัวอย่างเชิงตัวเลข
พิจารณาระบบเชิงเส้นAx = bที่กำหนดโดย
เราจะดำเนินการสองขั้นตอนของวิธีการไล่ระดับเชิงสังยุค โดยเริ่มจากการคาดเดาเบื้องต้น
เพื่อหาคำตอบโดยประมาณของระบบสมการ
สารละลาย
เพื่อเป็นข้อมูลอ้างอิง คำตอบที่ถูกต้องคือ
ขั้นตอนแรกของเราคือการคำนวณเวกเตอร์ส่วนเหลือr 0ที่เกี่ยวข้องกับx 0ส่วนเหลือนี้คำนวณจากสูตรr 0 = b - Ax 0และในกรณีของเรามีค่าเท่ากับ
เนื่องจากนี่เป็นการวนซ้ำครั้งแรก เราจะใช้เวกเตอร์ส่วนเหลือr 0เป็นทิศทางการค้นหาเริ่มต้นp 0วิธีการเลือกp kจะเปลี่ยนไปในการวนซ้ำครั้งต่อไป
ตอนนี้เราจะคำนวณค่าสเกลาร์α 0โดยใช้ความสัมพันธ์ต่อไปนี้
ตอนนี้เราสามารถคำนวณx 1โดยใช้สูตรได้ แล้ว
ผลลัพธ์นี้ทำให้การวนซ้ำครั้งแรกเสร็จสมบูรณ์ โดยผลลัพธ์ที่ได้คือคำตอบโดยประมาณที่ "ปรับปรุงแล้ว" สำหรับระบบx 1ตอนนี้เราสามารถดำเนินการต่อไปและคำนวณเวกเตอร์ส่วนเหลือถัดไปr 1โดยใช้สูตร
ขั้นตอนต่อไปในกระบวนการของเราคือการคำนวณค่าสเกลาร์β 0 ซึ่งในที่สุดจะถูก นำ มาใช้เพื่อกำหนดทิศทางการค้นหาถัดไปp 1
ทีนี้ เมื่อใช้ค่าสเกลาร์β 0 นี้ เราสามารถคำนวณทิศทางการค้นหาถัดไปp 1โดยใช้ความสัมพันธ์ต่อไปนี้
ต่อไปนี้เราจะคำนวณค่าสเกลาร์α 1 โดย ใช้ p 1ที่เราเพิ่งได้รับมาโดยใช้วิธีเดียวกับที่ใช้สำหรับα 0
สุดท้าย เราหาค่าx 2โดยใช้วิธีเดียวกับที่ใช้หาค่า x 1
ผลลัพธ์x 2เป็นค่าประมาณที่ดีกว่าสำหรับคำตอบของระบบเมื่อเทียบกับx 1และx 0หากใช้การคำนวณที่แม่นยำในตัวอย่างนี้แทนการคำนวณแบบจำกัดความแม่นยำ คำตอบที่แม่นยำจะได้รับตามทฤษฎีหลังจากวนซ้ำn = 2 ครั้ง ( โดยที่ nคือลำดับของระบบ)
คุณสมบัติการสิ้นสุดที่จำกัด
ภายใต้การคำนวณเลขคณิตที่แม่นยำ จำนวนรอบการทำซ้ำที่ต้องการจะไม่เกินขนาดของเมทริกซ์ พฤติกรรมนี้เรียกว่าคุณสมบัติการสิ้นสุดแบบจำกัดของวิธีการไล่ระดับแบบสังยุค (conjugate gradient method) ซึ่งหมายถึงความสามารถของวิธีการในการหาคำตอบที่แม่นยำของระบบสมการเชิงเส้นในจำนวนขั้นตอนที่จำกัด—อย่างมากที่สุดเท่ากับมิติของระบบ—เมื่อใช้การคำนวณเลขคณิตที่แม่นยำ คุณสมบัตินี้เกิดขึ้นจากข้อเท็จจริงที่ว่า ในแต่ละรอบการทำซ้ำ วิธีการจะสร้างเวกเตอร์ส่วนเหลือที่ตั้งฉากกับส่วนเหลือทั้งหมดก่อนหน้า ส่วนเหลือเหล่านี้ก่อให้เกิดเซตที่ตั้งฉากซึ่งกันและกัน
ใน ปริภูมิ nมิติ เป็นไปไม่ได้ที่จะสร้างเวกเตอร์ที่เป็นอิสระเชิงเส้นและตั้งฉากกันมากกว่าnเวกเตอร์ เว้นแต่ว่าหนึ่งในนั้นจะเป็นเวกเตอร์ศูนย์ ดังนั้น เมื่อค่าตกค้างเป็นศูนย์ วิธีการนี้ก็จะถึงคำตอบและต้องยุติลง ซึ่งทำให้มั่นใจได้ว่าวิธีการไล่ระดับแบบสังยุคจะลู่เข้าภายในขั้นตอนไม่เกินnขั้นตอน
เพื่อแสดงให้เห็นถึงเรื่องนี้ ลองพิจารณาระบบต่อไปนี้:
เราเริ่มต้นจากการคาดเดาเบื้องต้นเนื่องจากเมทริกซ์ เป็นเมทริกซ์สมมาตรบวกแน่นอน และระบบเป็นแบบ 2 มิติ วิธีการไล่ระดับเชิงสังยุคจึงควรหาคำตอบที่ถูกต้องได้ภายในไม่เกิน 2 ขั้นตอน โค้ด MATLAB ต่อไปนี้แสดงให้เห็นถึงพฤติกรรมนี้:
A = [ 3 , - 2 ; - 2 , 4 ]; x_true = [ 1 ; 1 ]; b = A * x_true ;x = [ 1 ; 2 ]; % การคาดเดาเบื้องต้นr = b - A * x ; p = r ;สำหรับk = 1 : 2 Ap = A * p ; alpha = ( r ' * r ) / ( p ' * Ap ); x = x + alpha * p ; r_new = r - alpha * Ap ; beta = ( r_new ' * r_new ) / ( r ' * r ); p = r_new + beta * p ; r = r_new ; endแสดงผลลัพธ์( 'คำตอบที่ถูกต้อง:' ); แสดงผลลัพธ์( x );ผลลัพธ์ยืนยันว่าวิธีการนี้บรรลุผลหลังจากสองรอบการทำซ้ำ ซึ่งสอดคล้องกับการคาดการณ์ทางทฤษฎี ตัวอย่างนี้แสดงให้เห็นว่าวิธีการไล่ระดับแบบสังยุค (conjugate gradient method) ทำงานเหมือนวิธีการโดยตรง (direct method) ภายใต้เงื่อนไขในอุดมคติ
การประยุกต์ใช้กับระบบเบาบาง
คุณสมบัติการสิ้นสุดที่จำกัดยังมีนัยสำคัญในทางปฏิบัติในการแก้ระบบเมทริกซ์แบบเบาบางขนาดใหญ่ ซึ่งมักเกิดขึ้นในงานวิทยาศาสตร์และวิศวกรรม ตัวอย่างเช่น การทำให้สมการลาปลาสสองมิติเป็นแบบไม่ต่อเนื่องโดยใช้ผลต่างจำกัดบนตารางสม่ำเสมอจะนำไปสู่ระบบเชิงเส้นแบบเบาบางโดยที่เป็นเมทริกซ์สมมาตรและเป็นบวกแน่นอน
การใช้ตารางภายในทำให้ได้ระบบ และเมทริกซ์สัมประสิทธิ์มีรูปแบบแม่แบบห้าจุด แต่ละแถวประกอบด้วยค่าที่ไม่เป็นศูนย์อย่างมากที่สุดห้าค่า ซึ่งสอดคล้องกับจุดศูนย์กลางและจุดข้างเคียงโดยตรง ตัวอย่างเช่น เมทริกซ์ที่สร้างจากตารางดังกล่าวอาจมีลักษณะดังนี้:
แม้ว่ามิติของระบบจะเป็น 25 แต่ในทางทฤษฎีแล้ว วิธีการไล่ระดับแบบสังยุค (Conjugate Gradient Method: CGM) รับประกันว่าจะสิ้นสุดลงภายในไม่เกิน 25 รอบการคำนวณภายใต้การคำนวณที่แม่นยำ ในทางปฏิบัติ การลู่เข้ามักเกิดขึ้นในขั้นตอนที่น้อยกว่ามากเนื่องจากคุณสมบัติเชิงสเปกตรัมของเมทริกซ์ ประสิทธิภาพนี้ทำให้ CGM น่าสนใจเป็นพิเศษสำหรับการแก้ปัญหาระบบขนาดใหญ่ที่เกิดจากสมการเชิงอนุพันธ์ย่อย เช่น สมการที่พบในเรื่องการนำความร้อน พลศาสตร์ของไหล และไฟฟ้าสถิต
คุณสมบัติการบรรจบกัน
ในทางทฤษฎี วิธีการไล่ระดับแบบสังยุค (conjugate gradient method) สามารถมองได้ว่าเป็นวิธีโดยตรง เนื่องจากหากไม่มีข้อผิดพลาดจากการปัดเศษวิธีนี้จะให้คำตอบที่ถูกต้องแม่นยำหลังจากจำนวนรอบการทำซ้ำที่จำกัด ซึ่งไม่เกินขนาดของเมทริกซ์ อย่างไรก็ตาม ในทางปฏิบัติ คำตอบที่ถูกต้องแม่นยำนั้นไม่สามารถหาได้เลย เนื่องจากวิธีการไล่ระดับแบบสังยุคนั้นไม่เสถียรต่อการรบกวนแม้เพียงเล็กน้อย เช่น ในทางปฏิบัติ ทิศทางส่วนใหญ่ไม่ได้เป็นทิศทางสังยุคกัน เนื่องจากลักษณะที่เสื่อมสภาพของการสร้างปริภูมิย่อยของ Krylov
วิธีการ ไล่ระดับคอนจูเกต เป็นวิธีการวนซ้ำที่ปรับปรุงการประมาณค่าของคำตอบที่ถูกต้องอย่างต่อเนื่อง (ในบรรทัดฐานพลังงาน) และอาจบรรลุค่าความคลาดเคลื่อนที่ต้องการได้หลังจากจำนวนการวนซ้ำที่ค่อนข้างน้อย (เมื่อเทียบกับขนาดของปัญหา) การปรับปรุงโดยทั่วไปจะเป็นเชิงเส้น และความเร็วจะถูกกำหนดโดยค่าสภาพของเมทริกซ์ระบบยิ่งค่าสภาพมากการปรับปรุงก็จะยิ่งช้าลง[ 9 ]
อย่างไรก็ตาม กรณีที่น่าสนใจเกิดขึ้นเมื่อค่าไอเกนมีการเรียงตัวแบบลอการิทึมสำหรับเมทริกซ์สมมาตรขนาดใหญ่ ตัวอย่างเช่น ให้เป็นเมทริกซ์ตั้งฉากแบบสุ่ม และเป็นเมทริกซ์แนวทแยงที่มีค่าไอเกนตั้งแต่ ถึง โดยมีการเรียงตัวแบบลอการิทึม แม้ว่า CGM จะมีคุณสมบัติการสิ้นสุดที่จำกัด ซึ่งในทางทฤษฎีแล้วควรจะได้คำตอบที่ถูกต้องภายในขั้นตอนอย่างมากที่สุด แต่ก็อาจเกิดการชะงักงันในการลู่เข้าได้ ในสถานการณ์เช่นนี้ แม้หลังจากทำซ้ำหลายครั้งมากขึ้น เช่น สิบเท่าของขนาดเมทริกซ์ ข้อผิดพลาดอาจลดลงเพียงเล็กน้อย (เช่น ถึง) ยิ่งไปกว่านั้น ข้อผิดพลาดในการทำซ้ำอาจแกว่งไปมาอย่างมาก ทำให้ไม่น่าเชื่อถือในฐานะเงื่อนไขการหยุด การลู่เข้าที่ไม่ดีนี้ไม่ได้อธิบายด้วยค่าสภาพเพียงอย่างเดียว (เช่น) แต่เกิดจากลักษณะการกระจายของค่าไอเกนเอง เมื่อค่าไอเกนกระจายตัวอย่างสม่ำเสมอมากขึ้นหรือกระจายตัวแบบสุ่ม ปัญหาการบรรจบกันดังกล่าวมักจะไม่มีอยู่ ซึ่งแสดงให้เห็นว่าประสิทธิภาพของ CGM ไม่ได้ขึ้นอยู่กับการกระจายตัวของค่าไอเกน เพียงอย่างเดียว [ 10 ]
ถ้ามีขนาดใหญ่ มักใช้ การปรับสภาพเบื้องต้นเพื่อแทนที่ระบบเดิมด้วยระบบที่มีขนาดเล็กกว่า ดังรายละเอียดด้านล่าง
ทฤษฎีบทการลู่เข้า
กำหนดให้เซตย่อยของพหุนามเป็นดังนี้
โดยที่คือเซตของพหุนามที่มีดีกรีสูงสุด
ให้เป็นการประมาณค่าแบบวนซ้ำของคำตอบที่แน่นอนและกำหนดข้อผิดพลาดเป็นตอนนี้ อัตราการล convergence สามารถประมาณได้เป็น[ 4 ] [ 11 ]
โดยที่แทนสเปกตรัมและแทนค่า สภาพ
สิ่งนี้แสดงให้เห็นว่าการวนซ้ำเพียงพอที่จะลดข้อผิดพลาดลงเหลือสำหรับทุกค่า
โปรดทราบว่า ขีดจำกัดที่สำคัญเมื่อมีแนวโน้มไปทาง
ขีดจำกัดนี้แสดงให้เห็นอัตราการล convergence ที่เร็วกว่าเมื่อเปรียบเทียบกับวิธีการวนซ้ำของJacobiหรือGauss–Seidelซึ่งมีขนาดตาม
ไม่มีการสันนิษฐานข้อผิดพลาดจากการปัดเศษในทฤษฎีบทการลู่เข้า แต่ขอบเขตการลู่เข้ามักจะใช้ได้ในทางปฏิบัติ ดังที่ Anne Greenbaumได้ อธิบาย ไว้ในเชิงทฤษฎี [ 5 ]
การบรรจบกันเชิงปฏิบัติ
หากเริ่มต้นแบบสุ่ม ขั้นตอนการวนซ้ำครั้งแรกมักจะเร็วที่สุด เนื่องจากข้อผิดพลาดจะถูกกำจัดภายในพื้นที่ย่อย Krylov ซึ่งในตอนแรกสะท้อนถึงหมายเลขเงื่อนไขที่มีประสิทธิภาพที่เล็กกว่า ขั้นตอนการบรรจบกันครั้งที่สองมักจะถูกกำหนดไว้อย่างดีโดยขอบเขตการบรรจบกันทางทฤษฎีด้วยแต่อาจเป็นแบบเกินเชิงเส้น ขึ้นอยู่กับการกระจายของสเปกตรัมของเมทริกซ์และการกระจายสเปกตรัมของข้อผิดพลาด[ 5 ]ในขั้นตอนสุดท้าย ความแม่นยำที่น้อยที่สุดที่สามารถทำได้จะถึง และการบรรจบกันจะหยุดชะงักหรือวิธีการอาจเริ่มเบี่ยงเบน ในแอปพลิเคชันการคำนวณทางวิทยาศาสตร์ทั่วไปในรูปแบบจุดลอยตัวความแม่นยำสองเท่าสำหรับเมทริกซ์ขนาดใหญ่ วิธีการไล่ระดับแบบสังยุคจะใช้เกณฑ์การหยุดที่มีค่าความคลาดเคลื่อนที่ยุติการวนซ้ำในระหว่างขั้นตอนแรกหรือขั้นตอนที่สอง
วิธีการไล่ระดับคอนจูเกตแบบปรับสภาพล่วงหน้า
ในกรณีส่วนใหญ่การปรับสภาพเบื้องต้นเป็นสิ่งจำเป็นเพื่อให้แน่ใจว่าการบรรจบกันอย่างรวดเร็วของวิธีการไล่ระดับคอนจูเกต หากเป็นเมทริกซ์สมมาตรบวกแน่นอนและมีค่าสภาพที่ดีกว่าสามารถใช้วิธีการไล่ระดับคอนจูเกตแบบปรับสภาพเบื้องต้นได้ โดยมีรูปแบบดังต่อไปนี้: [ 12 ]
- ทำซ้ำ
- ถ้าr k +1มีค่าเล็กพอให้ออกจากลูปจบเงื่อนไข
- จบการทำซ้ำ
- ผลลัพธ์คือx k +1
สูตรข้างต้นเทียบเท่ากับการใช้วิธีการไล่ระดับคอนจูเกตปกติกับระบบที่ปรับสภาพไว้ล่วงหน้า[ 13 ]
ที่ไหน
การแยกส่วนแบบ Cholesky ของตัวปรับสภาพเบื้องต้นจะต้องใช้เพื่อรักษาความสมมาตร (และความเป็นบวกแน่นอน) ของระบบ อย่างไรก็ตาม ไม่จำเป็นต้องคำนวณการแยกส่วนนี้ และเพียงพอที่จะทราบค่าก็สามารถแสดงได้ว่ามีสเปกตรัมเดียวกันกับ
เมทริกซ์ตัวปรับสภาพจะต้องเป็นเมทริกซ์สมมาตรบวกแน่นอนและคงที่ กล่าวคือ ไม่สามารถเปลี่ยนแปลงได้ในแต่ละรอบการคำนวณ หากข้อสมมติใดๆ เกี่ยวกับตัวปรับสภาพนี้ถูกละเมิด พฤติกรรมของวิธีการไล่ระดับเชิงสังยุคแบบปรับสภาพอาจคาดเดาไม่ได้
ตัวอย่างของพรีคอนดิชันเนอร์ ที่ใช้กันทั่วไป คือการแยกตัวประกอบ Cholesky ที่ไม่สมบูรณ์[ 14 ]
การนำตัวปรับสภาพเบื้องต้นไปใช้ในทางปฏิบัติ
สิ่งสำคัญที่ควรจำไว้คือ เราไม่ต้องการหาเมทริกซ์ผกผันโดยตรงเพื่อนำมาใช้ในกระบวนการ เนื่องจากกระบวนการหา เมทริกซ์ผกผัน จะใช้เวลา/ทรัพยากรการคำนวณมากกว่าการแก้ปัญหาด้วยอัลกอริธึมการไล่ระดับแบบสังยุคเสียอีก ยกตัวอย่างเช่น สมมติว่าเราใช้ตัวปรับสภาพที่ได้จากการแยกตัวประกอบ Cholesky ที่ไม่สมบูรณ์ เมทริกซ์ที่ได้จะเป็นเมทริกซ์สามเหลี่ยมล่างและเมทริกซ์ตัวปรับสภาพคือ:
จากนั้นเราต้องหาคำตอบว่า:
แต่:
แล้ว:
ลองใช้เวกเตอร์ตัวกลางดู:
เนื่องจากและเป็นที่ทราบแล้ว และเป็นเมทริกซ์สามเหลี่ยมล่าง การหาค่า จึงทำได้ง่ายและประหยัดการคำนวณโดยใช้การแทนค่าไปข้างหน้าจากนั้น เราแทนค่าลงในสมการเดิม:
เนื่องจากทราบค่าและ แล้ว และ เป็นเมทริกซ์สามเหลี่ยมบน การแก้หา จึงทำได้ง่ายและประหยัดต้นทุนในการคำนวณโดยใช้การแทนค่าแบบย้อนกลับ
เมื่อใช้วิธีนี้ ไม่จำเป็นต้องกลับด้านหรือระบุอย่างชัดเจนเลย และเราก็ยังคงได้ผลลัพธ์เช่นเดิม
วิธีการไล่ระดับคอนจูเกตแบบปรับสภาพล่วงหน้าที่ยืดหยุ่น
ในแอปพลิเคชันที่ต้องการการคำนวณเชิงตัวเลขที่ซับซ้อน จะมีการใช้ตัวปรับสภาพเบื้องต้นที่ซับซ้อน ซึ่งอาจนำไปสู่การปรับสภาพเบื้องต้นแบบแปรผัน เปลี่ยนแปลงไปในแต่ละรอบการทำซ้ำ แม้ว่าตัวปรับสภาพเบื้องต้นจะเป็นเมทริกซ์สมมาตรบวกแน่นอนในทุกรอบการทำซ้ำ แต่ข้อเท็จจริงที่ว่ามันอาจเปลี่ยนแปลงได้ทำให้ข้อโต้แย้งข้างต้นไม่ถูกต้อง และในการทดสอบเชิงปฏิบัติจะนำไปสู่การชะลอตัวอย่างมากของการลู่เข้าของอัลกอริทึมที่นำเสนอข้างต้น โดยใช้สูตร ของ Polak–Ribière
แทนที่จะใช้สูตร Fletcher–Reeves
อาจปรับปรุงการบรรจบกันอย่างมากในกรณีนี้[ 15 ]เวอร์ชันของวิธีการไล่ระดับคอนจูเกตแบบปรับสภาพล่วงหน้านี้สามารถเรียกว่า[ 16 ]ยืดหยุ่นได้เนื่องจากอนุญาตให้มีการปรับสภาพล่วงหน้าแบบแปรผันได้ เวอร์ชันที่ยืดหยุ่นยังแสดงให้เห็น[ 17 ]ว่ามีความแข็งแกร่งแม้ว่าตัวปรับสภาพล่วงหน้าจะไม่สมมาตรบวกแน่นอน (SPD)
การใช้งานเวอร์ชันที่ยืดหยุ่นจำเป็นต้องจัดเก็บเวกเตอร์เพิ่มเติม สำหรับตัวปรับสภาพ SPD ที่กำหนดไว้ดังนั้นสูตรทั้งสองสำหรับβ kจึงเทียบเท่ากันในทางคณิตศาสตร์ที่แม่นยำ กล่าวคือ โดยไม่มี ข้อผิดพลาดจาก การ ปัดเศษ
คำอธิบายทางคณิตศาสตร์ของพฤติกรรมการบรรจบกันที่ดีกว่าของวิธีการด้วย สูตร Polak–Ribièreคือวิธีการนี้เหมาะสมที่สุดในระดับท้องถิ่นในกรณีนี้ โดยเฉพาะอย่างยิ่ง มันไม่ได้บรรจบกันช้ากว่าวิธีการลดความชันที่เหมาะสมที่สุดในระดับท้องถิ่น[ 18 ]
เทียบกับวิธีการลดระดับความชันที่เหมาะสมที่สุดในระดับท้องถิ่น
ทั้งวิธีการไล่ระดับคอนจูเกตแบบดั้งเดิมและแบบปรับสภาพล่วงหน้า จำเป็นต้องกำหนดค่า เพื่อให้ได้ค่าที่เหมาะสมที่สุดในระดับท้องถิ่น โดยใช้การค้นหาเส้นตรงและ วิธี การลดระดับความชันสูงสุดด้วยการแทนที่นี้ เวกเตอร์pจะเหมือนกับเวกเตอร์z เสมอ ดังนั้นจึงไม่จำเป็นต้องจัดเก็บเวกเตอร์pด้วยเหตุนี้ การวนซ้ำแต่ละครั้งของ วิธีการ ลดระดับความชันสูงสุด เหล่านี้จึงประหยัดกว่าเล็กน้อยเมื่อเทียบกับวิธีการไล่ระดับคอนจูเกต อย่างไรก็ตาม วิธีการหลังจะลู่เข้าได้เร็วกว่า เว้นแต่จะใช้ ตัวปรับสภาพล่วงหน้าที่แปรผันได้ (สูง) และ/หรือไม่ใช่ SPD ดังที่กล่าวไว้ข้างต้น
วิธีการไล่ระดับเชิงคอนจูเกตเป็นตัวควบคุมป้อนกลับที่เหมาะสมที่สุดสำหรับอินทิเกรเตอร์คู่
วิธีการไล่ระดับคอนจูเกตยังสามารถหาได้โดยใช้ทฤษฎีการควบคุมที่เหมาะสม [ 19 ] ในแนวทางนี้ วิธีการไล่ระดับคอนจูเกตจะกลายเป็นตัวควบคุมป้อนกลับที่เหมาะสมที่สุดสำหรับระบบอินทิเกรเตอร์คู่โดยที่ปริมาณและเป็นค่าเกนป้อนกลับที่แปรผันได้[ 19 ]
เกรเดียนต์สังยุคบนสมการปกติ
วิธีการไล่ระดับเชิงสังยุค (Conjugate Gradient) สามารถนำไปใช้กับ เมทริกซ์ n x m ใดๆ ได้ โดยการนำไปใช้กับสมการปกติA T Aและเวกเตอร์ด้านขวาA T bเนื่องจาก A T Aเป็นเมทริกซ์สมมาตรบวกกึ่งกำหนด (Symmetric Positive Semidefinite Matrix) สำหรับA ใดๆ ผลลัพธ์ที่ได้คือการไล่ระดับเชิงสังยุคบนสมการปกติ ( CGNหรือCGNR )
- A T Ax = A T b
เนื่องจากเป็นวิธีการวนซ้ำ จึงไม่จำเป็นต้องสร้าง A T Aอย่างชัดเจนในหน่วยความจำ แต่เพียงแค่ทำการคูณเมทริกซ์กับเวกเตอร์และการคูณเมทริกซ์สลับแถวกับเวกเตอร์เท่านั้น ดังนั้น CGNR จึงมีประโยชน์อย่างยิ่งเมื่อAเป็นเมทริกซ์แบบสปาร์สเนื่องจากโดยปกติแล้วการดำเนินการเหล่านี้มีประสิทธิภาพสูงมาก อย่างไรก็ตาม ข้อเสียของการสร้างสมการปกติคือค่าสภาพ κ( A T A ) เท่ากับ κ 2 ( A ) ดังนั้นอัตราการล convergence ของ CGNR อาจช้า และคุณภาพของคำตอบโดยประมาณอาจไวต่อข้อผิดพลาดจากการปัดเศษ การหาตัวปรับสภาพ ที่ดี มักเป็นส่วนสำคัญของการใช้วิธี CGNR
มีการเสนออัลกอริทึมหลายแบบ (เช่น CGLS, LSQR) โดยกล่าวกันว่าอัลกอริทึม LSQRมีเสถียรภาพเชิงตัวเลขที่ดีที่สุดเมื่อA มีสภาพไม่ดี กล่าว คือA มี ค่าสภาพสูง
วิธีการไล่ระดับคอนจูเกตสำหรับเมทริกซ์เฮอร์มิเชียนเชิงซ้อน
วิธีการไล่ระดับเชิงสังยุค (conjugate gradient method) ที่มีการดัดแปลงเล็กน้อย สามารถขยายไปใช้ในการแก้ระบบสมการเชิงเส้นสำหรับเวกเตอร์เชิงซ้อน x ได้ โดยที่ A เป็น เมทริกซ์เฮอร์ มิเชียน (กล่าวคือ A' = A) และ เป็นเมทริกซ์บวกกำหนด (positive-definite matrix ) และสัญลักษณ์ ' แทนการสลับตำแหน่งเชิงสังยุค (conjugate transpose ) การดัดแปลงเล็กน้อยนี้ทำได้ง่ายๆ โดยการแทนที่การสลับตำแหน่งจริง (real transpose) ด้วยค่าการสลับตำแหน่ง เชิงสัง ยุคทุกที่
ข้อดีและข้อเสีย
ข้อดีและข้อเสียของวิธีการไล่ระดับคอนจูเกตได้รับการสรุปไว้ในบันทึกการบรรยายโดย Nemirovsky และ BenTal [ 20 ] : Sec.7.3
ตัวอย่างทางพยาธิวิทยา
ตัวอย่างนี้มาจาก[ 21 ] ให้และกำหนดเนื่องจากสามารถผกผันได้ จึงมีคำตอบเฉพาะสำหรับการแก้ปัญหาโดยใช้การไล่ระดับแบบคอนจูเกตทำให้การลู่เข้าค่อนข้างแย่กล่าวคือ ในระหว่างกระบวนการ CG ข้อผิดพลาดจะเพิ่มขึ้นแบบเลขชี้กำลัง จนกระทั่งกลายเป็นศูนย์อย่างกะทันหันเมื่อพบคำตอบเฉพาะ
ดูเพิ่มเติม
อ่านเพิ่มเติม
- Atkinson, Kendell A. (1988). "ส่วนที่ 8.9". บทนำสู่การวิเคราะห์เชิงตัวเลข (ฉบับที่ 2). John Wiley and Sons. ISBN 978-0-471-50023-0.
- Avriel, Mordecai (2003). การเขียนโปรแกรมเชิงไม่เชิงเส้น: การวิเคราะห์และวิธีการ . สำนักพิมพ์ Dover. ISBN 978-0-486-43227-4.
- Golub, Gene H.; Van Loan, Charles F. (2013). "บทที่ 11". การคำนวณเมทริกซ์ (ฉบับที่ 4). สำนักพิมพ์มหาวิทยาลัยจอห์นส์ฮอปกินส์. ISBN 978-1-4214-0794-4.
- Saad, Yousef (2003-04-01). "บทที่ 6"วิธีการวนซ้ำสำหรับระบบเชิงเส้นแบบเบาบาง (ฉบับที่ 2). SIAM. ISBN 978-0-89871-534-7.
- Gérard Meurant: "การตรวจจับและการแก้ไขข้อผิดพลาดที่มองไม่เห็นในอัลกอริทึมการไล่ระดับแบบสังยุค", Numerical Algorithms, vol.92 (2023), pp.869-891. url= https://doi.org/10.1007/s11075-022-01380-1
- Meurant, Gerard; Tichy, Petr (2024). การประมาณค่าบรรทัดฐานความคลาดเคลื่อนในอัลกอริทึมการไล่ระดับแบบสังยุค SIAM. ISBN 978-1-61197-785-1.
ลิงก์ภายนอก
- "การไล่ระดับเชิงสังยุค วิธีการของ" , สารานุกรมคณิตศาสตร์ , EMS Press , 2001 [1994]
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ วิธีการไล่ระดับคอนจูเกต
ในทางคณิตศาสตร์วิธีการไล่ระดับเชิงสังยุค (conjugate gradient method)เป็นอัลกอริทึมสำหรับการแก้ระบบสมการเชิงเส้นบาง ระบบด้วยวิธีเชิงตัวเลข...
การอนุมานเป็นวิธีการโดยตรง
วิธีการไล่ระดับเชิงสังยุค (Conjugate Gradient Method) สามารถพัฒนาได้จากหลายมุมมอง รวมถึงการประยุกต์ใช้เฉพาะทางของวิธีการทิศทางเชิงสังยุค (Conjugate Direction Method) สำหรับการหาค่าเหมาะสมที่สุด และการเปลี่ยนแปลงของ การวนซ้ำแบบ Arnoldi / Lanczos สำหรับ ปัญหา...
เป็นวิธีการแบบวนซ้ำ
หากเราเลือกเวกเตอร์สังยุคอย่างระมัดระวัง เราอาจไม่จำเป็นต้องใช้เวกเตอร์ทั้งหมดเพื่อให้ได้ค่าประมาณที่ดีของคำตอบดังนั้น เราจึงต้องการมองวิธีการไล่ระดับสังยุคเป็นวิธีการวนซ้ำ วิธีนี้ช่วยให้เราสามารถแก้ระบบสมการที่มีค่า มากจนวิธีการโดยตรงใช้เวลานานเกินไปได้...
อัลกอริทึมที่ได้
อัลกอริทึมข้างต้นให้คำอธิบายที่ตรงไปตรงมาที่สุดของวิธีการไล่ระดับคอนจูเกต ดูเหมือนว่าอัลกอริทึมตามที่ระบุไว้จะต้องการการจัดเก็บทิศทางการค้นหาก่อนหน้าทั้งหมดและเวกเตอร์ตกค้าง รวมถึงการคูณเมทริกซ์-เวกเตอร์จำนวนมาก ซึ่งอาจทำให้การคำนวณมีค่าใช้จ่ายสูง...