Tuesday, 15 April 2014

c - End condition for precision integration loop -


मैं त्रैपियम नियम का उपयोग करते हुए फ़ंक्शन 1 / ((1 + x ^ 2) x ^ 0.5) को एकीकृत करने का प्रयास कर रहा हूं । मुझे सटीक होने की आवश्यकता है जितना संभव हो सके, इसलिए मैं स्ट्रिप्स की संख्या बढ़ाना चाहता हूं, जब तक कि कंप्यूटर लगातार एन के लिए कुल के बीच में कोई बदलाव नहीं कर सकता। हालांकि, अंत की स्थिति वर्तमान में काम नहीं कर रही है, जिससे निरंतर एकीकरण । क्या किसी के पास मेरे वर्तमान कोड से बेहतर सुझाव हैं?

बहुत धन्यवाद, बेथ

  # include & lt; stdio.h & gt; # शामिल करें & lt; math.h & gt; # शामिल करें & lt; float.h & gt; डबल इंटर (डबल एक्स, डबल एच, डबल वाई, डबल एन, डबल कुल) {कुल = कुल + 0.5 * (1 / ((1 + पाउ (एक्स, 2)) * एसक्यूआरटी (एक्स)); एक्स = एक्स + ज; जबकि (एक्स एंड एलटी; वाई) {कुल = कुल + (1 / ((1 + पाउ (एक्स, 2)) * एसक्यूआरटी (एक्स))); एक्स = एक्स + ज; // printf ("x -% .16lf \ n", x); } कुल = कुल + 0.5 * (1 / ((1 + पाउ (एक्स, 2)) * एसक्यूआरटी (एक्स))); कुल = कुल * ज; // printf ("टी -% एलएफ \ n", कुल); कुल वापसी; } मुख्य () {डबल एक्स, वाई, कुल, एच, मान, नया मूल्य, एफ, एन; पूर्णांक; एक्स = 0.1; y = 1000; कुल = 0; एन = 1000; खत्म = 0; मूल्य = 0; जबकि (समाप्त == 0) {h = (y-x) / (एन -1); NEWVALUE = अंतर (एक्स, ज, वाई, एन, कुल); Printf ("h -% 16lf \ n", h); प्रिंटफ़ ("एन -%। 16 एलएफ \ n", एन); Printf ("नया मान% .16lf \ n", newvalue); Printf ("c -%। 16lf \ n", मान); अगर (मान == नया मूल्य) {finish = 1; Printf ("खत्म-% d \ n", समाप्त); } Else {value = newvalue; NEWVALUE = NEWVALUE -3; एन = एन + 1000; Printf ("newvalue-% lf \ n", newvalue); Printf ("मान-% एलएफ \ n", मान); }} Printf ("% lf \ n", मान); }  

यदि आप अपने संख्यात्मक एकीकरण का स्वत: परिशोधन बनाना चाहते हैं, तो एक तकनीक है अपने एकीकरण के रिश्तेदार अभिसरण को देखने के लिए।

  डबल पिछला = 0; डबल चालू = अंतर (एक्स, (y-x) / (N-1), y, एन, कुल); // कुछ आधार रेखा का समाधान करें {N = N + 1000; एच = (वाई-एक्स) / (एन -1); पिछले = चालू; वर्तमान = अंतर (एक्स, एच, वाई, एन, कुल); } जबकि (पेट (वर्तमान - पिछले) / वर्तमान> 0.001);  

आपके अनुमान में 0.1% से कम रिलेशियम का पालन करने के बाद यह कोड बंद हो जाएगा। डिक्रेसिंग 0.001 आपकी सटीकता को प्रभावी ढंग से बढ़ाएगा आमतौर पर डबल्स की तुलना करने का सबसे अच्छा तरीका एक सहिष्णुता जांच की तरह होता है:

  abs (a - b) & lt; कश्मीर  

जहां k सटीकता के लिए आप प्राप्त करना चाहते हैं, उसके कुछ कारक हैं।


No comments:

Post a Comment