Sum of a series: Difference between revisions
Content added Content deleted
(Forth, generic on bounds and function) |
(Riemann zeta(2)) |
||
Line 1: | Line 1: | ||
{{task}}Display the sum of a finite series for a given range. |
{{task}}Display the sum of a finite series for a given range. |
||
For this task, use S(x) = 1/x^2, from 1 to 1000. |
For this task, use S(x) = 1/x^2, from 1 to 1000. (This approximates the Riemann zeta function. The Basel problem solved this: zeta(2) = π<sup>2</sup>/6.) |
||
=={{header|C++}}== |
=={{header|C++}}== |
Revision as of 17:20, 22 February 2008
Sum of a series
You are encouraged to solve this task according to the task description, using any language you may know.
You are encouraged to solve this task according to the task description, using any language you may know.
Display the sum of a finite series for a given range.
For this task, use S(x) = 1/x^2, from 1 to 1000. (This approximates the Riemann zeta function. The Basel problem solved this: zeta(2) = π2/6.)
C++
#include <iostream> double f(double x); int main() { unsigned int start = 1; unsigned int end = 1000; double sum = 0; for( unsigned int x = start; x <= end; ++x ) { sum += f(x); } std::cout << "Sum of f(x) from " << start << " to " << end << " is " << sum << std::endl; return 0; } double f(double x) { return ( 1 / ( x * x ) ); }
D
module series ; import std.stdio ; T series(T)(T function(int) t, int end, int start = 1 /* 0 if zero base*/ ) { T sum = 0 ; for(int i = start ; i <= end ; i++) sum += t(i) ; return sum ; } real term(int n){ return 1.0L/(n*n) ; } void main(){ writef("sum@[1..1000] = ", series(&term, 1000)) ; }
Forth
: sum ( fn start count -- fsum ) 0e bounds do i s>d d>f dup execute f+ loop drop ; :noname ( x -- 1/x^2 ) fdup f* 1/f ; ( xt ) 1 1000 sum f. \ 1.64393456668156
Java
public class Sum{ public static double f(double x){ return 1/(x*x); } public static void main(String[] args){ double start = 1; double end = 1000; double sum = 0; for(double x = start;x <= end;x++) sum += f(x); System.out.println("Sum of f(x) from " + start + " to " + end +" is " + sum); } }