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

กฎสี่เหลี่ยมคางหมู (Trapezoidal Rule) สำหรับอินทิกรัลจำกัด

บทนำ

อินทิกรัลจำกัดสามารถแก้ได้ด้วยกฎสี่เหลี่ยมคางหมู การอินทิเกรตฟังก์ชัน f(x) ระหว่างช่วง a ถึง b ก็คือการหาพื้นที่ใต้เส้นโค้งจากจุด x = a ถึง x = b

เพื่อหาพื้นที่นั้น เราสามารถแบ่งพื้นที่เป็น n สี่เหลี่ยมคางหมู ความกว้างของแต่ละอันคือ h ดังนั้น (b - a) = nh เมื่อจำนวนสี่เหลี่ยมคางหมูเพิ่มขึ้น ผลลัพธ์ของการคำนวณพื้นที่จะแม่นยำขึ้น สูตรที่ใช้คือ:

กฎสี่เหลี่ยมคางหมู (Trapezoidal Rule) สำหรับอินทิกรัลจำกัด

โดยที่ h คือความกว้างของช่วง และ n คือจำนวนช่วง สามารถหา h ได้จาก:

กฎสี่เหลี่ยมคางหมู (Trapezoidal Rule) สำหรับอินทิกรัลจำกัด

อินพุตและเอาต์พุต

Input: ฟังก์ชัน f(x): 1-exp(-x/2.0) และขอบเขตอินทิกรัล: 0, 1 จำนวนช่วง: 20
Output: คำตอบคือ: 0.21302

อัลกอริทึม

integrateTrapezoidal(a, b, n)
Input: ขอบเขตล่างและบน, และจำนวนอินทิกรัล n
Output: ผลลัพธ์ของการอินทิเกรต

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

ตัวอย่างโค้ด (C++)

#include <iostream>
#include <cmath>
using namespace std;

float mathFunc(float x) {
    return (1 - exp(-x/2.0));  // ฟังก์ชัน 1 - e^(-x/2)
}

float integrate(float a, float b, int n) {
    float h, sum;
    int i;
    h = (b-a)/n;  // คำนวณระยะห่างระหว่างช่วง
    sum = (mathFunc(a) + mathFunc(b))/2;  // ผลรวมเริ่มต้นด้วย f(a) และ f(b)
    for (i = 1; i < n; i++) {
        sum += mathFunc(a + i*h);
    }
    return (h*sum);  // ผลลัพธ์ของการอินทิเกรต
}

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