RosettaCodeData/Task/Numerical-integration/Pluto/numerical-integration.pluto

21 lines
662 B
Plaintext

local function integrate(a, b, n, f)
local h = (b - a) / n
local sum = {0, 0, 0, 0, 0}
for i = 1, n do
local x = a + (i - 1) * h
sum[1] += f(x)
sum[2] += f(x + h / 2)
sum[3] += f(x + h)
sum[4] += (f(x) + f(x + h)) / 2
sum[5] += (f(x) + 4 * f(x + h / 2) + f(x + h)) / 6
end
local methods = {"LeftRect ", "MidRect ", "RightRect", "Trapezium", "Simpson "}
for i = 1, 5 do print($"{methods[i]} = {sum[i] * h}") end
print()
end
integrate(0, 1, 100, |v| -> v * v * v)
integrate(1, 100, 1_000, |v| -> 1 / v)
integrate(0, 5_000, 5_000_000, |v| -> v)
integrate(0, 6_000, 6_000_000, |v| -> v)