Bài 12
Đề bài: Tính tích phân xấp xỉ bằng phuong phap Simpson.
Cong thuc: h/3 * [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + ... + f(xn)]
(n phải chan)
So sánh do chính xác với phuong phap hình thang.
Ví dụ: ∫(0 đến pi) sin(x) dx = 2
Kết quả:
Simpson n=4: 1.9998355
Simpson n=10: 2.0000000
Hinh tháng n=10: 1.9983550
Simpson chính xác hon nhieu!
Đă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
import math
can_a = float(input("Can duoi a: "))
can_b = float(input("Can tren b (nhap 3.14159 cho pi): "))
def f(x):
return math.sin(x)
ly_thuyet = 2.0 # ∫0-pi sin(x)dx = 2
print(f"\nTich phan sin(x) tu {can_a} den {round(can_b,5)}:")
print(f"Gia tri ly thuyet = {ly_thuyet}")
print(f"\n{'n':>6} {'Simpson':>14} {'Hinh thang':>14}")
print("-" * 40)
for so_chia in [4, 10, 100]:
if so_chia % 2 != 0:
so_chia += 1
h = (can_b - can_a) / so_chia
# Simpson
tong_s = f(can_a) + f(can_b)
for i in range(1, so_chia):
he_so = 4 if i % 2 == 1 else 2
tong_s += he_so * f(can_a + i*h)
simpson = tong_s * h / 3
# Hinh thang
tong_t = f(can_a) + f(can_b)
for i in range(1, so_chia):
tong_t += 2 * f(can_a + i*h)
hinh_thang = tong_t * h / 2
print(f"{so_chia:>6} {round(simpson,8):>14} {round(hinh_thang,8):>14}")