- IQAir wants to estimate of the amount of air pollutants resulting from the combustion reaction at a coal-based PLTU around Jakarta which is one of the causes of air quality in Jakarta getting worse.
- If the combustion reaction equation is known to be nonlinear with the function is
f(x)=x3−3x−7,(1)
help find the approximate value of the pollutant (x) from the equation using the regula falsi OR bisection method as well as the desired number of iterations and pollutant limit values [a,b].
- Note: There is mission information, e.g.
- What is the meaning of combustion reaction equation, when f(x)=0?
- Why if f(x)=0, the solution x is the approximate value of the pollutant?
- Output
Method:
1. Bisection
2. Regula Falsi
Select Method: 1
Input pollutan lower limit value (mg/L): 1
Input pollutan upper limit value (mg/L): 8
Input the number of interations: 3
Iteration no Estimation Value of Pollutan Concentration (mg/L) Error
------------ ------------------------------------------------- -----
1 4.5 3.5
2 2.75 1.75
3 1.875 0.875
- Code
def combustion(x):
y = x**3 - 3*x - 7
return y
print("Method:")
print("1. Bisection")
print("2. Regula Falsi")
print("Select Method: ", end='')
method = input()
print(method)
print("Input pollutan lower", end=' ')
print("limit value (mg/L): ", end='')
a = float(input())
print(a)
print("Input pollutan upper", end=' ')
print("limit value (mg/L): ", end='')
b = float(input())
print(b)
print("Input number of iteration: ", end='')
N = int(input())
print(N)
print()
print("i\tx\terr")
for i in range(1, N+1):
fa = combustion(a)
fb = combustion(b)
if fa == fb:
break;
if method == '1':
# apply bisection method
c = (a + b) / 2
# update a and b
fc = combustion(c)
if fa * fc < 0:
b = c
elif fc * fb < 0:
a = c
else:
pass
elif method == '2':
# apply bisection regular falsi method
c = (b * fa - a * fb) / (fa - fb)
# update a and b
a = b
b = c
else:
# apply other methods
pass
# calculate error
err = abs(a - b)
# display results
print(i, end='\t')
print(c, end='\t')
print(err)
print()
cs = f'{c:.20f}'
print("x =", cs)
print("error =", err)
print("interation =", i)
- Method 1 (Bisection)
Method:
1. Bisection
2. Regula Falsi
Select Method: 1
Input pollutan lower limit value (mg/L): 1.0
Input pollutan upper limit value (mg/L): 8.0
Input number of iteration: 100
i x err
1 4.5 3.5
2 2.75 1.75
3 1.875 0.875
4 2.3125 0.4375
5 2.53125 0.21875
6 2.421875 0.109375
7 2.4765625 0.0546875
8 2.44921875 0.02734375
9 2.435546875 0.013671875
10 2.4287109375 0.0068359375
11 2.42529296875 0.00341796875
12 2.427001953125 0.001708984375
13 2.4261474609375 0.0008544921875
14 2.42572021484375 0.00042724609375
15 2.425933837890625 0.000213623046875
16 2.4260406494140625 0.0001068115234375
17 2.4259872436523438 5.340576171875e-05
18 2.426013946533203 2.6702880859375e-05
19 2.4260005950927734 1.33514404296875e-05
20 2.4259939193725586 6.67572021484375e-06
21 2.425990581512451 3.337860107421875e-06
22 2.4259889125823975 1.6689300537109375e-06
23 2.4259880781173706 8.344650268554688e-07
24 2.425988495349884 4.172325134277344e-07
25 2.4259887039661407 2.086162567138672e-07
26 2.425988808274269 1.043081283569336e-07
27 2.425988756120205 5.21540641784668e-08
28 2.425988782197237 2.60770320892334e-08
29 2.425988769158721 1.30385160446167e-08
30 2.425988762639463 6.51925802230835e-09
31 2.425988759379834 3.259629011154175e-09
32 2.4259887577500194 1.6298145055770874e-09
33 2.425988756935112 8.149072527885437e-10
34 2.425988757342566 4.0745362639427185e-10
35 2.4259887575462926 2.0372681319713593e-10
36 2.425988757444429 1.0186340659856796e-10
37 2.4259887573934975 5.093170329928398e-11
38 2.4259887573680317 2.546585164964199e-11
39 2.4259887573552987 1.2732925824820995e-11
40 2.425988757361665 6.366462912410498e-12
41 2.425988757358482 3.183231456205249e-12
42 2.4259887573600736 1.5916157281026244e-12
43 2.4259887573608694 7.958078640513122e-13
44 2.4259887573612673 3.979039320256561e-13
45 2.4259887573614662 1.9895196601282805e-13
46 2.4259887573615657 9.947598300641403e-14
47 2.4259887573616155 4.973799150320701e-14
48 2.4259887573616403 2.4868995751603507e-14
49 2.425988757361628 1.2434497875801753e-14
50 2.4259887573616217 6.217248937900877e-15
51 2.425988757361625 3.1086244689504383e-15
52 2.4259887573616234 1.7763568394002505e-15
53 2.4259887573616226 8.881784197001252e-16
54 2.425988757361622 8.881784197001252e-16
55 2.425988757361622 8.881784197001252e-16
56 2.425988757361622 8.881784197001252e-16
57 2.425988757361622 8.881784197001252e-16
58 2.425988757361622 8.881784197001252e-16
59 2.425988757361622 8.881784197001252e-16
60 2.425988757361622 8.881784197001252e-16
61 2.425988757361622 8.881784197001252e-16
62 2.425988757361622 8.881784197001252e-16
63 2.425988757361622 8.881784197001252e-16
64 2.425988757361622 8.881784197001252e-16
65 2.425988757361622 8.881784197001252e-16
66 2.425988757361622 8.881784197001252e-16
67 2.425988757361622 8.881784197001252e-16
68 2.425988757361622 8.881784197001252e-16
69 2.425988757361622 8.881784197001252e-16
70 2.425988757361622 8.881784197001252e-16
71 2.425988757361622 8.881784197001252e-16
72 2.425988757361622 8.881784197001252e-16
73 2.425988757361622 8.881784197001252e-16
74 2.425988757361622 8.881784197001252e-16
75 2.425988757361622 8.881784197001252e-16
76 2.425988757361622 8.881784197001252e-16
77 2.425988757361622 8.881784197001252e-16
78 2.425988757361622 8.881784197001252e-16
79 2.425988757361622 8.881784197001252e-16
80 2.425988757361622 8.881784197001252e-16
81 2.425988757361622 8.881784197001252e-16
82 2.425988757361622 8.881784197001252e-16
83 2.425988757361622 8.881784197001252e-16
84 2.425988757361622 8.881784197001252e-16
85 2.425988757361622 8.881784197001252e-16
86 2.425988757361622 8.881784197001252e-16
87 2.425988757361622 8.881784197001252e-16
88 2.425988757361622 8.881784197001252e-16
89 2.425988757361622 8.881784197001252e-16
90 2.425988757361622 8.881784197001252e-16
91 2.425988757361622 8.881784197001252e-16
92 2.425988757361622 8.881784197001252e-16
93 2.425988757361622 8.881784197001252e-16
94 2.425988757361622 8.881784197001252e-16
95 2.425988757361622 8.881784197001252e-16
96 2.425988757361622 8.881784197001252e-16
97 2.425988757361622 8.881784197001252e-16
98 2.425988757361622 8.881784197001252e-16
99 2.425988757361622 8.881784197001252e-16
100 2.425988757361622 8.881784197001252e-16
x = 2.42598875736162211680380096368025988340377807617187500
error = 8.881784197001252e-16
interation = 100
Note: It has not yet stopped in 100 iterations since there is always new c
from previous a
and b
. - Method 2 (Regula Falsi)
Method:
1. Bisection
2. Regula Falsi
Select Method: 2
Input pollutan lower limit value (mg/L): 1.0
Input pollutan upper limit value (mg/L): 8.0
Input number of iteration: 100
i x err
1 1.1285714285714286 6.871428571428572
2 1.2540693397752025 0.12549791120377396
3 8.22098176347065 6.966912423695447
4 1.3690203109391845 6.851961452531466
5 1.4789269031521688 0.10990659221298427
6 4.136642366324688 2.6577154631725195
7 1.844814336803726 2.2918280295209623
8 2.093593129020052 0.24877879221632582
9 2.5681447002446642 0.47455157122461245
10 2.4009115872524283 0.16723311299223598
11 2.4242907675446332 0.023379180292204982
12 2.4260101070971984 0.0017193395525652022
13 2.4259887393490422 2.136774815619802e-05
14 2.4259887573614316 1.8012389357835445e-08
15 2.4259887573616217 1.900701818158268e-13
16 2.425988757361622 4.440892098500626e-16
17 2.425988757361622 0.0
x = 2.42598875736162211680380096368025988340377807617187500
error = 0.0
interation = 18
Note: It stops in 18 iterations after fa == fb
.