Programa para encontrar la Integración indefinida del Polinomio dado

Dada una string polinomial str , la tarea es integrar la string dada e imprimir la string después de integrarla.

Nota: El formato de entrada es tal que hay un espacio en blanco entre un término y el símbolo ‘+’.

Ejemplos:

Entrada: str = “4X 3 + 3X 1 + 2X 2
Salida: X 4 + (3/2)X 2 + (2/3)X 3 + C

Entrada: str = “5X 3 + 7X 1 + 2X 2 + 1X 0
Salida: (5/4)X 4 + (7/2)X 2 + (2/3)X 3 + X q + C

Enfoque: La idea es observar que cuando la ecuación dada consta de varios polinomios p(x) = p1(x) + p2(x), la integración del polinomio dado P(x) = P1(x) + P2(x).

También se sabe que la integral indefinida de p(x) = AX^Nes P(x) = \frac{A*X^{N + 1}}{N + 1 }+ C.

Por lo tanto, dividimos la string dada e integramos cada término en ella.

A continuación se muestra la implementación del enfoque anterior:

// C++ program to find the indefinite
// integral of 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 perform the integral
// of each term
string inteTerm(string pTerm)
{
    // Get the coefficient
    string coeffStr = "", S = "";
    int i;
  
    // Loop to iterate and get the
    // Coefficient
    for (i = 0; pTerm[i] != 'x'; i++)
        coeffStr.push_back(pTerm[i]);
    long long coeff
        = atol(coeffStr.c_str());
  
    string powStr = "";
  
    // Loop to find the power
    // of the term
    for (i = i + 2; i != pTerm.size(); i++)
        powStr.push_back(pTerm[i]);
  
    long long power
        = atol(powStr.c_str());
    string a, b;
    ostringstream str1, str2;
  
    // For ax^n, we find a*x^(n+1)/(n+1)
    str1 << coeff;
    a = str1.str();
    power++;
    str2 << power;
    b = str2.str();
    S += "(" + a + "/" + b + ")X^" + b;
  
    return S;
}
  
// Function to find the indefinite
// integral of the given polynomial
string integrationVal(string& poly)
{
  
    // We use istringstream to get the
    // input in tokens
    istringstream is(poly);
  
    string pTerm, S = "";
  
    // Loop to iterate through
    // every term
    while (is >> pTerm) {
  
        // If the token = '+' then
        // continue with the string
        if (pTerm == "+") {
            S += " + ";
            continue;
        }
  
        if (pTerm == "-") {
            S += " - ";
            continue;
        }
  
        // Otherwise find
        // the integration of
        // that particular term
        else
            S += inteTerm(pTerm);
    }
    return S;
}
  
// Driver code
int main()
{
    string str
        = "5x^3 + 7x^1 + 2x^2 + 1x^0";
    cout << integrationVal(str)
         << " + C ";
    return 0;
}
Producción:

(5/4)X^4 + (7/2)X^2 + (2/3)X^3 + (1/1)X^1 + C

Publicación traducida automáticamente

Artículo escrito por RishavSinghMehta y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *