Advertisement
Guest User

Untitled

a guest
Nov 4th, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Julia 0.87 KB | None | 0 0
  1. function simpson(f, a, b, level, level_max, precision)
  2.     level += 1
  3.     h = b - a
  4.     c = (a + b) / 2
  5.     one_s = h * (f(a) + 4. * f(c) + f(b)) / 6.
  6.     d = (a + c) / 2
  7.     e = (c + b) / 2
  8.     two_s = h * (f(a) + 4. * f(d) + 2. * f(c) + 4. * f(e) + f(b)) / 12.
  9.     if level >= level_max
  10.         simpson_result = two_s
  11.         print("Max level reached")
  12.         return simpson_result
  13.     else
  14.         if abs(two_s - one_s) < 15. * precision
  15.             return two_s + (two_s - one_s) / 15.
  16.         else
  17.             left_s = simpson(f, a, c, level, level_max, precision / 2.)
  18.             right_s = simpson(f, c, b, level, level_max, precision / 2.)
  19.             print(left_s)
  20.             return left_s + right_s
  21.         end
  22.     end
  23. end
  24.  
  25. function simptest(x)
  26.     fn = x^2
  27.     return fn
  28. end
  29.  
  30. simpson(simptest, -2, 2, 0.000000000000001, 1, 10) #returns 5.333333333333.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement