Program to differentiate the given Polynomial
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 ‘+’, ’-’ symbol
Examples:
Input: str = “4X3 + 3X1 + 2X2”
Output: “12X2 + 3X0 + 4X1”
Explanation:
The derivative of p(x) = A*XN is p'(x) = A * N * XN – 1
Input: 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++
// 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 long using namespace std; // Function to differentiate the // given term string 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 polynomial string 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 code int main() { string str = "5x^4 + 6x^2 + 5x^2" ; cout << diffstr(str); return 0; } |
Python3
# Python3 program to differentiate # the given polynomial MOD = ( 1e9 + 7 ) # Function to differentiate # the given term def 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 polynomial def 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 code if __name__ = = "__main__" : st = "5x^4 + 6x^2 + 5x^2" print (diffstr(st)) # This code is contributed by Chitranayal |
20X^3 + 12X^1 + 10X^1