In this post, we will solve Area Under Curves and Volume of Revolving a Curve HackerRank Solution. This problem (Area Under Curves and Volume of Revolving a Curve) is a part of HackerRank Functional Programming language.
Task
Definite Integrals via Numerical Methods
This relates to definite integration via numerical methods.
Consider the algebraic expression given by:
(a1)xb1 + (a2)xb2 + (a3)xb3 + . . . . . + (an)xbn
For the purpose of numerical computation, the area under the curve y = f(x) between the limits a and b can be computed by the Limit Definition of a Definite Integral.
Here is some background about areas and volume computation.
Using equal subintervals of length = 0.001, you need to:
- Evaluate the area bounded by a given polynomial function of the kind described above, between the given limits of L and R.
- Evaluate the volume of the solid obtained by revolving this polynomial curve around the x-axis.
A relative error margin of 0.01 will be tolerated.
Input Format
The first line contains N integers separated by spaces, which are the values of a1, a2, . . . , aN.
The second line contains N integers separated by spaces, which are the values of b1, b2, . . . , bN.
The third line contains two space separated integers, L and R, the lower and upper range limits in which the integration needs to be performed, respectively.
Constraints
- -1000 <= a <= 1000
- -20 <= b <= 20
- 1 <= L <= R <= 20
Output Format
The first line should contain the area between the curve and the x-axis, bound between the specified limits.
The second line should contain the volume of the solid obtained by rotating the curve around the x-axis, between the specified limits.
Sample Input
1 2 3 4 5
6 7 8 9 10
1 4
Explanation
The algebraic expression represented by:
(1)x6 + (2)x7 + (3)x8 + (4)x9 + (5)x10
We need to find the area of the curve enclosed under this curve, between the limits x = 1 and 4. We also need to find the volume of the solid formed by revolving this curve around the x-axis between the limits x = 1 and 4.
Sample Output
2435300.3
26172951168940.8
Scoring
All test cases are weighted equally. You need to clear all the tests in a test case.
Solution – Area Under Curves and Volume of Revolving a Curve – HackerRank Solution
Scala
val step = 0.001 def area(coefficients: List[Int], powers: List[Int], x: Double): Double = { val r = f(coefficients, powers, x) r * r * math.Pi } // This function will be used while invoking "Summation" to compute // The area under the curve. def f(coefficients: List[Int], powers: List[Int], x: Double): Double = { coefficients.zip(powers).map { case (c, p) => c * math.pow(x, p) }.sum } def summation(func: (List[Int], List[Int], Double) => Double, upperLimit: Int, lowerLimit: Int, coefficients: List[Int], powers: List[Int]): Double = { (BigDecimal(lowerLimit) to upperLimit by step).map(x => func(coefficients, powers, x.toDouble)).sum * step } // readLine() is deprecated in Scala 13, but it is called by HackerRank's predefined code. // So it is added to fix the issue. def readLine(): String = scala.io.StdIn.readLine()
Note: This problem (Area Under Curves and Volume of Revolving a Curves) is generated by HackerRank but the solution is provided by CodingBroz. This tutorial is only for Educational and Learning purpose.