import matplotlib.pyplot as plt
import numpy as np
Single Fixed Point Iteration Algorithm
The Single Fixed Point Iteration Algorithm is an iterative numerical method to find fixed points of a function
Algorithm Steps:
- Start with an initial guess x_0.
- Calculate the next value: x_{i+1} = g(x_i).
- If |x_{i+1} - x_i| < tol, consider x_{i+1} as the fixed point.
- Repeat until convergence or a max number of iterations.
Import Libraries
Function to find the approx root
def single_point_iteration(func, a, tol=1e-6, max_iter=100):
= a
x = 1
iter_count = np.inf
x_next
= []
iteration_data
print("Iteration | x | g(x) | Ea (%)")
print("-----------------------------------------")
while abs(x_next - x) > tol and iter_count <= max_iter:
iteration_data.append([iter_count,x,func(x)])= x
x_next = func(x)
x = abs((x - x_next) / x) * 100
Ea
print(f"{iter_count:9d} | {x:.6f} | {func(x):.6f} | {Ea:.3f}")
+= 1
iter_count
return x_next , np.array(iteration_data)
Defining the Fxn
\[ f(x)=0 \] \[ \large x = g(x) \]
def function(x):
return np.exp(-x)
Initializing the variables
= 0.0
a = 1e-6 tolerance
FInding the approx value
= single_point_iteration(function, a, tol=tolerance)
root,iteration_data print("")
print("Approximate root of g(x):", root)
print("Function value f(x) at root:", function(root)-root)
Iteration | x | g(x) | Ea (%)
-----------------------------------------
1 | 1.000000 | 0.367879 | 100.000
2 | 0.367879 | 0.692201 | 171.828
3 | 0.692201 | 0.500474 | 46.854
4 | 0.500474 | 0.606244 | 38.309
5 | 0.606244 | 0.545396 | 17.447
6 | 0.545396 | 0.579612 | 11.157
7 | 0.579612 | 0.560115 | 5.903
8 | 0.560115 | 0.571143 | 3.481
9 | 0.571143 | 0.564879 | 1.931
10 | 0.564879 | 0.568429 | 1.109
11 | 0.568429 | 0.566415 | 0.624
12 | 0.566415 | 0.567557 | 0.356
13 | 0.567557 | 0.566909 | 0.201
14 | 0.566909 | 0.567276 | 0.114
15 | 0.567276 | 0.567068 | 0.065
16 | 0.567068 | 0.567186 | 0.037
17 | 0.567186 | 0.567119 | 0.021
18 | 0.567119 | 0.567157 | 0.012
19 | 0.567157 | 0.567135 | 0.007
20 | 0.567135 | 0.567148 | 0.004
21 | 0.567148 | 0.567141 | 0.002
22 | 0.567141 | 0.567145 | 0.001
23 | 0.567145 | 0.567142 | 0.001
24 | 0.567142 | 0.567144 | 0.000
25 | 0.567144 | 0.567143 | 0.000
26 | 0.567143 | 0.567143 | 0.000
Approximate root of g(x): 0.5671437480994115
Function value f(x) at root: -7.172651695919185e-07
Plotting the values
=(10, 6))
plt.figure(figsize0], iteration_data[:,1], marker='o', label='x')
plt.plot(iteration_data[:,0], iteration_data[:,2], marker='x', label='f(x)')
plt.plot(iteration_data[:,'Iteration')
plt.xlabel('Values')
plt.ylabel('Values of x and g(x) over Iterations')
plt.title(
plt.legend()True)
plt.grid( plt.show()