Numerical integration: Difference between revisions

Updated to work with Nim 1.4: replaced ".. <" with "..<", added a space before "x". Updated result.
m (→‎{{header|Wren}}: Change of parameter name for function arguments.)
(Updated to work with Nim 1.4: replaced ".. <" with "..<", added a space before "x". Updated result.)
Line 3,475:
 
proc cube(x: float): float =
x * x * x
 
proc reciprocal(x: float): float =
Line 3,485:
proc integrate(f: Function; a, b: float; steps: int; meth: Rule): float =
let h = (b-a) / float(steps)
for i in 0 .. < steps:
result += meth(f, a+float(i)*h, h)
result = h * result
Line 3,503:
Output:
<pre>cube integrated using leftRect
from 0 to 1 (100 steps) = 20.4502500000000005e-01245025
cube integrated using midRect
from 0 to 1 (100 steps) = 20.4998750000000006e-012499875000000001
cube integrated using rightRect
from 0 to 1 (100 steps) = 20.5502500000000006e-012550250000000001
cube integrated using trapezium
from 0 to 1 (100 steps) = 20.5002500000000000e-01250025
cube integrated using simpson
from 0 to 1 (100 steps) = 20.5000000000000000e-0125
reciprocal integrated using leftRect
from 1 to 100 (1000 steps) = 4.6549910575146800e+0065499105751468
reciprocal integrated using midRect
from 1 to 100 (1000 steps) = 4.6047625486783756e+00604762548678376
reciprocal integrated using rightRect
from 1 to 100 (1000 steps) = 4.5569810575146796e+0055698105751468
reciprocal integrated using trapezium
from 1 to 100 (1000 steps) = 4.6059860575146763e+00605986057514676
reciprocal integrated using simpson
from 1 to 100 (1000 steps) = 4.6051703849571330e+00605170384957133
identity integrated using leftRect
from 0 to 5000 (5000000 steps) = 112499997.2499997500000000e+075
identity integrated using midRect
from 0 to 5000 (5000000 steps) = 112500000.2500000000000000e+070
identity integrated using rightRect
from 0 to 5000 (5000000 steps) = 112500002.2500002500000000e+075
identity integrated using trapezium
from 0 to 5000 (5000000 steps) = 112500000.2500000000000000e+070
identity integrated using simpson
from 0 to 5000 (5000000 steps) = 112500000.2500000000000000e+070
identity integrated using leftRect
from 0 to 6000 (6000000 steps) = 117999997.7999997000000004e+070
identity integrated using midRect
from 0 to 6000 (6000000 steps) = 117999999.7999999999999993e+0799999999
identity integrated using rightRect
from 0 to 6000 (6000000 steps) = 118000003.8000003000000004e+070
identity integrated using trapezium
from 0 to 6000 (6000000 steps) = 117999999.7999999999999993e+0799999999
identity integrated using simpson
from 0 to 6000 (6000000 steps) = 117999999.7999999999999993e+0799999999</pre>
 
=={{header|OCaml}}==
Anonymous user