Bài 26
Đề bài: Tìm nghiệm phương trình f(x) = 0 bằng phuong phap chia doi (bisection).
Nhập hệ số da thuc bac 3, khoảng [a, b] và do chính xác epsilon.
Dieu kien: f(a) và f(b) trai đầu nhau.
Ví dụ: f(x) = x^3 - x - 1 trên [1, 2]
Kết quả:
Buoc 1: mid = 1.5, f(1.5) = 0.875 > 0 => doi [1, 1.5]
Buoc 2: mid = 1.25, f(1.25) = -0.297 < 0 => doi [1.25, 1.5]
...
Nghiem xấp xỉ: x ≈ 1.3247 (sau ~20 buoc)
Đă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 (bac 3): "))
b_hs = float(input("He so b (bac 2): "))
c_hs = float(input("He so c (bac 1): "))
d_hs = float(input("He so d (hang so): "))
a = float(input("Can trai a: "))
b = float(input("Can phai b: "))
eps = float(input("Do chinh xac epsilon (vd 1e-6): "))
def f(x):
return a_hs*x**3 + b_hs*x**2 + c_hs*x + d_hs
if f(a) * f(b) >= 0:
print("f(a) va f(b) phai trai dau nhau!")
else:
buoc = 0
while (b - a) / 2 > eps:
mid = (a + b) / 2
buoc += 1
if f(mid) == 0:
break
elif f(a) * f(mid) < 0:
b = mid
else:
a = mid
nghiem = (a + b) / 2
print(f"\nSau {buoc} buoc:")
print(f"Nghiem xap xi: x ≈ {round(nghiem, 8)}")
print(f"f(nghiem) = {f(nghiem):.2e} (xap xi 0)")