संचालन का क्रम, संख्यात्मक एल्गोरिदम


10

मैंने वो पढ़ा है

(1) अच्छी तरह से वातानुकूलित होने से पहले बीमार वातानुकूलित संचालन किया जाना चाहिए।

एक उदाहरण के रूप में, एक को रूप में गणना करनी चाहिए क्योंकि घटाव बीमार है जबकि गुणन नहीं है।xz−yz(x−y)z

हालाँकि, दोनों एल्गोरिदम के पहले-क्रम त्रुटि विश्लेषण से पता चलता है कि वे केवल तीन (*) के एक कारक से भिन्न होते हैं, और मैं यह नहीं देखता कि कोई इसे कथन (1) के लिए सामान्य क्यों कर सकता है, और न ही मैं सहज रूप से इसके महत्व को समझ सकता हूं कार्रवाई के आदेश। क्या आपको लगता है कि कथन (1) एक स्वीकृत नियम है, और क्या आपके पास इसके लिए अन्य स्पष्टीकरण हैं?

* - अधिक विशेष रूप से, पहले संस्करण में एक रिश्तेदार त्रुटि है जो कि बाध्य है

eps+3|x|+|y||x|−|y|eps
जबकि दूसरे संस्करण की सापेक्ष त्रुटि से घिरा हुआ है

3eps+|x|+|y||x|−|y|eps

जहां मशीन सटीक है।eps

यह विश्लेषण इस धारणा पर आधारित है कि -th इंटरमीडिएट का परिणाम (राउंडिंग त्रुटियों के कारण से गुणा किया जाता है , जहां द्वारा रचित यादृच्छिक चर हैं । "प्रथम-क्रम" का अर्थ है कि उच्च-क्रम वाले शब्द, जैसे , उपेक्षित हैं।i(1+εi)εiepsϵiϵjx


तुमने ऐसा कहां पढ़ा?
— डेविड केचेसन

मेरे लेक्चर नोट्स में
— बनानैक

जवाबों:


8

द्वारा आइए निरूपित (मैं विभाजन ऑपरेटर की परिक्रमा संस्करण प्राप्त करने की कोशिश आलसी था) फ्लोटिंग प्वाइंट सटीक गुणा (के अनुरूप ), इसके अलावा ( (), और घटाव ) क्रमशः। हम मान लेंगे (IEEE-754) कि उन सभी के लिए जहाँ मशीन कारण सापेक्ष त्रुटि पर एक ऊपरी बाउंड देने वाली मशीन है। हम निम्नलिखित लेम्मा (सभी को ग्रहण करते हुए भी उपयोग करेंगे , और बहुत बड़ी नहीं है) जिसे आसानी से सिद्ध किया जा सकता है: × + - [ एक्स ⊕ y ] = ( x + y ) ( 1 + δ ⊕ ) ,⊗,⊕,⊖×+−ε हूँ एक सी एच | δ i | ≤ ε मीटर एक ग ज मी मी Π मैं = 1 ( 1 + δ मैं ) = 1 + θ ( मीटर ) ,

[x⊕y]=(x+y)(1+δ⊕),|δ⊕|≤ϵmach,
ϵmach|δi|≤ϵmachm
∏i=1m(1+δi)=1+θ(m),|θ(m)|≤mϵmach1−mϵmach

चलो परिभाषित सच समारोह कि वास्तविक संख्या पर चल रही है के रूप मेंx , y , zfx,y,z

f(x,y,z)=(x×z)−(y×z)

और IEEE- संगत फ्लोटिंग-पॉइंट अंकगणित में फ़ंक्शन कार्यान्वयन के दो संस्करण जैसे कि और जो फ़्लोटिंग-पॉइंट अभ्यावेदन , इस प्रकार है: ~ च 2 ~ एक्स =एक्स(1+δएक्स), ~ y , ~ zf1~f2~x~=x(1+δx),y~,z~

f1~(x~,y~,z~)=(x~⊗z~)⊖(y~⊗z~),

f2~(x~,y~,z~)=(x~⊖y~)⊗z~.

लिए त्रुटि विश्लेषण :f1~

f1~=((x(1+δx)×z(1+δz))(1+δ⊗xz)⏟(x~⊗z~)−(y(1+δy)×z(1+δz))(1+δ⊗yz)⏟(y~⊗z~))(1+δ⊖)=xz(1+δx)(1+δz)(1+δ⊗xz)(1+δ⊖)−yz(1+δy)(1+δz)(1+δ⊗yz)(1+δ⊖)=xz(1+θxz,1)−yz(1+θyz,1).
यहाँ, ।|θxz,1|,|θyz,1|≤4ϵmach1−4ϵmach

इसी तरह, यहां,। ।f2~

f2~=(((x(1+δx)−y(1+δy)(1+δ⊖xy))×(z(1+δz)))(1+δ⊗)=xz(1+δx)(1+δz)(1+δ⊖xy)(1+δ⊗)−yz(1+δy)(1+δz)(1+δ⊖xy)(1+δ⊗)=xz(1+θx,2)−yz(1+θy,2).
|θx,2|,|θy,2|≤4ϵmach1−4ϵmach

इसलिए, दोनों और हमें एक ही प्रकार के भाव मिले, इस प्रकार मैं यह नहीं देखता कि एक संख्यात्मक दृष्टिकोण से दूसरे कार्यान्वयन को क्यों पसंद किया जाएगा (इस तथ्य को छोड़कर कि " ) की तुलना में केवल 2 फ़्लोटिंग-पॉइंट ऑपरेशन करता है ।f1~f2~f2~f1~

सापेक्ष त्रुटि की गणना करने से पता चलेगा, कि समस्या इस तथ्य से आती है कि और बहुत करीब ( रद्द ) हो सकते हैं।xy

|f1~−f||f|=|xz+xzθxz,1−yz−yzθyz,1−(xz−yz)||xz−yz|=|xθxz,1−yθyz,1||x−y|≤|x|+|y||x−y|4ϵmach1−4ϵmach,
|f2~−f||f|=|xz+xzθx,2−yz−yzθy,2−(xz−yz)||xz−yz|=|xθx,2−yθy,2||x−y|≤|x|+|y||x−y|4ϵmach1−4ϵmach.

आधार पर दो कार्यान्वयनों में से थोड़ा अंतर मामूली रूप से बेहतर या बदतर बना सकता है । हालांकि, मुझे संदेह है कि इसका कोई महत्व हो सकता है। परिणाम पूरी तरह से समझ में आता है, क्योंकि कोई फर्क नहीं पड़ता है, अगर आपको गणना करना है , जब और मानों में काफी करीब हैं (आपके द्वारा काम करने वाले परिशुद्धता के लिए) फ्लोटिंग-पॉइंट अंकगणित का उपयोग करके, कोई स्केलिंग आपकी मदद नहीं करेगी: आप पहले से ही परेशानी में हैं।x , y , z ( x - y ) x yθx,y,z(x−y)xy

नायब: उपरोक्त सभी चर्चाओं में कोई अतिप्रवाह या अंतर्प्रवाह नहीं है, अर्थात , सभी सामान्य फ्लोटिंग-पॉइंट नंबरों का सेट है।एफ 0x,y,z,f(x,y,z)∈F0F0

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.