วิธีการหลีกเลี่ยงการยกเลิกหายนะในฟังก์ชั่นหลาม?


13

ฉันมีปัญหาในการใช้ฟังก์ชันเป็นตัวเลข มันทนทุกข์ทรมานจากความจริงที่ว่าที่ค่าอินพุตขนาดใหญ่ผลที่ได้คือจำนวนมากครั้งจำนวนมากขนาดเล็ก ฉันไม่แน่ใจว่าการยกเลิกภัยพิบัติเป็นคำที่ถูกต้องหรือไม่ดังนั้นโปรดแก้ไขให้ถูกต้องถ้าเป็นเช่นนั้น หลักฐานของสิ่งที่ผิดพลาด:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันจะหลีกเลี่ยงการแกว่งและการกำหนด 0.0 สำหรับอินพุตขนาดใหญ่ 6 ได้อย่างไร

นี่คือหน้าที่ของฉัน:

import numpy as np

def func(x):
    t = np.exp(-np.pi*x)
    return 1/t*(1-np.sqrt(1-t**2))

คำตอบ:


31

t1+1t2.
11t21+1t2

ป้อนคำอธิบายรูปภาพที่นี่


Fantastic! คุณช่วยแนะนำหนังสือเล่มหนึ่งได้ไหมว่าเทคนิคเหล่านี้มีการอธิบายไว้?
โพล

2
@ แจ็ค "ความแม่นยำและความเสถียรของอัลกอริธึมเชิงตัวเลข" เป็นหนังสือระดับบนที่ดี ตำราเรียนเบื้องต้นจะพูดถึงเรื่องนี้เช่นกัน
คิริลล์

ฉันต้องการทราบว่าคุณใช้ Wolfram Mathematicaเพื่อวาดกราฟนี้หรือไม่ THX :)
xyz

คุณรู้หรือไม่ว่ามีการอ้างอิงใดที่รวบรวมและ / หรือพูดคุยกลอุบายที่คล้ายกันเพื่อเขียนนิพจน์ทางคณิตศาสตร์ด้วยวิธีการทางคณิตศาสตร์ที่เทียบเท่าซึ่งช่วยลดการสูญเสียความสำคัญ? ฉันอ่านหนังสือโดย Higham แต่การสนทนาเป็นเรื่องทั่วไปและทุกบทในภายหลังเป็นเรื่องเกี่ยวกับพีชคณิตเชิงเส้น (ซึ่งไม่ใช่หัวข้อของฉันในขณะนี้)
becko

@becko มันค่อนข้างเฉพาะกิจในประสบการณ์ของฉัน มันง่ายกว่ามากถ้าคุณมีวิธีทดสอบสูตรของคุณด้วยคำตอบที่ถูกต้อง (แม้ว่าคุณจะสร้างสูตรด้วยเลขคณิตที่มีความแม่นยำเป็นพิเศษ) เพื่อที่คุณจะไม่ได้มองหาความไม่แน่นอนเชิงตัวเลข และถ้ามันใช้งานได้กับอินพุตที่ทราบมาทั้งหมดก็ไม่มีปัญหาที่แท้จริงว่ามีความไม่แน่นอนเชิงตัวเลขอยู่ที่ใดก็ได้หรือไม่
คิริลล์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.