Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

กฎสี่เหลี่ยมคางหมูสำหรับอินทิกรัลแน่นอน


อินทิกรัลที่แน่นอนสามารถแก้ไขได้โดยใช้กฎสี่เหลี่ยมคางหมูนี้ ในการรวมฟังก์ชัน 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