📜  多项式的导数程序

📅  最后修改于: 2021-04-29 15:13:20             🧑  作者: Mango

给定多项式作为字符串和值。计算给定值的多项式导数。
注意:输入格式应使术语和“ +”符号之间留有空格

Input : 3x^3 + 4x^2 + 6x^1 + 89x^0
        2             
Output :58 
Explanation : Derivative of given
polynomial is : 9x^2 + 8x^1 + 6
Now put x = 2
9*4 + 8*2 + 6 = 36 + 16 + 6 = 58  
            
Input : 1x^3
        3
Output : 27

我们将输入字符串拆分为标记,并为每个术语分别计算每个术语的导数,然后将它们相加以获得结果。

C++
// C++ program to find value of derivative of
// a polynomial.
#include 
using namespace std;
 
long long derivativeTerm(string pTerm, long long val)
{
    // Get coefficient
    string coeffStr = "";
    int i;
    for (i = 0; pTerm[i] != 'x'; i++)
        coeffStr.push_back(pTerm[i]);
    long long coeff = atol(coeffStr.c_str());
 
    // Get Power (Skip 2 characters for x and ^)
    string powStr = "";
    for (i = i + 2; i != pTerm.size(); i++)
        powStr.push_back(pTerm[i]);
    long long power = atol(powStr.c_str());
 
    // For ax^n, we return a(n-1)x^(n-1)
    return coeff * power * pow(val, power - 1);
}
 
long long derivativeVal(string& poly, int val)
{
    long long ans = 0;
 
    // We use istringstream to get 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 derivative of that
        // particular term
        else
            ans = (ans + derivativeTerm(pTerm, val));
    }
    return ans;
}
 
// Driver code
int main()
{
    string str = "4x^3 + 3x^1 + 2x^2";
    int val = 2;
    cout << derivativeVal(str, val);
    return 0;
}


Java
// Java program to find value of derivative of
// a polynomial
import java.io.*;
class GFG
{
 
  static long derivativeTerm(String pTerm, long val)
  {
 
    // Get coefficient
    String coeffStr = "";
    int i;
    for (i = 0; pTerm.charAt(i) != 'x' ; i++)
    {
      if(pTerm.charAt(i)==' ')
        continue;
      coeffStr += (pTerm.charAt(i));
    }
 
    long coeff = Long.parseLong(coeffStr);
 
    // Get Power (Skip 2 characters for x and ^)
    String powStr = ""; 
    for (i = i + 2; i != pTerm.length() && pTerm.charAt(i) != ' '; i++)
    {
      powStr += pTerm.charAt(i);
    }
 
    long power=Long.parseLong(powStr);
 
    // For ax^n, we return a(n-1)x^(n-1)
    return coeff * power * (long)Math.pow(val, power - 1);
  }
  static long derivativeVal(String poly, int val)
  {
    long ans = 0;
 
    int i = 0;
    String[] stSplit = poly.split("\\+");
    while(i


Python3
# Python3 program to find
# value of derivative of
# a polynomial.
def derivativeTerm(pTerm, val):
 
    # Get coefficient
    coeffStr = ""
 
    i = 0
    while (i < len(pTerm) and
           pTerm[i] != 'x'):
        coeffStr += (pTerm[i])
        i += 1
         
    coeff = int(coeffStr)
 
    # Get Power (Skip 2 characters
    # for x and ^)
    powStr = ""
    j = i + 2
    while j < len(pTerm):
        powStr += (pTerm[j])
        j += 1
    
    power = int(powStr)
 
    # For ax^n, we return
    # a(n-1)x^(n-1)
    return (coeff * power *
            pow(val, power - 1))
 
def derivativeVal(poly, val):
 
    ans = 0
    i = 0
    stSplit = poly.split("+")
    
    while (i < len(stSplit)):     
        ans = (ans +
               derivativeTerm(stSplit[i],
                              val))
        i += 1
 
    return ans
 
# Driver code
if __name__ == "__main__":
 
    st = "4x^3 + 3x^1 + 2x^2"
    val = 2   
    print(derivativeVal(st, val))
 
# This code is contributed by Chitranayal


C#
// C# program to find value of derivative of
// a polynomial
using System;
 
class GFG{
 
static long derivativeTerm(string pTerm, long val)
{
 
    // Get coefficient
    string coeffStr = "";
    int i;
     
    for(i = 0; pTerm[i] != 'x'; i++)
    {
        if (pTerm[i] == ' ')
            continue;
             
        coeffStr += (pTerm[i]);
    }
     
    long coeff = long.Parse(coeffStr);
     
    // Get Power (Skip 2 characters for x and ^)
    string powStr = ""; 
    for(i = i + 2;
        i != pTerm.Length && pTerm[i] != ' ';
        i++)
    {
        powStr += pTerm[i];
    }
     
    long power = long.Parse(powStr);
     
    // For ax^n, we return a(n-1)x^(n-1)
    return coeff * power * (long)Math.Pow(val, power - 1);
}
 
static long derivativeVal(string poly, int val)
{
    long ans = 0;
     
    int i = 0;
    String[] stSplit = poly.Split("+");
     
    while (i < stSplit.Length)
    {
        ans = (ans +derivativeTerm(stSplit[i], val));
        i++;
    }
    return ans;
}
 
// Driver code
static public void Main()
{
    String str = "4x^3 + 3x^1 + 2x^2";
    int val = 2;
     
    Console.WriteLine(derivativeVal(str, val));
}
}
 
// This code is contributed by rag2127


输出:

59