Bài 11
Đề bài: Tính tích phân xấp xỉ bằng phuong phap hình thang.
Cong thuc: ∫f(x)dx ≈ h/2 * [f(x0) + 2f(x1) + ... + 2f(xn-1) + f(xn)]
Nhập hệ số da thuc bac 3, căn a, b và số chia n.
So sánh với kết quả ly thuyet.
Ví dụ: ∫(0 đến 1) x^2 dx = 1/3 ≈ 0.3333
Kết quả:
n = 10: xấp xỉ = 0.335000 (sai so: 0.0017)
n = 100: xấp xỉ = 0.333350 (sai so: 0.0000167)
n = 1000: xấp xỉ = 0.333334 (sai so: 0.00000167)
Đăng nhập để giáo viên có thể giao bài và nhận bài nộp của bạn.
Câu trả lời
a_hs = float(input("He so a (ax^3+bx^2+cx+d): "))
b_hs = float(input("He so b: "))
c_hs = float(input("He so c: "))
d_hs = float(input("He so d: "))
can_a = float(input("Can duoi a: "))
can_b = float(input("Can tren b: "))
def f(x):
return a_hs*x**3 + b_hs*x**2 + c_hs*x + d_hs
print(f"\nTich phan tu {can_a} den {can_b}:")
print(f"{'n':>6} {'Xap xi':>14} {'Sai so':>12}")
print("-" * 38)
for so_chia in [10, 100, 1000, 10000]:
h = (can_b - can_a) / so_chia
tong = f(can_a) + f(can_b)
for i in range(1, so_chia):
tong += 2 * f(can_a + i * h)
ket_qua = tong * h / 2
# Ket qua ly thuyet (chia nguyen hang)
def nguyen_ham(x):
return a_hs*x**4/4 + b_hs*x**3/3 + c_hs*x**2/2 + d_hs*x
ly_thuyet = nguyen_ham(can_b) - nguyen_ham(can_a)
sai_so = abs(ket_qua - ly_thuyet)
print(f"{so_chia:>6} {round(ket_qua, 8):>14} {sai_so:.2e}")
print(f"\nGia tri ly thuyet chinh xac: {round(nguyen_ham(can_b) - nguyen_ham(can_a), 8)}")