अजगर समारोह में भयावह रद्द करने से कैसे बचें?


13

मुझे एक फ़ंक्शन को संख्यात्मक रूप से लागू करने में समस्या हो रही है। यह इस तथ्य से ग्रस्त है कि बड़े इनपुट मूल्यों पर परिणाम बहुत बड़ी संख्या में बहुत छोटी संख्या है। मुझे यकीन नहीं है कि अगर विपत्तिपूर्ण रद्दीकरण सही शब्द है तो कृपया मुझे सही करें अगर यह है। कुछ गड़बड़ होने के साक्ष्य:

यहाँ छवि विवरण दर्ज करें

मैं 6 के बड़े इनपुट के लिए दोलनों और 0.0 की अस्मिता से कैसे बच सकता हूं?

यहाँ मेरा कार्य है:

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

यहाँ छवि विवरण दर्ज करें


बहुत खुबस! क्या आप ऐसी किसी पुस्तक की अनुशंसा कर सकते हैं जो इन तकनीकों को रेखांकित किया गया हो?
द्विध्रुवीय

2
@Jack "न्यूमेरिकल एल्गोरिदम की सटीकता और स्थिरता" एक अच्छा ऊपरी स्तर की पुस्तक है। कोई भी परिचयात्मक पाठ्यपुस्तक इस पर भी चर्चा करेगी।
किरिल

मैं जानना चाहता हूँ कि क्या आप Wolfram का उपयोग करना चाहते मेथेमेटिका इस graph.THX :) आकर्षित करने के लिए
xyz

क्या आप गणितीय संदर्भों को गणितीय रूप से समतुल्य तरीके से लिखने के लिए समान संदर्भों को इकट्ठा करने और / या चर्चा करने के बारे में जानते हैं जो महत्व के नुकसान को कम करते हैं? मैंने हिगम द्वारा पुस्तक पढ़ी, लेकिन चर्चा सामान्य है और बाद के सभी अध्याय रैखिक बीजगणित (जो इस समय मेरा विषय नहीं है) के बारे में हैं।
बीकेओ जूल 22'19

@becko यह मेरे अनुभव में बहुत तदर्थ है। यह करना बहुत आसान है अगर आपके पास सही उत्तरों के साथ अपने सूत्र का परीक्षण करने का एक तरीका है (भले ही आप उन्हें केवल अतिरिक्त-सटीक अंकगणित के साथ उत्पन्न करते हैं), ताकि आप पहले असफल परीक्षण मामलों के बिना संख्यात्मक अस्थिरता की तलाश में न जाएं। और अगर यह सभी ज्ञात इनपुट के लिए काम करता है, तो कोई वास्तविक समस्या नहीं है कि संख्यात्मक अस्थिरता कहीं भी मौजूद है या नहीं।
किरिल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.