Integration in a Polynomial for a given value

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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


Output: 

27



 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : chitranayal