chebyshev_coefficients.sf 403 B

123456789101112131415161718
  1. #!/usr/bin/ruby
  2. func chebft (callback, a, b, n) {
  3. var bma = (0.5 * b-a);
  4. var bpa = (0.5 * b+a);
  5. var pi_n = ((@^n »+» 0.5) »*» (Num.pi / n));
  6. var f = (pi_n »cos»() »*» bma »+» bpa «call« callback);
  7. var sums = (@^n «run« {|i| f »*« ((pi_n »*» i) »cos»()) «+» });
  8. sums »*» (2/n);
  9. }
  10. chebft(func(v){v.cos}, 0, 1, 10).each { |v|
  11. say ("%+.10e" % v);
  12. };