Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: asa5 en 14 Diciembre 2017, 18:47 pm



Título: [?] ¿Cómo hacer la derivada en c++ sin funciones de biblioteca?
Publicado por: asa5 en 14 Diciembre 2017, 18:47 pm
¡Hola!

Gracias por leer mi mensaje, y en adelanto por la respuesta ^w^.

El problemilla que tengo es que tengo que evaluar un polinomio en una x dada por el usuario, con un grado que nos da este, y calcular la derivada del polinomio.

La primera parte lo he conseguido, pero estoy estancado con lo de la derivada, al principio lo hice con pow para hacerme una idea, pero como era un bucle quise reducir el coste computacional, y hasta ahí bien, pero el problema es que cuando intenté unir las dos funciones para que no me pidiese los coeficientes 2 veces, pues me quedé estancado porque la función nunca calcula la derivada, sino algo raro.

Por ejemplo, la primera derivada de:
2x^2 + 2x + 2 = 10 cuando x = 2.

¿Alguna idea? mi código es el siguiente:

#include <iostream>
#include <cmath>

using namespace std;

unsigned Potencia(unsigned grado, float x)
{
    unsigned elevado=1;
    for(unsigned i = 1; i <= grado; i++)
    {
        elevado = elevado * x;
    }
    return elevado;
}

void f_de_x(unsigned grado, float coeficiente, float x)
{
    float potencia1=1, potencia2=1, polinomio, derivada;

    for(unsigned i=grado+1; i>0; i--)
    {
        cout << "Introduzca el coeficiente enesimo n = " << 1+grado-i << endl;
        cin >> coeficiente;
        polinomio = polinomio + coeficiente * potencia1;
        potencia1 = x * potencia1;
        potencia2 = Potencia(i-1, x);
        derivada = derivada + i * coeficiente * potencia2;
        cout<<derivada<<endl;
    }
    cout << "El resultado del polinomio es: " << polinomio << endl;
    cout << "El resultado de la derivada es: " << derivada << endl;
}

int main()
{
    unsigned grado;
    float x, coeficiente;
    cout << "Grado del polinomio." << endl;
    cin >> grado;

    cout << "X donde evaluar el polinomio." << endl;
    cin >> x;
    f_de_x(grado, coeficiente, x);

}


¡Muchas gracias!


Título: Re: ¿Cómo hacer la derivada en c++ sin funciones de biblioteca?
Publicado por: CalgaryCorpus en 14 Diciembre 2017, 19:30 pm
Por que si x es float, la potencia es un unsigned?


Título: Re: ¿Cómo hacer la derivada en c++ sin funciones de biblioteca?
Publicado por: asa5 en 14 Diciembre 2017, 23:27 pm
Por que si x es float, la potencia es un unsigned?
Supongo que un pequeño fallo de programador novato x'D