fork download
  1. #!/usr/bin/env node
  2.  
  3. n = Number(process.argv[2]);
  4.  
  5. let intv = [0, 1/2];
  6.  
  7. function fn(x) {
  8. return Math.log(4 * x * x + 1);
  9. }
  10.  
  11. function Fn(x) {
  12. return x * Math.log(4 * x * x + 1) + Math.atan(2 * x) - 2 * x;
  13. }
  14.  
  15. let approx = trapezoid_approx(fn, intv, n);
  16. let exact = Fn(1/2) - Fn(0);
  17.  
  18. console.log("近似値: " + approx);
  19. console.log("厳密値: " + exact);
  20.  
  21. function range(start, end) {
  22. return (new Array(end - start + 1)).fill(undefined).map((_, i) => i + start);
  23. }
  24.  
  25. function trapezoid_approx(f, intv, n){
  26. let a = intv[0], b = intv[1];
  27. return ((b - a) / n) * ((f(a) + f(b)) / 2 + range(1, n - 1).reduce(
  28. (accumulator, k) => accumulator + f(a + k * (b - a) / n),
  29. 0
  30. ));
  31. }
Runtime error #stdin #stdout #stderr 0.07s 31452KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
/home/VUaXVQ/prog.js:22
    return (new Array(end - start + 1)).fill(undefined).map((_, i) => i + start);
            ^

RangeError: Invalid array length
    at range (/home/VUaXVQ/prog.js:22:13)
    at trapezoid_approx (/home/VUaXVQ/prog.js:27:47)
    at Object.<anonymous> (/home/VUaXVQ/prog.js:15:14)
    at Module._compile (internal/modules/cjs/loader.js:799:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:810:10)
    at Module.load (internal/modules/cjs/loader.js:666:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:606:12)
    at Function.Module._load (internal/modules/cjs/loader.js:598:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:862:12)
    at internal/main/run_main_module.js:21:11