2012-06-08 16 views
11

मैं स्कूल के लिए एक एल्गोरिदम लागू कर रहा हूं और प्रोग्रामिंग में एक निश्चित अभिन्न अंग का प्रतिनिधित्व करने में समस्याएं आ रही हैं। उदाहरण के लिए मुझे पता है कि योग समीकरण निम्नलिखित उदाहरण के रूप में लागू किया जा सकता:
enter image description hereप्रोग्रामिंग में गणितीय समीकरणों को लागू करने में समस्याएं

संभालने y = f (x)

if(x==0){ 
    y=x+1; 
}else{ 
    for(int i = 0; i < n; i++){ 
     y = y + (x - 1); 
    } 
} 

कैसे मैं तो एक संख्यात्मक अभिन्न, उदाहरण के प्रतिनिधित्व होगा:
enter image description here
यहां लगाए गए समीकरण गणितीय अर्थ नहीं बना सकते हैं, लेकिन मेरा उद्देश्य एक स्कूल प्रोग्रामिंग प्रोजेक्ट के लिए सी # में समान समीकरणों को लागू करना है, जिसमें मुझे ऐसा करना है जिसमें मुझे एक एल्गोरिदम लागू करना है जिसमें इंटीग्रल शामिल हैं। मैं पढ़ रहा हूं कि सिम्पसन नियम जैसे निश्चित इंटीग्रल को हल करने के लिए संख्यात्मक तरीके हैं; क्या मुझे समीकरण को लागू करने के लिए इस तरह के तरीकों का उपयोग करना होगा या प्रोग्रामिंग में एक अभिन्न प्रतिनिधित्व किया जा सकता है जैसे लूप या उस तरह का कुछ?

+0

तो, आप एक फॉर्मूला पार्सर चाहते हैं? या आप गणित सूत्रों को कोड में बदलना सीखना चाहते हैं? – SQLMason

+0

मैं कोड – user1327159

+0

पर गणित सूत्रों को बदलना चाहता हूं प्रोग्रामिंग में आपका स्वागत है! जैसा कि नीचे बताया गया है, आपके पास अनंत राशि नहीं हो सकती है। आपको समस्या को हल करने और संबंधित कोड लिखने के लिए आप क्या कदम उठाएंगे इसके बारे में सोचना होगा। – SQLMason

उत्तर

1

यह इस बात पर निर्भर करता है कि आप क्या करने की कोशिश कर रहे हैं। यदि यह एक विशिष्ट कार्यान्वयन था तो आप फॉर्मूला को आसानी से एकीकृत कर सकते हैं x-1(x^2)/2 - x बन जाता है और उसके बाद अधिकतम मान न्यूनतम मान घटाता है।

वैकल्पिक रूप से इसे डीएक्स के लिए उचित चरण आकार चुनने के अनुमान के रूप में कार्यान्वित किया जा सकता है।

decimal dx=0.1; 

if(x==0){ 
    y=x+1; // could just return y=1 
}else{ 
    decimal tempY=0; 
    for(decimal i = 3; i <= 20; i+=dx){ 
     tempY += (i - 1); 
    } 
    // Either return tempY as decimal or 
    y= Convert.ToInt32(tempY); 
} 
1

शायद मुझे समझ में नहीं आता है लेकिन क्या आप जानना चाहते हैं कि संख्यात्मक रूप से एक अभिन्न गणना कैसे करें?

यदि ऐसा है, तो बहुत सारी विधियां हैं। आप से http://en.wikipedia.org/wiki/Numerical_integration

उदाहरण आप कर सकते हैं बस कार्य करें:: एक संक्षिप्त परिचय के लिए पर नज़र रखना

int f(int x) { 
    if(x == 0) { 
     y = x + 1; 
    }else{ 
     y = computeIntegral() 
    } 
    return y 
} 

जहां computeIntegral() एक समारोह आप एक अभिन्न गणना करने के लिए लिखने के लिए है।

लेकिन मुझे लगता है कि आपके फ़ंक्शन f (x) में कोई समस्या है क्योंकि यदि x शून्य f (x) केवल एक मान के रूप में नहीं है। शायद अभिन्न सीमा एक्स पर निर्भर होना चाहिए?

अंतिम टिप्पणी। यदि एक्स एक फ़्लोटिंग नंबर x == 0 की अनुशंसा नहीं की जाती है क्योंकि एक फ़्लोटिंग नंबर में गोल छिड़काव के कारण एक अद्वितीय द्विआधारी प्रतिनिधित्व नहीं होता है।

+0

मुझे पता है कि समीकरण समझ में नहीं आता है, जहां मैं केवल दो छवियों को वर्ड में खारिज कर देता हूं ताकि मैं यह जान सकूं कि मैं क्या करना चाहता हूं, लेकिन मेरा उद्देश्य यह जानने के लिए है कि एक अभिन्न अंग का प्रतिनिधित्व कैसे करें, यह आवश्यक नहीं है कि अभिन्न कोड में, लेकिन जो मैं समझ रहा हूं उससे यह है कि मुझे अभिन्न अंग का उपयोग करना होगा उदाहरण के लिए एक संख्यात्मक विधि, यदि मैं गलत कह रहा हूं कि आप क्या कह रहे थे – user1327159

+0

आईईईई एफपी मानकों की आवश्यकता है कि +0 और -0 बराबर की तुलना करें , इसलिए तथ्य यह है कि उनके पास अलग-अलग प्रतिनिधित्व हैं x == 0.0 एक अमान्य (या परेशानी) ऑपरेशन नहीं करते हैं। और इसका 'राउंडिंग ट्रंकेशन' –

+0

@HighPerformanceMark ठीक 'x == 0' के लिए ठीक नहीं है, लेकिन अधिक सामान्यतः यह दो फ़्लोटिंग नंबर की तुलना '==' के साथ करने के लिए समझ में आता है? – Ger

0

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

1

संख्यात्मक एकीकरण का विषय बड़ा है और अत्यधिक जटिल हो सकता है इसलिए मैं इसे इस उत्तर में शामिल नहीं करूँगा।

सिम्पसन का नियम सरल और अनुमानित (स्पेक्ट्रम के जटिल, सटीक या दोनों) के बजाय संख्यात्मक एकीकरण के लिए एक विधि है। इस विषय की अपनी जांच शुरू करने के लिए यह एक बुरा विकल्प नहीं है, क्योंकि यह समझना और प्रोग्राम करना बहुत आसान है। मुझे कोई संदेह नहीं है कि आप अपनी पसंदीदा प्रोग्रामिंग भाषा में सीधे the formula as presented on Wikipedia लागू कर सकते हैं।

अब, लूप और सिम्पसन के नियम को एकसाथ बांधने के लिए: अनुमान के सटीकता की सटीकता कि सिम्पसन का नियम एक अभिन्न के वास्तविक मूल्य को बनाता है, एकीकरण की सीमा (आपके उदाहरण में 3 और 20) एक साथ मिलते हैं। तो एक दृष्टिकोण जो आप ले सकते हैं वह एक लूप लिखना होगा जो 3 से 4 तक अभिन्न की गणना करता है, 4 से 5 तक ..., और अंत में उन्हें सभी जोड़ता है। एकीकरण क्षेत्रों का उत्पादन करता है, क्षेत्रों को एक साथ जोड़ता है (आमतौर पर) दूसरा, बड़ा, क्षेत्र।

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

संबंधित मुद्दे