रिमैन सम्स का उपयोग करते हुए निश्चित निश्चित अभिन्न


19

बाएँ और दाएँ Riemann रकम के लिए अनुमान पर आधारित हैं निश्चित अभिन्न । बेशक, गणित में हमें बहुत सटीक होने की आवश्यकता है, इसलिए हम उन्हें कई उप विभाजनों के साथ गणना करने का लक्ष्य रखते हैं जो अनंत तक पहुंचते हैं, लेकिन इस चुनौती के प्रयोजनों के लिए इसकी आवश्यकता नहीं है। आप के बजाय कम से कम प्रोग्राम लिखने के लिए इनपुट लेने और से किसी के माध्यम से उत्पादन प्रदान की कोशिश करनी चाहिए डिफ़ॉल्ट तरीकों से किसी में, प्रोग्रामिंग भाषा है, जो निम्नलिखित है:

कार्य

यह देखते हुए दो परिमेय संख्याओं और (निश्चित अभिन्न की सीमा), एक सकारात्मक पूर्णांक , एक बूलियन का प्रतिनिधित्व करने दाएँ से बाएँ / और एक ब्लैक बॉक्स समारोह , बाएं या दाएं Riemann योग की गणना (के आधार पर ) की , समान का उपयोग करते हुए ।n (एक्स)एक्सn

मैं / हे चश्मा

  • और तर्कसंगत / फ्लोटिंग-पॉइंट संख्या या भिन्न हो सकते हैं।

  • को किसी भी दो अलग और सुसंगत मूल्यों द्वारा दर्शाया जा सकता है, लेकिन कृपया ध्यान रखें कि आपको इनपुट के रूप में पूर्ण या आंशिक फ़ंक्शन लेने की अनुमति नहीं है

  • एक ब्लैक-बॉक्स फ़ंक्शन है। ऊपर दिए गए मेटा उत्तर का हवाला देते हुए, ब्लैक-बॉक्स-फ़ंक्शंस की सामग्री (अर्थात कोड) को एक्सेस नहीं किया जा सकता है, आप उन्हें केवल कॉल कर सकते हैं (यदि लागू हो तो तर्कों को पारित करते हुए) और उनके आउटपुट का निरीक्षण करें । यदि आवश्यक हो, तो कृपया अपनी भाषा का उपयोग करने वाले वाक्यविन्यास के बारे में आवश्यक जानकारी शामिल करें, ताकि हम आपके सबमिशन का परीक्षण कर सकें।

आउटपुट के रूप में, आपको एक रमन / फ़्लोटिंग-पॉइंट / अंश प्रदान करना चाहिए, जो आपके लिए पूछे गए रिमैन योग का प्रतिनिधित्व करता है। जैसा कि अतीत में चर्चा की गई है , फ़्लोटिंग-पॉइंट इंप्रेशन को अनदेखा किया जा सकता है, जब तक कि आपका आउटपुट कम से कम तीन दशमलव स्थानों पर सटीक होता है जब निकटतम कई 1/1000 के लिए गोल किया जाता है (जैसे 1.4529999इसके बजाय ठीक है 1.453)।

गणित के चश्मे

  • को और बीच निरंतर रहने की गारंटी है (कोई कूदता नहीं, कोई छेद नहीं, कोई ऊर्ध्वाधर असममित नहीं)।

  • तीन संभावित मामले हैं जिन्हें आपको संभालना है: (परिणाम या उसके समतुल्य होना चाहिए ), या ।=0<>

  • यदि , अभिन्न अपने संकेत को बदलता है। इसके अलावा, इस मामले में अभिन्न की सही भावना की ओर ।b<aa

  • ग्राफ़ के अंतर्गत आने वाले क्षेत्र नकारात्मक हैं और ग्राफ़ के ऊपर वाले क्षेत्र सकारात्मक हैं।

उदाहरण / परीक्षण मामले

संकल्प इष्टतम नहीं है, क्योंकि मुझे उन्हें थोड़ा कम करना पड़ा, लेकिन वे अभी भी पढ़ने योग्य हैं।

  • f(x)=2x+1,a=5,b=13,n=4 , k = सही:

    2x + 1

    परिणाम , क्योंकि प्रत्येक आयत की चौड़ाई और संगत है। हाइट्स ।152+192+232+272=168|ba|n=2f(7)=15,f(9)=19,f(11)=23,f(13)=27

  • f(x)=x,a=1,b=2.5,n=3 , k = बायां:

    वर्गमूल

    आउटपुट होना चाहिए ।1.8194792169

  • f(x)=3x+4+x25,a=12.5,b=2.5,n=10 , k = सही:

    -3x + 4 + 1 / 5x ^ 2

    अपेक्षित आउटपुट मान है , क्योंकि अभिन्न परिवर्तन संकेत करते हैं जब सीमाओं ( ) को फ़्लिप करते हैं(4.055.456.457.057.257.056.455.454.052.25)=55.5b<a

  • f(x)=94x+2x27,a=0,b=15,n=3 , k = left:

    9-4x + 2 / 7x ^ 2

    हमारे रीमैन योग की गणना करने पर, हमें ।१३.५७१४२८५७१५

  • f(x)=6,=1,=4,n=2 , k = सही - आउटपुट: ।18

  • (एक्स)=एक्स7+165एक्स+1,=7,=7,n=4 , k = left - आउटपुट: ।0

  • (एक्स)=एक्सपाप(एक्स-1),=0,=1,n=50 , k = दायाँ - आउटपुट: । ध्यान दें कि साइन यहां रेडियन का उपयोग करता है, लेकिन इसके बजाय डिग्री का उपयोग करने के लिए स्वतंत्र महसूस करें।.385723952885505


3
विशेष धन्यवाद: इस चुनौती को सैंडबॉक्स में पोस्ट किया गया है , जहां इसे user202729 , AdmBorkBork और Leaky Nun से बहुमूल्य प्रतिक्रिया मिली ।
श्री एक्सकोडर

मुझे यकीन है कि उम्मीद है कि यहां समाधान कई वर्षों के Calc I छात्रों की मदद करेंगे ...
Giuseppe

f(x) = x * sin(1 / x); a = 0; b = 1; n = 50; k = right — Output: 0.385723952885505. Note that sine uses radians here, but feel free to use degrees instead.अब वह f (x) एक ब्लैक बॉक्स है, यह क्यों मायने रखता है?
l4m2

@ l4m2 यह ज्यादा मायने नहीं रखता है, बस लोगों को यह बताना चाहता था कि उन्हें ऐसी चीजों के बारे में चिंता नहीं करनी चाहिए।
श्री एक्सकोडर

@Giuseppe नहीं। यहां कार्यक्रमों के तरीके हाथ से चलने वाले कैलकुलेटर के तरीकों से भी बदतर हैं। [अभी कह रहे हैं]
user202729

जवाबों:


8

आर , 69 65 63 57 बाइट्स

function(a,b,n,k,f,w=(b-a)/n)sum(sapply(a+w*(1:n-k),f))*w

इसे ऑनलाइन आज़माएं!

k=FALSEदाहिने हाथ के लिए ले जाता है , हालांकि TIO लिंक में अब "बाएं" और उपयोग के आसानी के लिए "दाएं" उपनाम शामिल हैं।

a+w*(1:n-k) उचित बाएँ या दाएँ हाथ के अंक उत्पन्न करता है।

फिर परिणाम के प्रत्येक तत्व sapplyपर लागू होता fहै, जिसे हम परिणाम प्राप्त करने के sumलिए अंतराल चौड़ाई द्वारा ऊपर और गुणा करते हैं (b-a)/n। यह अंतिम भी बड़े करीने से हमारे द्वारा किए जाने वाले किसी भी संकेत मुद्दों का ध्यान रखता है।


4

SNOBOL4 (CSNOBOL4) , 127 बाइट्स

	DEFINE('R(a,b,n,k,p)')
R	l =(b - a) / n
	i =1
l	R =R + eval(p '(a + l * (i - k))')
	i =lt(i,n) i + 1	:s(l)
	R =R * l :(return)

इसे ऑनलाइन आज़माएं!

यह मानते हुए कि समारोह pकहीं परिभाषित किया गया है, इस लेता है a,b,n,k,(name of p)के साथ, k=0सही के लिए और l=1छोड़ दिया करने के लिए।

कैटस्पॉ का SNOBOL4+समर्थन REALकरता है, लेकिन इसमें बिल्ड ट्रिगर कार्य नहीं है। हालाँकि, मुझे लगता है कि sinएक टेलर श्रृंखला का उपयोग करके एक उचित कार्य कर सकता है।

मुझे 100% यकीन नहीं है कि यह SNOBOL में एक ब्लैक-बॉक्स फ़ंक्शन को पारित करने का "सही" तरीका है (जो, मेरी जानकारी के लिए, प्रथम श्रेणी के कार्य नहीं हैं), लेकिन यह मेरे लिए उचित-ईश लगता है।

मुझे लगता है कि मान लिया गया है कि फ़ंक्शन fकम होगा, जैसा कि रेखा lहो सकती है

l	R =R + f(a + l * (i - k))

लेकिन फिर इसे एक तर्क के रूप में पारित नहीं किया जाता है, जो "धोखा" की तरह महसूस करता है।

ध्यान दें कि TIO लिंक में स्टेटमेंट के :(e)बाद है DEFINE, जो कि कोड वास्तव में ठीक से चलेगा।


4

जूलिया 0.6 , 50 बाइट्स

R(f,a,b,n,k)=(c=(b-a)/n;sum(f.(a+[k:n+k-1...]c))c)

इसे ऑनलाइन आज़माएं!

एक सामान्यीकृत श्रेणी का निर्माण किया जाता है, एक वेक्टर में एकत्र किया जाता है और फिर स्केल किया जाता है। एक वेक्टर का उपयोग करके सीमा को इकट्ठा करना [X...]आवश्यक है inexact errorजब सीमा को 0 से सीधे गुणा करने से बचने के लिए a=b। इसी तरह, जब किसी सीमा का निर्माण सीधे तौर पर :या range()तो संभव नहीं है a=b

कश्मीर के उपयोग बहुत के समाधान के लिए इसी तरह की है Guiseppe साथ, k=1के लिए rightऔर k=0के लिए left


f.vectorizes fअपने तर्क (रों) से अधिक?
ग्यूसेप

@ गुइसेप: बिल्कुल। f.के तत्व के लिहाज से आवेदन है f
ल्यूक

2

हास्केल , 73 67 बाइट्स

सुझाव के लिए H.PWiz और ब्रूस फोर्ट के लिए धन्यवाद!

(f&a)b n k|d<-(b-a)/realToFrac n=d*sum(f<$>take n(drop k[a,a+d..]))

इसे ऑनलाइन आज़माएं!

बहुत ही सीधा साधा समाधान।

kहै 0छोड़ के लिए और 1अधिकार के लिए।


1
अपने n ले जा रहे हैं, तो आप तक जाने के लिए की जरूरत नहीं हैb
H.PWiz

2

पायथन 2 , 99 94 बाइट्स

थोड़ा सा भोला हल।

def R(f,a,b,n,k):s=cmp(b,a);d=s*(b-a)/n;return s*sum(d*f([0,a,b][s]+i*d)for i in range(k,n+k))

इसे ऑनलाइन आज़माएं!



किसी कारण से मुझे लगा कि हमें पूर्णांक इनपुट को संभालना होगा। धन्यवाद।
mbomb007


1

जेली , 21 बाइट्स

ƓḶ+Ɠ÷
IḢ×¢A+ṂɠvЀÆm×I

इसे ऑनलाइन आज़माएं!

a,bतर्कों से लें , और

n
right
f

स्टड से।


यदि आप जेली से परिचित नहीं हैं, तो आप ब्लैक बॉक्स फ़ंक्शन लिखने के लिए पायथन का उपयोग कर सकते हैं f:

f (x) = 2x + 1 ; a = 5; बी = 13; n = 4; के = सही

f (x) = √x ; a = 1; बी = 2.5; n = 3; के = छोड़ दिया

f (x) = -3x + 4 + 1/5 * x 2 ; = 12.5; बी = 2.5; n = 10; के = सही

f (x) = 9 - 4x + 2/7 * x 2 ; a = 0; बी = 15; n = 3; के = छोड़ दिया

f (x) = 6 ; a = 1; बी = 4; n = 2; के = सही

f (x) = x * sin (1 / x) ; a = 0; बी = 1; n = 50; के = सही


स्पष्टीकरण:


ƓḶ+Ɠ÷     Helper niladic link.
Ɠ         First line from stdin. (n). Assume n = 4.
 Ḷ        Lowered range (unlength). Get [0, 1, 2, 3].
  +Ɠ      Add second line from stdin (k). Assume k = 1 (right).
            Get [1, 2, 3, 4].
    ÷     Divide by (n). Get [0.25,0.5,0.75,1].

IḢ×¢A+ṂɠvЀÆm×I   Main monadic link. Take input `[a, b]`, assume `a=2,b=6`.
IḢ                `a-b`. Get `-4`.
  ×¢              Multiply by value of niladic link above. Get `[-1,-2,-3,-4]`.
    A             Absolute value. Get `[1,2,3,4]`.
     +Ṃ           Add min(a, b) = 2. Get `[3,4,5,6]`.
        vЀ       For each number, evaluate with...
       ɠ            input line from stdin.
           Æm     Arithmetic mean.
             ×I   Multiply by `a-b`.


1

पर्ल 6 , 65 बाइट्स

{my \d=($^b-$^a)/$^n;sum ($a,*+d...*)[($^k+^0>d)+ ^$n]».&^f X*d}

इसे ऑनलाइन आज़माएं!

अपेक्षाकृत सरल। केवल जटिलता ही a > bमामले को संभाल रही है, जो मैं इनपुट झंडे के $^kसाथ xor-ing करता हूं 0 > d, जो कि जब यह निष्क्रिय करता है a > b


0

APL (Dyalog Classic) , 37 बाइट्स

{(a b n k)←⍵⋄ln÷⍨b-al×+/⍺⍺a+l×k+⍳n}

इसे ऑनलाइन आज़माएं!

एपीएल नार, 37 वर्ण

फ़ंक्शन में बाएं फ़ंक्शन में तर्क होता है, दाएं संख्यात्मक तर्क में असामान्य k। प्रश्न k = में यहाँ छोड़ दिया गया है, जिसका अर्थ है k = left1; k = यहीं इसका अर्थ है k = 0। परीक्षा:

  f←{(a b n k)←⍵⋄ln÷⍨b-al×+/⍺⍺a+l×k+⍳n}
  {1+2×⍵} f 5 13 4 0
168
  {√⍵} f 1 2.5 3 ¯1
1.819479217
  {4+(¯3×⍵)+0.2×⍵×⍵} f 12.5 2.5 10 0
55.5
  {9+(¯4×⍵)+7÷⍨2×⍵×⍵} f 0 15 3 ¯1
13.57142857
  {6-0×⍵} f 1 4 2 0
18
  {1+(165×⍵)+⍵*7} f 7 7 4 ¯1
0
  {⍵×1○÷⍵} f 0 1 50 0
0.3857239529

प्रस्तुतियाँ बाइट्स में गिनी जाती हैं, वर्णों में नहीं। मुझे याद नहीं है कि NARS का कस्टम कोड पेज है (इसलिए यह 37 बाइट्स भी होगा) या UTF16 का उपयोग करता है।
उरईल

@ यूरील यह 37 बाइट्स है ड्यालोग एपीएल क्लासिक लिंक का पालन करें; संभवतः Nars Apl के लिए 35x2 बाइट्स ...
RosLuP

तो आप इसे NARS क्यों लिखते हैं? क्या NARS में भी dfnss हैं? वैसे आप 35 बाइट्स के लिए पहले माता-पिता को छोड़ सकते हैं
ऊरीएल

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