2018-12-30 19:05:56 +05:30
---
id: 5a23c84252665b21eecc8041
title: Sum of a series
challengeType: 5
---
## Description
< section id = 'description' >
2019-07-18 17:32:12 +02:00
2019-03-10 19:14:48 +09:00
Compute the < b > n< / b > < sup > th< / sup > term of a < a href = "https://en.wikipedia.org/wiki/Series (mathematics)" target = "_blank" > series< / a > , i.e. the sum of the < b > n< / b > first terms of the corresponding < a href = "https://en.wikipedia.org/wiki/sequence" target = "_blank" > sequence< / a > .
2018-12-30 19:05:56 +05:30
Informally this value, or its limit when < b > n< / b > tends to infinity, is also called the < i > sum of the series< / i > , thus the title of this task.
For this task, use:
2019-03-10 19:14:48 +09:00
< span style = "margin-left: 2em;" > $S_n = \sum_{k=1}^n \frac{1}{k^2}$</ span >
2018-12-30 19:05:56 +05:30
and compute $S_{1000}$
2019-05-23 13:57:59 +09:00
This approximates the < a href = "https://en.wikipedia.org/wiki/Riemann zeta function" target = "_blank" > zeta function< / a > for S=2, whose exact value
2019-03-10 19:14:48 +09:00
< span style = "margin-left: 2em;" > $\zeta(2) = {\pi^2\over 6}$</ span >
2019-05-23 13:57:59 +09:00
is the solution of the < a href = "https://en.wikipedia.org/wiki/Basel problem" target = "_blank" > Basel problem< / a > .
2018-12-30 19:05:56 +05:30
< / section >
## Instructions
< section id = 'instructions' >
2019-07-18 17:32:12 +02:00
2019-03-10 19:14:48 +09:00
Write a function that take $a$ and $b$ as parameters and returns the sum of $a^{th}$ to $b^{th}$ members of the sequence.
2018-12-30 19:05:56 +05:30
< / section >
## Tests
< section id = 'tests' >
``` yml
tests:
- text: < code > sum</ code > should be a function.
testString: assert(typeof sum == 'function', '< code > sum< / code > should be a function.');
- text: < code > sum(1, 100)</ code > should return a number.
testString: assert(typeof sum(1, 100) == 'number', '< code > sum(1, 100)< / code > should return a number.');
- text: < code > sum(1, 100)</ code > should return < code > 1.6349839001848923</ code > .
testString: assert.equal(sum(1, 100), 1.6349839001848923, '< code > sum(1, 100)< / code > should return < code > 1.6349839001848923< / code > .');
- text: < code > sum(33, 46)</ code > should return < code > 0.009262256361481223</ code > .
testString: assert.equal(sum(33, 46), 0.009262256361481223, '< code > sum(33, 46)< / code > should return < code > 0.009262256361481223< / code > .');
- text: < code > sum(21, 213)</ code > should return < code > 0.044086990748706555</ code > .
testString: assert.equal(sum(21, 213), 0.044086990748706555, '< code > sum(21, 213)< / code > should return < code > 0.044086990748706555< / code > .');
- text: < code > sum(11, 111)</ code > should return < code > 0.08619778593108679</ code > .
testString: assert.equal(sum(11, 111), 0.08619778593108679, '< code > sum(11, 111)< / code > should return < code > 0.08619778593108679< / code > .');
- text: < code > sum(1, 10)</ code > should return < code > 1.5497677311665408</ code > .
testString: assert.equal(sum(1, 10), 1.5497677311665408, '< code > sum(1, 10)< / code > should return < code > 1.5497677311665408< / code > .');
```
< / section >
## Challenge Seed
< section id = 'challengeSeed' >
2019-07-18 17:32:12 +02:00
2018-12-30 19:05:56 +05:30
< div id = 'js-seed' >
```js
2019-03-10 19:14:48 +09:00
function sum(a, b) {
2018-12-30 19:05:56 +05:30
// Good luck!
}
```
< / div >
< / section >
## Solution
< section id = 'solution' >
```js
2019-03-10 19:14:48 +09:00
function sum(a, b) {
2018-12-30 19:05:56 +05:30
function fn(x) {
return 1 / (x * x)
}
var s = 0;
for (; a < = b; a++) s += fn(a);
return s;
}
```
2019-07-18 17:32:12 +02:00
< / section >