กลับไปหน้าบทความ

อ่าน 14 นาที

การหาอนุพันธ์เชิงตัวเลข

ในการวิเคราะห์เชิง ตัวเลข อัลกอริทึมการหา อนุพันธ์ เชิงตัวเลข จะประมาณค่า อนุพันธ์ของฟังก์ชันทางคณิตศาสตร์หรือซับรูทีนโดยใช้ค่าของฟังก์ชันนั้น...

การหาอนุพันธ์เชิงตัวเลข

การประมาณค่าอนุพันธ์ด้วยวิธีผลต่างจำกัด

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

ความแตกต่างจำกัด

วิธีที่ง่ายที่สุดคือการใช้การประมาณค่าความแตกต่างจำกัด

การประมาณค่าแบบสองจุดอย่างง่ายคือการคำนวณความชันของเส้นตัด ใกล้เคียงที่ ผ่านจุด( x , f ( x ))และ( x  +  h , f ( x  +  h )) [ 1 ] การเลือกจำนวนเล็กน้อยhซึ่งh แทน การเปลี่ยนแปลงเล็กน้อยในxและอาจเป็นบวกหรือลบก็ได้ ความชันของเส้นนี้คือ นิพจน์นี้คือผลหารต่างของนิวตัน (หรือที่รู้จักกันในชื่อ ผลหารต่างอันดับแรก)

เพื่อให้ได้ค่าประมาณความคลาดเคลื่อนสำหรับการประมาณค่านี้ เราสามารถใช้การกระจายอนุกรมเทย์เลอร์ของ f รอบจุดฐานเพื่อให้ได้ ค่า f สำหรับบางค่าระหว่าง h และh เมื่อจัดเรียงใหม่จะได้ ความชันของเส้นตัดนี้แตกต่างจากความชันของเส้นสัมผัสในปริมาณที่แปรผันตรงกับh โดยประมาณ เมื่อhเข้าใกล้ศูนย์ ความชันของเส้นตัดจะเข้าใกล้ความชันของเส้นสัมผัส และพจน์ความคลาดเคลื่อนจะหายไป ดังนั้นอนุพันธ์ที่แท้จริงของfที่xคือลิมิตของค่าผลหารส่วนต่างเมื่อเส้นตัดเข้าใกล้เส้นสัมผัสมากขึ้นเรื่อยๆ

เนื่องจากการแทนค่า 0 ลงในh ทันที จะทำให้ได้รูปแบบที่ไม่แน่นอนการคำนวณอนุพันธ์โดยตรงจึงอาจทำได้ยาก

ในทำนองเดียวกัน สามารถประมาณความชันได้โดยใช้ตำแหน่ง x  −  hและx

สูตรสองจุดอีกสูตรหนึ่งคือการคำนวณความชันของเส้นตัดใกล้เคียงที่ลากผ่านจุด( x  −  h , f ( x  −  h ))และ( x  +  h , f ( x  +  h ))ความชันของเส้นนี้คือ

สูตรนี้เรียกว่าผลหารความแตกต่างสมมาตรในกรณีนี้ ข้อผิดพลาดอันดับแรกจะหักล้างกัน ดังนั้น ความชันของเส้นตัดเหล่านี้จะแตกต่างจากความชันของเส้นสัมผัสในปริมาณที่แปรผันตรงกับดังนั้น สำหรับค่าh น้อยๆ วิธีนี้จึงเป็นการประมาณเส้นสัมผัสที่แม่นยำกว่าการประมาณแบบด้านเดียว อย่างไรก็ตาม แม้ว่าจะคำนวณความชันที่xแต่ค่าของฟังก์ชันที่x นั้นไม่ได้เกี่ยวข้องด้วย

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

อัตราส่วนผลต่างสมมาตรถูกนำมาใช้เป็นวิธีการประมาณค่าอนุพันธ์ในเครื่องคิดเลขหลายเครื่อง รวมถึงTI-82 , TI-83 , TI-84 , TI-85ซึ่งทั้งหมดนี้ใช้วิธีนี้กับh  = 0.001 [ 2 ] [ 3 ]

ขนาดขั้น

ตัวอย่างที่แสดงให้เห็นถึงความยากลำบากในการเลือกค่าhเนื่องมาจากทั้งข้อผิดพลาดจากการปัดเศษและข้อผิดพลาดจากสูตร

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

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

เพื่อลดข้อผิดพลาดจากการตัดทอน เราต้องลดค่า hแต่เมื่อค่า hลดลง ข้อผิดพลาดจากการปัดเศษก็จะเพิ่มขึ้น เนื่องจากความจำเป็นในการหารด้วยค่าh ที่มีขนาดเล็ก สูตรผลต่างจำกัดทั้งหมดสำหรับการหาอนุพันธ์เชิงตัวเลขจึงมีสภาพไม่ดีเช่น เดียวกัน [ 4 ]

หากแทนที่จะประมาณอนุพันธ์โดยใช้และเราสมมติว่าข้อผิดพลาดในการประมาณสัมพัทธ์เนื่องจากการปัดเศษมีขอบเขตจำกัดโดยค่าเอปไซลอนของเครื่องและค่าและมีขอบเขตจำกัดโดยและตามลำดับ จะสามารถแสดงได้ว่า: [ 5 ]โดยการลดขอบเขตบนนี้ให้เหลือน้อยที่สุด จะสามารถประมาณขนาดขั้นตอนที่เหมาะสมที่สุดได้ อย่างไรก็ตาม การใช้วิธีนี้จะต้องทราบขอบเขตและแทน หากใช้ขอบเขตบนโดยประมาณ ซึ่งและถูกแทนที่ด้วยและข้อผิดพลาดสามารถประมาณได้ดังนี้: โดยการลดให้เหลือน้อยที่สุดจะสามารถหาค่าประมาณขนาดขั้นตอนที่เหมาะสมที่สุดh ได้: [ 5 ] (แม้ว่าจะไม่ใช่เมื่อ) หากไม่มีข้อมูลเกี่ยวกับฟังก์ชันบางครั้งจะใช้การประมาณค่าทำให้มีตัวเลือกสำหรับhที่มีขนาดเล็กโดยไม่ทำให้เกิดข้อผิดพลาดในการปัดเศษมาก: โดยที่ ค่า เอปไซลอนของเครื่องεโดยทั่วไปจะมีขนาดประมาณ2.2 × 10 −16สำหรับความแม่นยำสองเท่า [ 6 ] ในทางปฏิบัติ ไม่สามารถคำนวณค่าที่ทำให้ขอบเขตข้อผิดพลาดข้างต้นน้อยที่สุดได้ ดังนั้นจึงไม่สามารถคำนวณค่าประมาณของขนาดขั้นตอนที่เหมาะสมที่สุดได้หากไม่มีข้อมูลเกี่ยวกับอนุพันธ์ลำดับสูงกว่า[ 7 ]

ตัวอย่าง

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

ขนาดขั้น (ชม.)การประมาณค่าข้อผิดพลาดสัมบูรณ์

สำหรับการคำนวณด้วยคอมพิวเตอร์ ปัญหาจะยิ่งรุนแรงขึ้น เพราะถึงแม้ว่าxจะต้องเป็นตัวเลขทศนิยมที่สามารถแสดงได้ด้วยความแม่นยำระดับหนึ่ง (32 หรือ 64 บิตเป็นต้น ) แต่x + hแทบจะแน่นอนว่าจะไม่สามารถแสดงได้อย่างแม่นยำด้วยความแม่นยำนั้น นั่นหมายความว่าx + hจะถูกเปลี่ยนแปลง (โดยการปัดเศษหรือการตัดทิ้ง) ไปเป็นตัวเลขที่เครื่องสามารถแสดงได้ใกล้เคียง ส่งผลให้( x  +  h ) −  xจะไม่เท่ากับhการประเมินค่าฟังก์ชันทั้งสองจะไม่ ห่างกัน h พอดี ในแง่นี้ เนื่องจากเศษส่วนทศนิยมส่วนใหญ่เป็นลำดับซ้ำในระบบเลขฐานสอง (เช่นเดียวกับ 1/3 ในระบบเลขฐานสิบ) ขั้นตอนที่ดูเหมือนกลม เช่นh  = 0.1จะไม่ใช่ตัวเลขกลมในระบบเลขฐานสอง แต่จะเป็น 0.000110011001100... 2แนวทางที่เป็นไปได้มีดังนี้:

h := sqrt(eps) * x; xph := x + h; dx := xph - x; slope := (F(xph) - F(x)) / dx; 

อย่างไรก็ตาม ในกรณีของคอมพิวเตอร์ ระบบ การเพิ่มประสิทธิภาพของคอมไพเลอร์อาจไม่สามารถจัดการกับรายละเอียดของการคำนวณทางคณิตศาสตร์ที่แท้จริงของคอมพิวเตอร์ได้ และกลับนำเอาหลักการพื้นฐานทางคณิตศาสตร์ มาใช้ เพื่อสรุปว่าdxและhเหมือนกัน ใน ภาษา Cและภาษาที่คล้ายกัน คำสั่งที่ระบุว่าxphเป็นตัวแปรแบบ volatileจะช่วยป้องกันปัญหานี้ได้

วิธีการสามจุด

เพื่อให้ได้สูตรการประมาณค่าอนุพันธ์ทั่วไปสำหรับฟังก์ชันบางฟังก์ชันให้เป็นจำนวนบวกที่อยู่ใกล้ศูนย์ การกระจายอนุกรมเทย์เลอร์ของรอบจุดฐานคือ

การแทนที่ด้วยให้

การคูณเอกลักษณ์ ( 1 ) ด้วย 4 จะได้

การลบเอกลักษณ์ ( 1' ) ออกจาก ( 2 ) จะกำจัดเทอม:

ซึ่งสามารถเขียนได้ดังนี้

การเรียงลำดับคำศัพท์ใหม่ทำให้ได้ผลลัพธ์ดังนี้

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

ซึ่งเรียกว่าสูตรผลต่างกลางสามจุดและ ซึ่งเรียกว่าสูตรผลต่างย้อนหลังสามจุด

ด้วยวิธีการที่คล้ายกัน สูตรการประมาณค่าจุดกึ่งกลางห้าจุดสามารถหาได้ดังนี้: [ 8 ]

ตัวอย่างเชิงตัวเลข

พิจารณาการประมาณค่าอนุพันธ์ของที่จุดเนื่องจากค่าที่แท้จริงคือ

สูตร ขนาดขั้น (ชม.) การประมาณค่า ข้อผิดพลาดสัมบูรณ์
สูตรคำนวณผลต่างคะแนนนำสามแต้ม
สูตรผลต่างย้อนหลังสามจุด
สูตรความแตกต่างกลางสามจุด

รหัส

ต่อไปนี้เป็นตัวอย่าง การใช้งาน Python สำหรับการ หา อนุพันธ์เชิงตัวเลขโดยใช้สูตรผลต่างสามจุดต่างๆ ที่ฟังก์ชันนี้มีอนุพันธ์funcfunc_prime

อนุพันธ์ระดับสูง

โดยใช้ทฤษฎีบทอนุกรมเทย์เลอร์ เราสามารถหาอนุพันธ์อันดับสอง (และอันดับสูงกว่า) ของฟังก์ชันทั่วไปได้ สำหรับฟังก์ชันหนึ่งและจำนวนหนึ่งการกระจายฟังก์ชันนั้นรอบ ๆและจะได้

และ ที่ไหน. เมื่อบวกสมการทั้งสองนี้เข้าด้วยกันจะได้

ถ้าฟังก์ชันต่อเนื่องบนช่วงแล้วจะอยู่ระหว่างและทฤษฎีบทค่ากลางรับประกันว่าจะมีจำนวนหนึ่ง เช่นอยู่ระหว่างและดังนั้นเราจึงสามารถเขียนได้ว่า

ที่ไหน.

ตัวอย่างเชิงตัวเลข

พิจารณาการประมาณค่าอนุพันธ์อันดับสองของฟังก์ชันที่จุดนั้น

เนื่องจากค่าที่แน่นอนคือ.

ขนาดขั้น (ชม.) การประมาณค่า ข้อผิดพลาดสัมบูรณ์

อนุพันธ์ตามอำเภอใจ

โดยใช้ผลหารความแตกต่างของนิวตัน สามารถแสดงได้ดังต่อไปนี้[ 9 ] (สำหรับn > 0 ):

วิธีการตัวแปรเชิงซ้อน

การประมาณความแตกต่างจำกัดแบบคลาสสิกสำหรับการหาอนุพันธ์เชิงตัวเลขนั้นมีเงื่อนไขไม่ดี อย่างไรก็ตาม ถ้าเป็นฟังก์ชันโฮโลมอร์ฟิกที่มีค่าเป็นจำนวนจริงบนเส้นจำนวนจริง ซึ่งสามารถประเมินได้ที่จุดในระนาบเชิงซ้อนใกล้แล้วจะมี วิธีการ ที่เสถียรตัวอย่างเช่น[ 10 ]อนุพันธ์อันดับแรกสามารถคำนวณได้โดยใช้สูตรอนุพันธ์ขั้นเชิงซ้อน: [ 11 ] [ 12 ] [ 13 ]

ขนาดขั้นตอนที่แนะนำเพื่อให้ได้อนุพันธ์ที่แม่นยำสำหรับเงื่อนไขต่างๆ คือ[ 14 ] สูตร นี้สามารถหาได้จาก การขยาย อนุกรมเทย์เลอร์ :

สูตรอนุพันธ์ขั้นซับซ้อนใช้ได้เฉพาะกับการคำนวณอนุพันธ์อันดับแรกเท่านั้น การขยายความข้างต้นสำหรับการคำนวณอนุพันธ์ทุกอันดับใช้จำนวนเชิงซ้อนหลายตัวส่งผลให้ได้อนุพันธ์เชิงซ้อนหลายตัว[ 15 ] [ 16 ] [ 17 ] โดยที่แทนหน่วยจินตนาการเชิงซ้อนหลายตัว ตัว ดำเนินการจะดึงส่วนประกอบที่ ของจำนวนเชิงซ้อนหลายตัวระดับเช่นดึงส่วนประกอบจริง และดึงส่วนประกอบสุดท้ายที่ "เป็นจินตนาการมากที่สุด" วิธีนี้สามารถนำไปใช้กับอนุพันธ์แบบผสมได้ เช่น สำหรับอนุพันธ์อันดับสอง

มีการใช้งานการคำนวณเลขคณิตเชิงซ้อนหลายตัวด้วยภาษา C++ [ 18 ]

โดยทั่วไป อนุพันธ์ลำดับใดๆ ก็สามารถคำนวณได้โดยใช้สูตรอินทิกรัลของ Cauchy : [ 19 ] โดยที่การอินทิเกรตจะทำในเชิงตัวเลข

การใช้ตัวแปรเชิงซ้อนสำหรับการหาอนุพันธ์เชิงตัวเลขเริ่มต้นโดย Lyness และ Moler ในปี พ.ศ. 2510 [ 20 ]อัลกอริทึมของพวกเขาสามารถนำไปใช้กับอนุพันธ์อันดับสูงได้

Abate และ Dubner ได้พัฒนาวิธีการที่ใช้การผกผันเชิงตัวเลขของการแปลงลาปลา สเชิงซ้อน [ 21 ] Fornberg ได้พัฒนาอัลกอริทึมที่สามารถใช้งานได้โดยไม่ต้องมีความรู้เกี่ยวกับวิธีการหรือลักษณะของฟังก์ชัน[ 4 ]

การหาปริพันธ์เชิงอนุพันธ์

การประมาณค่าเชิงอนุพันธ์โดยใช้ผลรวมถ่วงน้ำหนักของค่าฟังก์ชันเรียกว่าการประมาณค่าเชิงอนุพันธ์[ 22 ] [ 23 ]การประมาณค่าเชิงอนุพันธ์มีความสำคัญในทางปฏิบัติเพราะช่วยให้สามารถคำนวณอนุพันธ์จากข้อมูลที่มีสัญญาณรบกวนได้ชื่อนี้มาจากการเปรียบเทียบกับquadratureซึ่งหมายถึงการอิน ทิเกรตเชิงตัวเลข โดยใช้ผลรวมถ่วงน้ำหนักในวิธีการต่างๆ เช่นกฎของซิมป์สันหรือกฎสี่เหลี่ยมคางหมูมีวิธีการต่างๆ มากมายในการกำหนดสัมประสิทธิ์น้ำหนัก เช่นตัวกรอง Savitzky–Golayการประมาณค่าเชิงอนุพันธ์ใช้ในการแก้สมการเชิงอนุพันธ์ย่อยนอกจากนี้ยังมีวิธีการอื่นๆ ในการคำนวณอนุพันธ์จากข้อมูลที่มีสัญญาณรบกวน[ 24 ]

ดูเพิ่มเติม

  • การหาอนุพันธ์เชิงตัวเลขจาก wolfram.com
  • รูทีนการหาอนุพันธ์เชิงตัวเลขของไลบรารี NAG
  • Boost. คณิตศาสตร์การหาอนุพันธ์เชิงตัวเลข รวมถึงการหาอนุพันธ์แบบจำกัด และการหาอนุพันธ์แบบขั้นซับซ้อน
  • การหาความแตกต่างโดยไม่มีความแตกต่างโดยNicholas Higham , SIAM News
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Numerical_differentiation&oldid=1352119237 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ การหาอนุพันธ์เชิงตัวเลข

ในการวิเคราะห์เชิง ตัวเลข อัลกอริทึมการหา อนุพันธ์ เชิงตัวเลข จะประมาณค่า อนุพันธ์ของฟังก์ชันทางคณิตศาสตร์หรือซับรูทีนโดยใช้ค่าของฟังก์ชันนั้น...

ความแตกต่างจำกัด

วิธีที่ง่ายที่สุดคือการใช้การประมาณค่าความแตกต่างจำกัด

ขนาดขั้น

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

ตัวอย่าง

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