Advertisement
Guest User

bisekcija

a guest
Jan 23rd, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.04 KB | None | 0 0
  1. import numpy as np
  2. from pylab import *
  3.  
  4. def f(x):
  5. return x**4-5*cos(x)-2
  6.  
  7. x=linspace(-2,2,100)
  8. plot(x, f(x), 'r-')
  9. ylabel('y-os')
  10. xlabel('x-os')
  11. grid()
  12. show()
  13.  
  14. #Iz grafa se vidi da postoje dvije nultocke:
  15. #jedna je unutar segmenta [-1.5,-1], a druga unutar segmenta [1,1.5].
  16.  
  17. #Metoda bisekcije
  18.  
  19. print 'Metoda bisekcije: \n'
  20.  
  21. def Bisekcija(a,b,eps,MaxIteracija=30):
  22. xi=(a+b)/2.0
  23. i=0
  24. while (b-a)/2.0>eps:
  25. if f(xi)==0:
  26. return xi,i
  27. elif f(a)*f(xi)<0:
  28. b=xi
  29. else:
  30. a=xi
  31. xi=(a+b)/2.0
  32. i=i+1
  33. if i==MaxIteracija:
  34. print 'Rjesenje na zadanu tocnost nije nadjeno u zadanom broju iteracija.'
  35. break
  36. return xi,i
  37.  
  38. xn,i=Bisekcija(-1.5,-1,1.e-5)
  39. print 'Rjesenje1:'
  40. print 'x%s=%s' % (i,xn)
  41. print '\n'
  42. xm,j=Bisekcija(1,1.5,1.e-5)
  43. print 'Rjesenje2:'
  44. print 'x%s=%s' % (j,xm)
  45. print '\n'
  46.  
  47. x=linspace(-2,2,100)
  48. plot(x, f(x), 'r-',xn,f(xn),'m^',xm,f(xm),'m^')
  49. ylabel('y-os')
  50. xlabel('x-os')
  51. grid()
  52. show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement