Advertisement
VikkaLorel

bisection method for continuous functions

Sep 28th, 2018
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.05 KB | None | 0 0
  1. from math import log2, ceil, exp
  2.  
  3.  
  4. def tested_function(x):
  5.     return exp(x) - 4*x
  6.  
  7.  
  8. if __name__ == '__main__':
  9.     print('[x0, x1]')
  10.     pivot = 0
  11.     x0 = float(input('x0 = '))
  12.     x1 = float(input('x1 = '))
  13.     if int(input('precision(1) or iteration(2) ?')) == 1:
  14.         precision = int(input('Precision ?'))
  15.         iteration = ceil(log2(pow(10, precision) * (x1 - x0)/2))
  16.     else:
  17.         iteration = int(input('Iteration ?'))
  18.         precision = ceil((x1 - x0) / pow(2, iteration))
  19.     precision = str(precision)
  20.     for i in range(iteration):
  21.         x2 = (x0 + x1) / 2
  22.         r = tested_function(x2)
  23.         print('{}'.format(r))
  24.         if r == pivot:
  25.             print('done')
  26.             break
  27.         elif (tested_function(x0) > pivot > r) or \
  28.                 (tested_function(x0) < pivot < r):
  29.             x1 = x2
  30.         else:
  31.             x0 = x2
  32.         print('[{}, {}]'.format(x0, x1))
  33.         print('{}'.format((x0 + x1) / 2))
  34.     print('iteration : {}'.format(iteration))
  35.     print('precision : {}'.format(precision))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement