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