این برنامه از روش عددی نصفکردن
$$x + e^x = 5$$
که بهصورت تابعی به شکل زیر تعریف میشود:
$$F(x) = x + e^x - 5$$
هدف یافتن ریشهای از تابع F(x) است که مقدار آن صفر شود.
import math
def f(x):
return x + math.exp(x) - 5
def bisection(a, b, tol=1e-4, max_iter=100):
if f(a) * f(b) > 0:
raise ValueError("تابع در بازه انتخابشده تغییر علامت نمیدهد.")
for _ in range(max_iter):
c = (a + b) / 2
if abs(f(c)) < tol or (b - a) / 2 < tol:
return round(c, 4)
if f(a) * f(c) < 0:
b = c
else:
a = c
return round((a + b) / 2, 4)
# اجرای برنامه
root = bisection(1, 2)
print(f"ریشه معادله: {root}")
ریشه معادله: 1.6094
- تابع F(x) تعریف میشود: x + e^x - 5
- بازه اولیه [a, b] باید شامل تغییر علامت باشد (مثلاً [1, 2])
- در هر مرحله، نقطه وسط c محاسبه شده و بررسی میشود که آیا ریشه در [a, c] یا [c, b] قرار دارد
- فرآیند تا رسیدن به دقت موردنظر یا تعداد تکرار مشخص ادامه مییابد