Skip to content
Related Articles

Related Articles

Integration in a Polynomial for a given value
  • Difficulty Level : Medium
  • Last Updated : 04 Mar, 2021

Given string str which represents a polynomial and a number N, the task is to integrate this polynomial with respect to X at the given value N
Examples: 

Input: str = “90x4 + 24x3 + 18x2 + 18x”, N = 1. 
Output: 39 
Explanation: 
Given, dy/dx = 90*(X4) + 24* (X3) + 18* (X2) + 18*(X). On integrating this equation, we get 18*(X5) + 6*(X4) + 6*(X3) + 9*(X2) and substituting the value X = 1, we get: 
18 + 6 + 6 + 9 = 39. 
Input: str = “4x3 + 2x2 + 3x”, N = 2 
Output: 27 

Approach: The idea is to use the identity of the integration. For some given function X with the power of N, the integration of this term is given by: 

\int (X^{N}) = \frac{X^{N + 1}}{N + 1}
 

Therefore, the following steps are followed to compute the answer:  



 

  • Get the string.
  • Split the string and perform the integration based on the above formula.
  • Substitute the value of N in the obtained expression.
  • Add all the individual values to get the final integral value.

 

Below is the implementation of the above approach:
 

 

C++




// C++ program to find the integration
// of the given polynomial for the
// value N
 
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
 
// Function to return the integral
// of the given term
double inteTerm(string pTerm, ll val)
{
    // Get the coefficient
    string coeffStr = "";
    int i;
 
    // Loop to iterate through the string
    // and get the coefficient
    for (i = 0; pTerm[i] != 'x'; i++)
        coeffStr.push_back(pTerm[i]);
    ll coeff = atol(coeffStr.c_str());
 
    // Get the Power
    string powStr = "";
 
    // Loop to skip 2 characters for x and ^
    for (i = i + 2; i != pTerm.size(); i++)
        powStr.push_back(pTerm[i]);
    ll power = atol(powStr.c_str());
 
    // Return the computed integral
    return (coeff * pow(val, power + 1))
           / (power + 1);
}
 
// Functionto find the integration
// of the given polynomial for the
// value N
double integrationVal(string poly, int val)
{
    ll ans = 0;
 
    // Using string stream to get the
    // input in tokens
    istringstream is(poly);
    string pTerm;
 
    while (is >> pTerm) {
 
        // If the token is equal to '+' then
        // continue with the string
        if (pTerm == "+")
            continue;
 
        // Otherwise find the integration
        // of that particular term
        else
            ans = (ans + inteTerm(pTerm, val));
    }
    return ans;
}
 
// Driver code
int main()
{
    string str = "4x^3 + 3x^1 + 2x^2";
    int val = 2;
    cout << integrationVal(str, val);
    return 0;
}

Java




// Java program for the above approach
public class GFG
{
 
  // Function to return the integral
  // of the given term
  static int inteTerm(String pTerm, int val)
  {
 
    // Get the coefficient
    String coeffStr = "";
 
    // Loop to iterate through
    // the string and get the
    // coefficient
    int i = 0;
    while (i < pTerm.length() && pTerm.charAt(i) != 'x')
    {
      coeffStr += pTerm.charAt(i);
      i += 1;
    }
 
    int coeff = Integer.parseInt(coeffStr);
 
    // Get the Power
    String powStr = "";
 
    // Loop to skip 2 characters
    // for x and ^
    int j = i + 2;
    while(j< pTerm.length())
    {
      powStr += (pTerm.charAt(j));
      j += 1;
    }
    int power = Integer.parseInt(powStr);
 
    // Return the computed integral
    return ((coeff * (int)Math.pow(val, power + 1)) / (power + 1));
  }
 
  // Functionto find the integration
  // of the given polynomial for the
  // value N
  static int integrationVal(String poly, int val)
  {
    int ans = 0;
 
    // Using string stream to
    // get the input in tokens
    String[] stSplit = poly.split(" \\+ ");
 
    int i = 0;
    while(i < stSplit.length)
    {
      ans = (ans + inteTerm(stSplit[i], val));
      i += 1;
    }
 
    return ans;
  }
 
  // Driver code
  public static void main(String[] args) {
    String st = "4x^3 + 3x^1 + 2x^2";
    int val = 2;
    System.out.println(integrationVal(st, val));
  }
}
 
// This code is contributed by divyesh072019.

Python3




# Python3 program to find
# the integration of the
# given polynomial for the
# value N
 
# Function to return the integral
# of the given term
def inteTerm(pTerm, val):
 
    # Get the coefficient
    coeffStr = ""
 
    # Loop to iterate through
    # the string and get the
    # coefficient
    i = 0
    while (i < len(pTerm) and
           pTerm[i] != 'x'):
        coeffStr += pTerm[i]
        i += 1
         
    coeff = int(coeffStr)
 
    # Get the Power
    powStr = ""
 
    # Loop to skip 2 characters
    # for x and ^
    j = i + 2
    while j< len(pTerm):
        powStr += (pTerm[j])
        j += 1
    power = int(powStr)
 
    # Return the computed integral
    return ((coeff *
             pow(val,
                 power + 1)) //
            (power + 1))
 
# Functionto find the integration
# of the given polynomial for the
# value N
def integrationVal(poly, val):
 
    ans = 0
 
    # Using string stream to
    # get the input in tokens
    stSplit = poly.split("+")
 
    i = 0
    while i < len(stSplit):
        ans = (ans +
               inteTerm(stSplit[i],
                        val))
        i += 1
 
    return ans
 
# Driver code
if __name__ == "__main__":
 
    st = "4x^3 + 3x^1 + 2x^2"
    val = 2
    print(integrationVal(st, val))
 
# This code is contributed by Chitranayal

C#




// C# program for the above approach
using System;
using System.Collections.Generic;
class GFG {
 
  // Function to return the integral
  // of the given term
  static int inteTerm(string pTerm, int val)
  {
 
    // Get the coefficient
    string coeffStr = "";
 
    // Loop to iterate through
    // the string and get the
    // coefficient
    int i = 0;
    while (i < pTerm.Length && pTerm[i] != 'x')
    {
      coeffStr += pTerm[i];
      i += 1;
    }
 
    int coeff = Convert.ToInt32(coeffStr);
 
    // Get the Power
    string powStr = "";
 
    // Loop to skip 2 characters
    // for x and ^
    int j = i + 2;
    while(j< pTerm.Length)
    {
      powStr += (pTerm[j]);
      j += 1;
    }
    int power = Convert.ToInt32(powStr);
 
    // Return the computed integral
    return ((coeff * (int)Math.Pow(val, power + 1)) / (power + 1));
  }
 
  // Functionto find the integration
  // of the given polynomial for the
  // value N
  static int integrationVal(string poly, int val)
  {
    int ans = 0;
 
    // Using string stream to
    // get the input in tokens
    string[] stSplit = poly.Split('+');
 
    int i = 0;
    while(i < stSplit.Length)
    {
      ans = (ans + inteTerm(stSplit[i], val));
      i += 1;
    }
 
    return ans;
  }
 
  // Driver code
  static void Main() {
    string st = "4x^3 + 3x^1 + 2x^2";
    int val = 2;
    Console.WriteLine(integrationVal(st, val));
  }
}
 
// This code is contributed by divyeshrabadiya07.
Output: 
27

 

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up
Recommended Articles
Page :