diff --git a/build/math.js b/build/math.js index f51f281..7c5f9d2 100644 --- a/build/math.js +++ b/build/math.js @@ -5237,13 +5237,13 @@ function discreteIntegral( values, step ) { } -function summation( f, [a,b] ) { +function summation( f, [a,b,step=1] ) { if ( isComplex( f(a) ) ) { var s = complex(0); - for ( var i = a ; i <= b ; i++ ) s = add( s, f(i) ); + for ( var i = a ; i <= b ; i += step ) s = add( s, f(i) ); return s; @@ -5251,7 +5251,7 @@ function summation( f, [a,b] ) { var s = 0; - for ( var i = a ; i <= b ; i++ ) s += f(i); + for ( var i = a ; i <= b ; i += step ) s += f(i); return s; diff --git a/docs/calculus.html b/docs/calculus.html index a506d9b..a818aa5 100644 --- a/docs/calculus.html +++ b/docs/calculus.html @@ -45,7 +45,9 @@

Integration

discreteIntegral( values, step ) — numerical integral over discrete real values separated by step using Euler-Maclaurin summation

-

summation( f, [a,b] ) — discrete summation of real or complex function values from a to b inclusive in integer steps

+

summation( f, [a,b] ) — discrete summation of real or complex function values from a to b inclusive by unit step

+ +

summation( f, [a,b,step] ) — discrete summation of real or complex function values from a to b inclusive by arbitrary step


Interpolation

diff --git a/src/calculus/integration.js b/src/calculus/integration.js index b04de26..ed8d5ba 100644 --- a/src/calculus/integration.js +++ b/src/calculus/integration.js @@ -241,13 +241,13 @@ function discreteIntegral( values, step ) { } -function summation( f, [a,b] ) { +function summation( f, [a,b,step=1] ) { if ( isComplex( f(a) ) ) { var s = complex(0); - for ( var i = a ; i <= b ; i++ ) s = add( s, f(i) ); + for ( var i = a ; i <= b ; i += step ) s = add( s, f(i) ); return s; @@ -255,7 +255,7 @@ function summation( f, [a,b] ) { var s = 0; - for ( var i = a ; i <= b ; i++ ) s += f(i); + for ( var i = a ; i <= b ; i += step ) s += f(i); return s;