อินทิกรัลที่แน่นอนสามารถแก้ไขได้โดยใช้กฎสี่เหลี่ยมคางหมูนี้ ในการรวมฟังก์ชัน f(x) ระหว่างช่วง a ถึง b นั้นโดยทั่วไปแล้ว การหาพื้นที่ใต้เส้นโค้งจากจุด x =a ถึง x =b
ในการหาพื้นที่นั้น เราสามารถแบ่งพื้นที่ออกเป็นสี่เหลี่ยมคางหมู n อัน และความกว้างของสี่เหลี่ยมคางหมูแต่ละอันคือ h ดังนั้นเราสามารถพูดได้ว่า (b - a) =nh เมื่อจำนวนสี่เหลี่ยมคางหมูเพิ่มขึ้น ผลการคำนวณพื้นที่จะแม่นยำยิ่งขึ้น ในการแก้อินทิกรัล เราจะทำตามสูตรนี้
ในที่นี้ h คือความกว้างของช่วง และ n คือจำนวนช่วง เราสามารถหา h ได้โดยใช้
อินพุตและเอาต์พุต
Input: The function f(x): 1-exp(-x/2.0) and limits of the integration: 0, 1. The number of intervals: 20 Output: The answer is: 0.21302
อัลกอริทึม
integrateTrapezoidal(a, b, n)
ป้อนข้อมูล: ขีดจำกัดล่างและบน และจำนวนอินทิกรัล n.
ผลลัพธ์: ผลลัพธ์ของการบูรณาการ
Begin h := (b - a)/n sum := f(a) + f(b) for i := 1 to n, do sum := sum + f(a + ih) done return sum End
ตัวอย่าง
#include<iostream> #include<cmath> using namespace std; float mathFunc(float x) { return (1-exp(-x/2.0)); //the function 1 - e^(-x/2) } float integrate(float a, float b, int n) { float h, sum; int i; h = (b-a)/n; //calculate the distance between two interval sum = (mathFunc(a)+mathFunc(b))/2; //initial sum using f(a) and f(b) for(i = 1; i<n; i++) { sum += mathFunc(a+i*h); } return (h*sum); //The result of integration } main() { float result, lowLim, upLim; int interval; cout << "Enter Lower Limit, Upper Limit and interval: "; cin >>lowLim >>upLim >>interval; result = integrate(lowLim, upLim, interval); cout << "The answer is: " << result; }
ผลลัพธ์
Enter Lower Limit, Upper Limit and interval: 0 1 20 The answer is: 0.21302