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