arithmetic_convolution.sf 392 B

123456789101112131415161718192021
  1. #!/usr/bin/ruby
  2. # Arithmetical convolution of two functions.
  3. # See also:
  4. # https://en.wikipedia.org/wiki/Convolution
  5. func convolution(n, f, g) {
  6. sum(1..n, {|k|
  7. f(k) * g(n - k + 1)
  8. })
  9. }
  10. # Example:
  11. # Convolution of sigma(n) (A000203) with phi(n) (A000010).
  12. var f = { .sigma }
  13. var g = { .euler_phi }
  14. say 20.of {|n| convolution(n, f, g) } # https://oeis.org/A086733