Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ cho Đạo hàm của một đa thức

Cho một chuỗi chứa số hạng đa thức, nhiệm vụ là đánh giá đạo hàm của đa thức đó.

Đa thức là gì?

Đa thức xuất phát từ hai từ:- “Poly” có nghĩa là “nhiều” và “danh mục” có nghĩa là “số hạng”, bao gồm nhiều thuật ngữ. Biểu thức đa thức là một biểu thức chứa các biến, hệ số và số mũ, chỉ liên quan đến các phép toán như cộng, nhân và trừ (các) biến.

Ví dụ về đa thức

x2 + x + 1

Đạo hàm của đa thức p (x) =mx ^ n sẽ là -

m * n * x ^ (n-1)

Ví dụ

Input: str = "2x^3 +1x^1 + 3x^2"
   val = 2
Output: 37
Explanation: 6x^2 + 1x^0 + 6x^1
   Putting x = 2
   6*4 + 1 + 6*2 = 24 + 1 + 12 = 37

Input: str = “1x^3”
   val = 2
Output: 12
Explanation: 1 * 3 *x^2
   Putting x = 2
   3 * 4 = 12

Phương pháp tiếp cận mà chúng tôi sẽ sử dụng để giải quyết vấn đề trên -

  • Lấy đầu vào là một chuỗi và giá trị là x
  • Bây giờ hãy duyệt qua chuỗi và kiểm tra các chữ số và biến.
  • Tiếp tục thêm và duyệt qua chuỗi cho đến khi chúng tôi tìm thấy dấu "+".
  • Sau đó, m * n * x ^ (n-1).
  • Trả lại kết quả.

Thuật toán

Start
Step 1-> In function long long term(string polyterm, long long val)
   Declare and initialize coeffStr = "”
   Declare i
   Loop For i = 0 and polyterm[i] != 'x' and i++
      Call coeffStr.push_back(polyterm[i])
      Set coeff = atol(coeffStr.c_str()
      Declare and initialize powStr = ""
      Loop For i = i + 2 and i != polyterm.size() and i++ powStr.push_back(polyterm[i])
         Set power = atol(powStr.c_str());
   Return coeff * power * pow(val, power - 1)
Step 2-> In function long long value(string& str, int val)
   Set ans = 0
   Call istringstream is(str)
   Declare string polyterm
   Loop While is >> polyterm
      If polyterm == "+” then,
         Continue
      Else
         Set ans = (ans + term(polyterm, val))
   Return ans
Step 3-> In function int main()
   Declare and initialize str = "2x^3 + 1x^1 + 3x^2"
   Declare and initialize val = 2
   Print the value received by value(str, val)
Stop

Ví dụ

#include
using namespace std;
long long term(string polyterm, long long val) {
   //to find the coefficient
   string coeffStr = "";
   int i;
   for (i = 0; polyterm[i] != 'x'; i++)
      coeffStr.push_back(polyterm[i]);
   long long coeff = atol(coeffStr.c_str());
   // to get the power value
   string powStr = "";
   for (i = i + 2; i != polyterm.size(); i++)
      powStr.push_back(polyterm[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 value(string& str, int val) {
   long long ans = 0;
   // using istringstream to get input in tokens
   istringstream is(str);
   string polyterm;
   while (is >> polyterm) {
      // check if the token is equal to '+' then
      // continue with the string
      if (polyterm == "+")
         continue;
         // Otherwise find the derivative of that
         // particular term
      else
         ans = (ans + term(polyterm, val));
   }
   return ans;
}
// main function
int main() {
   string str = "2x^3 + 1x^1 + 3x^2";
   int val = 2;
   cout << value(str, val);
   return 0;
}

Đầu ra

37