ข้อเสียของการประมาณ Newton-Raphson ด้วยอนุพันธ์เชิงตัวเลขโดยประมาณ


17

สมมติว่าฉันมีฟังก์ชั่นบางและฉันต้องการที่จะหาดังกล่าวว่า0 ฉันอาจใช้วิธี Newton-Raphson แต่ตอนนี้ต้องว่าฉันรู้ว่าฟังก์ชั่นอนุพันธ์'(x) นิพจน์การวิเคราะห์สำหรับอาจไม่พร้อมใช้งาน ตัวอย่างเช่นอาจถูกกำหนดโดยรหัสคอมพิวเตอร์ที่ซับซ้อนซึ่งให้คำปรึกษาฐานข้อมูลค่าทดลองx f ( x ) 0 f ( x ) f fx(x)0'(x)

แต่ถึงแม้ว่ามีความซับซ้อนผมสามารถใกล้เคียงกับสำหรับการใด ๆ โดยเฉพาะโดยการเลือกขนาดเล็กจำนวนและ calcultingepsilon}f ( a ) a ϵ f ( a ) f ( a + ϵ ) - f ( a )''(a)aε'(a)(a+ε)-(a)ε

ฉันได้ยินมาว่ามีข้อเสียอย่างชัดเจนสำหรับแนวทางนี้ แต่ฉันไม่รู้ว่ามันคืออะไร Wikipedia ตั้งข้อสังเกตว่า "การใช้การประมาณนี้จะส่งผลให้เกิดวิธีการเซแคนท์ซึ่งการบรรจบกันนั้นช้ากว่าวิธีของนิวตัน"

บางคนได้โปรดอธิบายรายละเอียดเกี่ยวกับเรื่องนี้และให้การอ้างอิงที่กล่าวถึงปัญหาโดยเฉพาะกับเทคนิคนี้


5
วิธีเซคแคนต์เป็นทางเลือกที่ยอดเยี่ยมเมื่ออนุพันธ์มีราคาแพงในการคำนวณ เส้นตัดสามขั้นโดยทั่วไปจะเทียบเท่ากับสองขั้นตอนโดยทั่วไปของนิวตันและขั้นตอนจะถูกกว่า

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

2
ดังกล่าวโดยAndréสองจุดอนุพันธ์ตัวเลขตามที่คุณแนะนำจะเทียบเท่ากับการเริ่มต้นใหม่วิธี secant สำหรับการลู่เข้าที่เร็วกว่านี้ฉันขอแนะนำอัลกอริธึมที่เรียกว่าIllinoisซึ่งเป็นญาติสนิทของ Secant method และจะใช้เพียงจุดเดียวต่อขั้นแทนที่จะเป็นสองวิธีในกรณีของคุณและจะไม่ติดขัดเหมือน วิธีตำแหน่งเท็จ
Pedro

มิติของคืออะไร ยิ่งมีมิติมากเท่าไหร่อนุพันธ์ก็จะยิ่งมีค่ามากขึ้นเท่านั้น Jacob-free Newton-Krylov เป็นตัวเลือกที่ไม่จำเป็นต้องมีอนุพันธ์ที่ชัดเจน (แม้ว่าการปรับสภาพล่วงหน้านั้นมีความสำคัญต่อระบบปรับอากาศ x
Jed Brown

คำตอบ:


12

เพื่อสัญกรณ์เราสมมติว่า (นั่นคือฟังก์ชันที่มีค่าเป็นเวกเตอร์ที่ใช้เวกเตอร์เป็นอินพุตและเอาต์พุตเวกเตอร์ที่มีขนาดเท่ากัน) มีข้อกังวลสองประการคือค่าใช้จ่ายในการคำนวณและความแม่นยำเชิงตัวเลขf:RnRn

การคำนวณอนุพันธ์ (เมทริกซ์จาโคเบียน, J ( x )หรือ( f ( x ) ) Tหรืออะไรก็ได้ที่คุณต้องการ) โดยใช้ความแตกต่างอัน จำกัด จะต้องมีการประเมินฟังก์ชันn หากคุณสามารถคำนวณอนุพันธ์โดยใช้เลขคณิตจุดลอยตัวโดยตรงจากคำจำกัดความคุณจะต้องคำนวณความฉลาดทางผลต่างDf(x)J(x)((x))Tn

D(x)อีผม=Limε0(x+εอีผม)-(x)ε

สำหรับแต่ละสมมติว่าคุณไม่ได้ทำเรียงลำดับของ "สมาร์ท จำกัด differencing" ใด ๆ (เช่นเคอร์ติ-Powell-เรด) เพราะคุณรู้ (หรือสามารถตรวจสอบได้) รูปแบบของ sparsity D ถ้าnมีขนาดใหญ่นั่นอาจเป็นการประเมินฟังก์ชั่นจำนวนมาก หากคุณมีนิพจน์การวิเคราะห์สำหรับD f การคำนวณอาจมีราคาถูกกว่า วิธีการแยกความแตกต่างแบบอัตโนมัติ (หรือเรียกอีกอย่างว่าอัลกอริทึม) สามารถใช้ในบางกรณีเพื่อคำนวณD fที่ประมาณ 3 ถึง 5 เท่าของค่าใช้จ่ายในการประเมินฟังก์ชั่นผม=1,...,nDnDD

นอกจากนี้ยังมีข้อกังวลเกี่ยวกับตัวเลข เห็นได้ชัดว่าในคอมพิวเตอร์เราไม่สามารถ จำกัด สเกลาร์ได้เนื่องจากมันเป็นศูนย์ดังนั้นเมื่อเราประมาณเราจะเลือกεให้เป็น "เล็ก" และคำนวณDε

Df(x)eif(x+εei)f(x)ε,

เมื่อหมายถึงการประมาณค่าและเราหวังว่าจะเป็นการประมาณค่าที่ดีจริงๆ การคำนวณประมาณนี้ในการคำนวณจุดลอยเป็นเรื่องที่ยากเพราะถ้าคุณเลือกεขนาดใหญ่เกินไปประมาณของคุณอาจจะไม่ดี แต่ถ้าคุณเลือกεขนาดเล็กเกินไปอาจจะมีข้อผิดพลาดในการปัดเศษอย่างมีนัยสำคัญ ผลกระทบเหล่านี้กล่าวถึงในบทความ Wikipedia เกี่ยวกับความแตกต่างเชิงตัวเลขในรายละเอียดผิวเผิน อ้างอิงรายละเอียดเพิ่มเติมสามารถพบได้ในบทความεε

หากข้อผิดพลาดใน Jacobian matrix ไม่ใหญ่เกินไปการทำซ้ำของ Newton-Raphson จะมาบรรจบกัน สำหรับการวิเคราะห์เชิงทฤษฎีอย่างละเอียดดูบทที่ 25 ของความแม่นยำและความเสถียรของอัลกอริธึมเชิงตัวเลขโดย Nick HighamหรือรายงานโดยFrançoise Tisseurซึ่งเป็นพื้นฐานของมันDf

โดยทั่วไปไลบรารีจะดูแลรายละเอียดอัลกอริทึมเหล่านี้สำหรับคุณและโดยทั่วไปแล้วการใช้งานไลบรารีของอัลกอริทึม Newton-Raphson (หรือตัวแปรต่างๆ) จะรวมตัวกันได้ค่อนข้างดี แต่ทุกครั้งมักจะมีปัญหาที่ทำให้เกิดปัญหาเนื่องจากข้อเสีย ข้างบน. ในกรณีสเกลาร์ฉันจะใช้วิธีของเบรนต์เนื่องจากมีความแข็งแกร่งและอัตราการบรรจบที่ดีในทางปฏิบัติ(n=1)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.