Numerical integration: Difference between revisions

Added Wren
(adding lambdatalk)
(Added Wren)
Line 5,414:
Next i
End Sub</lang>
 
=={{header|Wren}}==
{{trans|Kotlin}}
{{libheader|Wren-fmt}}
<lang ecmascript>import "/fmt" for Fmt
 
var integrate = Fn.new { |a, b, n, f|
var h = (b - a) / n
var sum = List.filled(5, 0)
for (i in 0...n) {
var x = a + i * h
sum[0] = sum[0] + f.call(x)
sum[1] = sum[1] + f.call(x + h/2)
sum[2] = sum[2] + f.call(x + h)
sum[3] = sum[3] + (f.call(x) + f.call(x+h))/2
sum[4] = sum[4] + (f.call(x) + 4 * f.call(x + h/2) + f.call(x + h))/6
}
var methods = ["LeftRect ", "MidRect ", "RightRect", "Trapezium", "Simpson "]
for (i in 0..4) Fmt.print("$s = $h", methods[i], sum[i] * h)
System.print()
}
 
integrate.call(0, 1, 100) { |f| f * f * f }
integrate.call(1, 100, 1000) { |f| 1 / f }
integrate.call(0, 5000, 5000000) { |f| f }
integrate.call(0, 6000, 6000000) { |f| f }
</lang>
 
{{out}}
<pre>
LeftRect = 0.245025
MidRect = 0.249988
RightRect = 0.255025
Trapezium = 0.250025
Simpson = 0.25
 
LeftRect = 4.654991
MidRect = 4.604763
RightRect = 4.556981
Trapezium = 4.605986
Simpson = 4.60517
 
LeftRect = 12499997.5
MidRect = 12500000
RightRect = 12500002.5
Trapezium = 12500000
Simpson = 12500000
 
LeftRect = 17999997
MidRect = 18000000
RightRect = 18000003
Trapezium = 18000000
Simpson = 18000000
</pre>
 
=={{header|XPL0}}==
9,476

edits