Fix integration borders
This commit is contained in:
parent
f86a6130e0
commit
e6c6925209
@ -98,7 +98,7 @@ public fun <T : Any> GaussIntegrator<T>.integrate(
|
|||||||
require(intervals > 0) { "Number of intervals must be positive" }
|
require(intervals > 0) { "Number of intervals must be positive" }
|
||||||
val rangeSize = (range.endInclusive - range.start) / intervals
|
val rangeSize = (range.endInclusive - range.start) / intervals
|
||||||
val ranges = UnivariateIntegrandRanges(
|
val ranges = UnivariateIntegrandRanges(
|
||||||
(0 until intervals).map { i -> (rangeSize * i)..(rangeSize * (i + 1)) to order }
|
(0 until intervals).map { i -> (range.start + rangeSize * i)..(range.start + rangeSize * (i + 1)) to order }
|
||||||
)
|
)
|
||||||
return integrate(
|
return integrate(
|
||||||
UnivariateIntegrand(
|
UnivariateIntegrand(
|
||||||
|
@ -24,14 +24,14 @@ class GaussIntegralTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun gaussUniform() {
|
fun gaussUniform() {
|
||||||
val res = DoubleField.integrator.integrate(0.0..100.0) { x ->
|
val res = DoubleField.integrator.integrate(35.0..100.0) { x ->
|
||||||
if(x in 30.0..50.0){
|
if(x in 30.0..50.0){
|
||||||
1.0
|
1.0
|
||||||
} else {
|
} else {
|
||||||
0.0
|
0.0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
assertEquals(20.0, res.valueOrNull!!, 0.5)
|
assertEquals(15.0, res.valueOrNull!!, 0.5)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user