I'm taking a beginner python class and part of an exercise we were given was this:
The point x with the property x= sin(x)−ax+ 30 is called a fixed point of the function f(x) = sin(x)−ax+ 30. It can be computed with the so-called fixed point iteration: x(i+1)= sin(x(i))−ax(i)+ 30, where the superscript (i) denotes an iteration counter. Here you find a piece of Python code which performs the first 200 steps of this
x=0.5
a=0.5
for i in range(200):
x = sin(x) - a*x + 30
print('The result after {num} iterations is {res}.'.format(num=i, res=x))
Modify the code in such a way that it stops iterating as soon as |x(i+1)−x(i)| < 10−8. Furthermore it should print a little message if this condition was not met within 200 iteration steps. Test your code with a= 0.5 and a= 8
I've tried to do this but am not getting anywhere with it. This is what I have so far, any help would be much appreciated.
x = 0.5
a = 8
iterations = 0
for i in range(y):
x = sin(x) - a*x + 30
if abs(x**(i+1) - x**i) < 1.e-8:
break
elif i > 200:
iterations += 1
print('The result after {num} iterations is {res}.'.format(num=i, res=x))
if iterations > 0:
print('The condition was not met within 200 iteration steps.')