Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình

Quy tắc Thang (Trapezoidal Rule) cho tích phân xác định


Giới thiệu

Tích phân xác định có thể được giải bằng quy tắc thang. Việc tích phân hàm f(x) giữa khoảng a đến b về cơ bản là tìm diện tích dưới đường cong từ điểm x = a đến x = b.

Để tìm diện tích đó, ta có thể chia diện tích thành n hình thang, và độ rộng của mỗi hình thang là h, nên ta có thể nói (b - a) = nh. Khi số hình thang tăng lên, kết quả tính diện tích sẽ chính xác hơn. Để giải tích phân, ta sẽ tuân theo công thức này.

Quy tắc Thang (Trapezoidal Rule) cho tích phân xác định

Ở đây h là độ rộng của khoảng chia, và n là số khoảng chia. Ta có thể tìm h bằng cách sử dụng:

Quy tắc Thang (Trapezoidal Rule) cho tích phân xác định

Đầu vào và Đầu ra

Đầu vào: Hàm f(x): 1-exp(-x/2.0) và giới hạn tích phân: 0, 1. Số khoảng chia: 20
Đầu ra: Kết quả là: 0.21302

Thuật toán

integrateTrapezoidal(a, b, n)
Đầu vào: Giới hạn dưới và trên, và số khoảng chia n.
Đầu ra: Kết quả tích phâ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

Ví dụ (C++)

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

float mathFunc(float x) {
    return (1-exp(-x/2.0));  // hàm 1 - e^(-x/2)
}

float integrate(float a, float b, int n) {
    float h, sum;
    int i;
    h = (b-a)/n;  // tính khoảng cách giữa hai khoảng chia
    sum = (mathFunc(a)+mathFunc(b))/2;  // tổng ban đầu dùng f(a) và f(b)
    for(i = 1; i < n; i++) {
        sum += mathFunc(a+i*h);
    }
    return (h*sum);  // kết quả tích phân
}

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;
}

Kết quả

Enter Lower Limit, Upper Limit and interval: 0 1 20
The answer is: 0.21302