Warning: this is an htmlized version!
The original is across this link,
and the conversion rules are here.
-- This file:
-- http://angg.twu.net/LUA/integrate-2015.lua
-- http://angg.twu.net/LUA/integrate-2015.lua.html
--  (find-angg        "LUA/integrate-2015.lua")
--

integrate_left    = function (f, a, b) return (b-a)*f(a) end
integrate_right   = function (f, a, b) return (b-a)*f(b) end
integrate_trapeze = function (f, a, b) return (b-a)*(f(a)+f(b))/2 end
integrate_simpson = function (f, a, b)
    local m = (a+b)/2
    local ht = (f(a)+f(b))/2        -- height of the trapeze
    local hp = f(m) - ht            -- height of the parabola above the trapeze
    local at = (b-a)*(f(a)+f(b))/2  -- area of the trapeze
    local ap = (b-a)*hp*(2/3)       -- area of the parabola above the trapeze
    return at+ap
  end

integrate   = integrate_left
integrate_n = function (f, a, b, n)
    local ai = function (i) return a + (b-a)*i/n end
    local total = 0
    for i=0,n-1 do total = total + integrate(f, ai(i), ai(i+1)) end
    return total
  end

--[[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "integrate-2015.lua"

integrate = integrate_left
integrate = integrate_right
integrate = integrate_trapeze
integrate = integrate_simpson
f = function (x) return x end
print(integrate_n(f, 0, 2, 10))

integrate = integrate_simpson
f = function (x) return math.sin(x) end
print(integrate_n(f, 0, math.pi/2, 5))
print(integrate_n(f, 0, math.pi/2, 10))
print(integrate_n(f, 0, math.pi/2, 20))
print(integrate_n(f, 0, math.pi/2, 40))
print(integrate_n(f, 0, math.pi/2, 80))

--]]


-- Local Variables:
-- coding: raw-text-unix
-- End: