x-এর নিম্ন ও উর্ধ্ব সীমা, y-এর নিম্ন ও উর্ধ্ব সীমা, x-এর ধাপ (step) এবং 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 উভয়ের জন্য সিম্পসন ১/৩ পদ্ধতি (Simpson 1/3 method) ব্যবহার করা হয়েছে
- আরোক্ষিত টেবিল তৈরি করা

- প্রতিটি সারিয়ে সিম্পসন ১/৩ নিয়ম প্রয়োগ করে প্রথম অভিশ্লেষণ করা এবং দ্বি-অভিশ্লেষণের জন্য এটিকে দুবার রিপিট করা
- ফলাফল প্রিন্ট করা
অ্যালগরিদম
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 সেট Loop For i = 0 to n1-1 Loop For j = 0 to n2-1 arr[i][j] = fun(lower_x + i * step_x, lower_y + j * step_y) সেট End End Loop For i = 0 to n1-1 arr_2[i] = 0 সেট Loop For j = 0 to n2-1 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 সেট Loop For i = 0 to n1-1 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 return result Step 2→ main() এ step_x = 1.2 ঘোষণা step_y = 0.54 ঘোষণা lower_x = 1.3 ঘোষণা upper_x = 2.1 ঘোষণা lower_y = 1.0 ঘোষণা upper_y = 2.1 ঘোষণা doubleIntegral(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 : "<<(step_x, step_y, lower_x, upper_x, lower_y, upper_y); return 0; } আউটপুট
double integration is : 2.1