रूपांतरित होने करता है


15

मैंने सुना है कि जब कोई संख्यात्मक रूप से अभिन्न रूप से प्रयास कर रहा होता है

0f(x)J0(x)dx

साथ चिकनी और अच्छी तरह से व्यवहार (जैसे अत्यधिक, oscillatory, व्युत्क्रमणीय ही नहीं आदि), तो यह मदद मिलेगी सटीकता के रूप में यह पुनर्लेखन के लिएf(x)

1π0π0f(x)cos(xsinθ)dxdθ

और आंतरिक अभिन्न रूप से पहले प्रदर्शन करते हैं। मैं कोई कारण नहीं देख सकता कि मुझे यह काम करने की उम्मीद करनी चाहिए, लेकिन फिर एक संख्यात्मक विधि की सटीकता शायद ही कभी स्पष्ट हो।

बेशक, मुझे पता है कि वास्तव में ऐसा करने का सबसे अच्छा तरीका यह है कि इस तरह की थरथरानवाला अभिन्न अंग के लिए एक विधि का उपयोग किया जाए, लेकिन जिज्ञासा के लिए, मुझे लगता है कि मैं खुद को कुछ द्विघात नियम का उपयोग करने के लिए सीमित करता हूं। क्या कोई इस बात की पुष्टि या खंडन कर सकता है कि यह परिवर्तन अभिन्न की सटीकता में सुधार करता है? और / या मुझे यह समझाने वाले स्रोत की ओर इशारा करते हैं?


1
अधिक एकीकृत ... यह बेसल समारोह का अभिन्न परिभाषाओं में से एक है। 0θπ
डेविड जेड

4
है तो अपने प्रश्न: यह देखते हुए सामान्य सूत्री क्षेत्रकलन सूत्रों क्यू एन [ ] पर [ 0 , ) और क्यू एन π [ ] पर [ 0 , π ] , है क्यू एन एम [ NQN[][0,)QπN[][0,π] बदतर या की तुलना में बेहतर क्यू एम π [ क्यू एन [ ( एक्स )QNM[fJ0]QπM[QN[f(x)cos(xsinθ)]]
स्टेफानो एम

@StefanoM हाँ, यह सही है।
डेविड जेड

एफडब्ल्यूआईडब्ल्यू, ज़ीरोथ-ऑर्डर बेसेल फ़ंक्शन के मूल्यांकन के लिए सबसे कुशल तरीकों में से एक ट्रैपोज़ाइडल नियम है, जो एक अवधि में आवधिक पूर्णांक को एकीकृत करते हुए बहुत सटीक परिणाम देने के लिए अच्छी तरह से जाना जाता है (यहां तक ​​कि सामान्य मानक की तुलना में बेहतर है, गॉसियन क्वाडरेचर)। तो: यह मदद कर सकता है, यह नहीं हो सकता है।
जेएम

जवाबों:


3

मुझे नहीं लगता कि इससे कोई फर्क पड़ता है। आपको के अभिन्न अंग के लिए उच्च पर्याप्त चतुर्भुज चुनना होगा ताकि यह बेसेल फ़ंक्शन जे 0 के बराबर हो । मैंने नीचे दिए गए उदाहरण में ऑर्डर 20 चुना, लेकिन आपको हमेशा सटीक फ़ंक्शन और अंतराल के संबंध में अभिसरण करना होगा जिसे आप एकीकृत करते हैं। तब मैंने एन के साथ अभिसरण किया , एक्स पर अभिन्न के गौसियन चतुर्भुज का क्रम । मैंने f ( x ) = e - x x 2 चुना और डोमेन का उपयोग किया [ 0 , x अधिकतम ] , आप x अधिकतम बदल सकते हैंθJ0nxf(x)=exx2[0,xmax]xmaxनीचे। मुझे मिला:

 n      direct         rewritten
 1  0.770878284949  0.770878284949
 2  0.304480978430  0.304480978430
 3  0.356922151260  0.356922151260
 4  0.362576361509  0.362576361509
 5  0.362316789057  0.362316789057
 6  0.362314010897  0.362314010897
 7  0.362314071949  0.362314071949
 8  0.362314072182  0.362314072182
 9  0.362314072179  0.362314072179
10  0.362314072179  0.362314072179

n=9

यहाँ कोड है:

from scipy.integrate import fixed_quad
from scipy.special import jn
from numpy import exp, pi, sin, cos, array

def gauss(f, a, b, n):
    """Gauss quadrature"""
    return fixed_quad(f, a, b, n=n)[0]

def f(x):
    """Function f(x) to integrate"""
    return exp(-x) * x**2

xmax = 3.

print " n      direct         rewritten"
for n in range(1, 20):
    def inner(theta_array):
        return array([gauss(lambda x: f(x) * cos(x*sin(theta)), 0, xmax, n)
            for theta in theta_array])
    direct = gauss(lambda x: f(x) * jn(0, x), 0, xmax, n)
    rewritten = gauss(inner, 0, pi, 20) / pi
    print "%2d  %.12f  %.12f" % (n, direct, rewritten)

xmax[0,]f(x)rewritten = gauss(inner, 0, pi, 20) / pi


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