Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ प्रोग्राम: दोहरा समाकलन (Double Integration) की गणना

हमें चर x की निचली सीमा, चर x की ऊपरी सीमा, चर y की निचली सीमा, चर y की ऊपरी सीमा, x के लिए संबंधित चरण और y के लिए संबंधित चरण दिए गए हैं। कार्य दोहरा समाकलन उत्पन्न करना और परिणाम प्रदर्शित करना है।

उदाहरण

Input: steps for x = 1.2, steps for y = 0.54
       lower limit of x = 1.3, upper limit of x = 2.1
       lower limit of y = 1.0, upper limit for y = 2.1
Output: double integration is : 2.1

नीचे दिए गए प्रोग्राम में प्रयुक्त दृष्टिकोण:

  • x और y की ऊपरी और निचली सीमा के मान इनपुट करें, साथ ही x और y के लिए चरण इनपुट करें
  • x और y दोनों के लिए दोहरे समाकलन की गणना के लिए जिस विधि का उपयोग कर रहे हैं वह सिम्पसन 1/3 विधि है
  • आगे बढ़ने से पहले निम्नलिखित तालिका उत्पन्न करें

C++ प्रोग्राम: दोहरा समाकलन (Double Integration) की गणना

  • प्रत्येक पंक्ति पर सिम्पसन 1/3 नियम लागू करें पहले समाकलन के लिए और दोहरे समाकलन के लिए इसे दोहराएं
  • परिणाम प्रिंट करें

एल्गोरिदम

Start
Step 1 → समाकलन के लिए घात की गणना के लिए फंक्शन घोषित करें
    float fun(float x, float y)
    return pow(pow(x, 4) + pow(y, 5), 0.5)

Step 2 → दोहरे समाकलन मान ज्ञात करने के लिए फंक्शन घोषित करें
    float doubleIntegral(float step_x, float step_y, float lower_x, float upper_x, float lower_y, float upper_y)
    int n1, n2 घोषित करें
    float arr[50][50], arr_2[50], result घोषित करें
    n1 = (upper_x - lower_x) / step_x + 1 सेट करें
    n2 = (upper_y - lower_y) / step_y + 1 सेट करें
    लूप For int i = 0 से i < n1 तक ++i
        लूप For int j = 0 से j < n2 तक ++j
            arr[i][j] = fun(lower_x + i * step_x, lower_y + j * step_y) सेट करें
        End
    End
    लूप For int i = 0 से i < n1 तक ++i
        arr_2[i] = 0 सेट करें
        लूप For int j = 0 से j < n2 तक ++j
            IF (j == 0 || j == n2 - 1)
                arr_2[i] += arr[i][j] सेट करें
            End
            Else IF (j % 2 == 0)
                arr_2[i] += 2 * arr[i][j] सेट करें
            End
            Else
                arr_2[i] += 4 * arr[i][j] सेट करें
            End
        arr_2[i] *= (step_y / 3) सेट करें
    End
    result = 0 सेट करें
    लूप For int i = 0 से i < n1 तक ++i
        IF (i == 0 || i == n1 - 1)
            result += arr_2[i] सेट करें
        End
        Else IF (i % 2 == 0)
            result += 2 * arr_2[i] सेट करें
        End
        Else
            result += 4 * arr_2[i] सेट करें
        End
        result *= (step_x / 3) सेट करें
    End
    result लौटाएं

Step 2 → main() में
    float step_x = 1.2 घोषित करें  // x के लिए चरण
    float step_y = 0.54 घोषित करें  // y के लिए चरण
    float lower_x = 1.3 घोषित करें  // x की निचली सीमा
    float upper_x = 2.1 घोषित करें  // x की ऊपरी सीमा
    float lower_y = 1.0 घोषित करें  // y की निचली सीमा
    float upper_y = 2.1 घोषित करें  // y की ऊपरी सीमा
    (step_x, step_y, lower_x, upper_x, lower_y, upper_y) कॉल करें
Stop

उदाहरण

#include <bits/stdc++.h>
using namespace std;

float fun(float x, float y) {
    return pow(pow(x, 4) + pow(y, 5), 0.5);
}

// दोहरे समाकलन मान ज्ञात करने के लिए फंक्शन
float doubleIntegral(float step_x, float step_y, float lower_x, float upper_x, float lower_y, float upper_y) {
    int n1, n2;
    float arr[50][50], arr_2[50], result;
    n1 = (upper_x - lower_x) / step_x + 1;
    n2 = (upper_y - lower_y) / step_y + 1;
    for (int i = 0; i < n1; ++i) {
        for (int j = 0; j < n2; ++j) {
            arr[i][j] = fun(lower_x + i * step_x, lower_y + j * step_y);
        }
    }
    for (int i = 0; i < n1; ++i) {
        arr_2[i] = 0;
        for (int j = 0; j < n2; ++j) {
            if (j == 0 || j == n2 - 1)
                arr_2[i] += arr[i][j];
            else if (j % 2 == 0)
                arr_2[i] += 2 * arr[i][j];
            else
                arr_2[i] += 4 * arr[i][j];
        }
        arr_2[i] *= (step_y / 3);
    }
    result = 0;
    for (int i = 0; i < n1; ++i) {
        if (i == 0 || i == n1 - 1)
            result += arr_2[i];
        else if (i % 2 == 0)
            result += 2 * arr_2[i];
        else
            result += 4 * arr_2[i];
    }
    result *= (step_x / 3);
    return result;
}

int main() {
    float step_x = 1.2; // x के लिए चरण
    float step_y = 0.54; // y के लिए चरण
    float lower_x = 1.3; // x की निचली सीमा
    float upper_x = 2.1; // x की ऊपरी सीमा
    float lower_y = 1.0; // y की निचली सीमा
    float upper_y = 2.1; // y की ऊपरी सीमा
    cout << "double integration is : " << doubleIntegral(step_x, step_y, lower_x, upper_x, lower_y, upper_y);
    return 0;
}

आउटपुट

double integration is : 2.1
  1. C++ में रिकर्सन का उपयोग करके ट्री का आकार गणना करने का प्रोग्राम C++ में रिकर्सन का उपयोग करके ट्री का आकार गणना करने का प्रोग्राम

    इस समस्या में, हमें एक ट्री दिया गया है और हमारा कार्य रिकर्सन का उपयोग करके ट्री का आकार गणना करने के लिए एक प्रोग्राम बनाना है। ट्री का आकार ट्री में मौजूद नोड्स की कुल संख्या है। आइए एक उदाहरण से समस्या को समझते हैं, उपरोक्त ट्री का आकार 5 है। ट्री का आकार खोजने के लिए, हमें लेफ्ट सबट्री और

  1. C++ में ग्राफ के एज कवर की गणना करें C++ में ग्राफ के एज कवर की गणना करें

    एक ग्राफ के n वर्टेक्स की संख्या दी गई है, कार्य ग्राफ के एज कवर की गणना करना है। एज कवर ग्राफ के हर वर्टेक्स को कवर करने के लिए आवश्यक न्यूनतम एज की संख्या खोजना है। जैसे हमारे पास n = 5 है तो इसका ग्राफ ऐसा होगा: इसका एज कवर 3 है आइए एक और उदाहरण लेते हैं जहां n = 8 है और इसका एज कवर होगा: 4 उ

  1. C++ में समबाहु त्रिभुज के परिक्षेपक वृत्त का क्षेत्रफल गणना करें C++ में समबाहु त्रिभुज के परिक्षेपक वृत्त का क्षेत्रफल गणना करें

    जैसा कि नाम से पता चलता है, समबाहु त्रिभुज वह है जिसकी भुजाएं समान होती हैं और इसके आंतरिक कोण भी 60° प्रत्येक के समान होते हैं। इसे नियमित त्रिभुज के रूप में भी जाना जाता है क्योंकि यह एक नियमित बहुभुज है।समबाहु त्रिभुज के गुण हैंसमान लंबाई की 3 भुजाएंसमान डिग्री के आंतरिक कोण जो 60 हैंकिसी बहुभुज