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

डबल इंटीग्रेशन की गणना करने के लिए C++ प्रोग्राम

हमें चर 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++ प्रोग्राम

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

एल्गोरिदम

Start
Step 1-> declare function to  calculate power for integration
   float fun(float x, float y)
   return pow(pow(x, 4) + pow(y, 5), 0.5)
Step 2-> declare function to find the double integral value
   float doubleIntegral(float step_x, float step_y, float lower_x, float upper_x, float lower_y, float upper_y)
   Declare int n1, n2
   Declare float arr[50][50], arr_2[50], result
   set n1 = (upper_x - lower_x) / step_x + 1
   set n2 = (upper_y - lower_y) / step_y + 1
   Loop For int i = 0 and i < n1 and ++i
      Loop For int j = 0 and j < n2 and ++j
         set arr[i][j] = fun(lower_x + i * step_x, lower_y + j * step_y)
      End
   End
   Loop For int i = 0 and i < n1 and ++i
      set arr_2[i] = 0
      Loop For int j = 0 and j < n2 and ++j
         IF (j == 0 || j == n2 - 1)
            Set arr_2[i] += arr[i][j]
         End
         Else IF (j % 2 == 0)
            Set arr_2[i] += 2 * arr[i][j]
         End
         Else
            set arr_2[i] += 4 * arr[i][j]
      End
      set arr_2[i] *= (step_y / 3)
   End
   set result = 0
   Loop For int i = 0 and i < n1 and ++i
      IF (i == 0 || i == n1 - 1)
         set result += arr_2[i]
      End
      Else IF (i % 2 == 0)
         set result += 2 * arr_2[i]
      End
      Else
         set result += 4 * arr_2[i]
      End
      set result *= (step_x / 3)
   End
   return result
Step 2-> In main()
   declare step for x as float step_x = 1.2
   Declare step for y as float step_y = 0.54
   Declare lower limit of xfloat lower_x = 1.3
   Declare upper limit of xfloat upper_x = 2.1
   Declare lower limit of yfloat lower_y = 1.0
   Declare upper limit of yfloat upper_y = 2.1
   Call (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);
}
// Function to find the double integral value
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; //steps for x
    float step_y = 0.54; //steps for y
    float lower_x = 1.3; //lower limit of x
    float upper_x = 2.1; //upper limit of x
    float lower_y = 1.0; //lower limit of y
    float upper_y = 2.1; //upper limit of y
    cout<<"double integration is : "<<(step_x, step_y, lower_x, upper_x, lower_y, upper_y);
    return 0;
}

आउटपुट

double integration is : 2.1

  1. एक पेड़ के आकार की गणना करने के लिए एक प्रोग्राम लिखें - C++ में रिकर्सन

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

  1. C++ प्रोग्राम ग्राफ के एज कवर की गणना करने के लिए

    ग्राफ़ के शीर्षों की संख्या को देखते हुए, कार्य ग्राफ़ के किनारे कवर की गणना करना है। एज कवर ग्राफ़ के प्रत्येक शीर्ष को कवर करने के लिए आवश्यक किनारों की न्यूनतम संख्या ज्ञात करना है। जैसे हमारे पास n =5 . है तो इसका ग्राफ इस तरह होगा - तो इसका किनारा कवर 3 . है आइए एक और उदाहरण लेते हैं जह

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

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