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
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:
```