bernoulli_numbers_from_pascal_triangle_3.sf 626 B

1234567891011121314151617181920212223242526272829
  1. #!/usr/bin/ruby
  2. # Computing Bernoulli numbers from a derivation of Pascal's triangle
  3. # Formula presented by Norman J. Wildberger in his video lecture:
  4. # https://www.youtube.com/watch?v=qmMs6tf8qZ8
  5. # See also:
  6. # https://en.wikipedia.org/wiki/Bernoulli_number#Connection_with_Pascal’s_triangle
  7. func pascal_bernoulli_numbers(n) {
  8. var A = []
  9. for i in (0 .. n) {
  10. for k in (0 .. n) {
  11. A[i][k] = (k > i ? 0 : ((-1)**(i + k) * 1/(i - k + 1)!))
  12. }
  13. }
  14. A.inv -> map_kv {|k,v| v[0] * k! }
  15. }
  16. var B = pascal_bernoulli_numbers(30)
  17. for k,v in (B.kv) {
  18. say "B(#{k}) = #{v.as_rat}"
  19. }