Program to differentiate the given Polynomial - GeeksforGeeks

27 Oct, 2020
Given polynomial string str, the task is to differentiate the given string and print the string after differentiating it. Note: The input format is such that there is a white space between a term and the ‘+’, ’-’ symbolExamples: 
Input: str = “4X3 + 3X1 + 2X2” Output: “12X2 + 3X0 + 4X1” Explanation: The derivative of p(x) = A*XN is p'(x) = A * N * XN – 1Input: str = “5X4 + 6X2 + 5X2” Output: “20X3 + 12X1 + 10X1”  
Approach: The idea is to observe that when the given equation consists of multiple polynomials 
, the differentiation of the given polynomial 
. And, it is known that the derivative of 
is 
Therefore, we split the given string and differentiate every term in it. Below is the implementation of the above approach: 
C++
Python3
// C++ program to differentiate the// given polynomial #include "bits/stdc++.h"#define MOD (1e9 + 7);using ll = int64_t;using ull = uint64_t;#define ll long longusing namespace std; // Function to differentiate the// given termstring diffTerm(string pTerm){    // Get the coefficient    string coeffStr = "", S = "";    int i;     // Loop to get the coefficient    for (i = 0; pTerm[i] != 'x'; i++)        coeffStr.push_back(pTerm[i]);     long long coeff        = atol(coeffStr.c_str());     // Loop to get the power of each term    string powStr = "";    for (i = i + 2; i != pTerm.size(); i++)        powStr.push_back(pTerm[i]);     long long power        = atol(powStr.c_str());    string a, b;     // Converting the value    // to the string    ostringstream str1, str2;     // For ax^n, we find (n)*a*x^(n-1)    coeff = coeff * power;    str1 << coeff;    a = str1.str();    power--;    str2 << power;    b = str2.str();    S += a + "X^" + b;     return S;} // Function to differentiate the// given polynomialstring diffstr(string& poly){     // We use istringstream to get    // the input in tokens    istringstream is(poly);     string pTerm, S = "";     // For every token, compute the    // differentiation    while (is >> pTerm) {         // If the token is equal to        // '+', '-' then        // continue with the string        if (pTerm == "+") {            S += " + ";            continue;        }         if (pTerm == "-") {            S += " - ";            continue;        }         // Otherwise find the differentiation        // of that particular term        else            S += diffTerm(pTerm);    }    return S;} // Driver codeint main(){    string str = "5x^4 + 6x^2 + 5x^2";    cout << diffstr(str);    return 0;}
# Python3 program to differentiate# the given polynomialMOD = (1e9 + 7) # Function to differentiate# the given termdef diffTerm(pTerm):     # Get the coefficient    coeffStr = ""    S = ""     # Loop to get the    # coefficient    i = 0    while (i < len(pTerm) and           pTerm[i] != 'x'):        coeffStr += (pTerm[i])        i += 1     coeff = int(coeffStr)     # Loop to get the power    # of each term    powStr = ""    j = i + 2    while j < len(pTerm):        powStr += (pTerm[j])        j += 1     power = int(powStr)     # For ax^n, we find    # (n)*a*x^(n-1)    coeff = coeff * power    a = str(coeff)    power -= 1    b = str(power)    S += a + "X^" + b     return S # Function to differentiate# the given polynomialdef diffstr(poly):     pTerm = poly.split(" ")    S = ""         for i in range(len(pTerm)):         # If the token is equal to        # '+', '-' then        # continue with the string        if (pTerm[i] == "+"):            S += " + "            continue         if (pTerm[i] == "-"):            S += " - "            continue         # Otherwise find the differentiation        # of that particular term        else:            S += diffTerm(pTerm[i])     return S # Driver codeif __name__ == "__main__":     st = "5x^4 + 6x^2 + 5x^2"    print(diffstr(st)) # This code is contributed by Chitranayal
20X^3 + 12X^1 + 10X^1





 
ukasp
Algebra
Engineering Mathematics
Mathematical
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Univariate, Bivariate and Multivariate data and its analysis
Activation Functions
Logic Notations in LaTeX
Difference between Propositional Logic and Predicate Logic
Proof that vertex cover is NP complete
Program for Fibonacci numbers
C++ Data Types
Write a program to print all permutations of a given string
Set in C++ Standard Template Library (STL)
Coin Change | DP-7