Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: marcecompu en 21 Julio 2014, 17:03 PM

Título: funciones lineales cuadráticas y cubicas
Publicado por: marcecompu en 21 Julio 2014, 17:03 PM
Hola

Bueno mi problema es el siguiente:

1.- Me gustaria programar en C++ funciones lineales cuadráticas y cubicas perola verdad no se ni por donde o como empezar no se si en este lenguaje sería lo adecuado o sería mejor hacerlo en visual basic

Si por favor alguien puede darme una guía se lo agradeceria infinitamente
Título: Re: funciones lineales cuadráticas y cubicas
Publicado por: avesudra en 21 Julio 2014, 17:11 PM
Hola marcecompu, bienvenido al foro. Supongo que lo que quieres hacer es un programe que halle las soluciones de dichas funciones ¿no? , quizás no te he entendido bien.

O lo que quieres es un programa que a partir de una ecuación dada sin la forma general para aplicar directamente la formula de resolución.

Es decir meter:

Citarax2+bx+c=0

Y hallar la solución. O quizás lo que quieres es que el programa tu le metas algo así y te la halle:

Citarx2+3x2+0.5x+4x=-3

Un saludo.
Título: Re: funciones lineales cuadráticas y cubicas
Publicado por: marcecompu en 28 Julio 2014, 05:05 AM
justamente lo que quiero hacer es introducir una funcion por ejemplo
X^2-14x+48
y que el programa me de el resultado de forma grafica


Título: Re: funciones lineales cuadráticas y cubicas
Publicado por: eferion en 28 Julio 2014, 12:04 PM
Una guia sobre esto... hay varias formas de hacer esto... cada una con sus ventajas y sus inconvenientes.

Yo personalmente "recompilaria" la función. Un polinomio se puede encapsular fácilmente como una sucesión de monomios del tipo:

Código (cpp) [Seleccionar]

class Monomio
{
  public:

    Monomio( double multiplicador, double exponente )
      : _multiplicador( multiplicador),
        _exponente( exponente )
    {
    }

    double operator( )( double x) const
    {
      return pow( x * multiplicador, _exponente );
    }

    friend std::ostream& operator << ( std::ostream& out, const Monomio& monomio )
    {
      if ( monomio.multiplicador > 0 )
        out << "+";

      out << monomio.multiplicador;

      if ( monomio._exponente != 0.0 )
      {
        out << "x";
        if ( monomio._exponente != 1.0 )
          out << "^" << monomio._exponente;
      }

      return out;
    }

  private:

    double multiplicador;
    double _exponente;
};


Y con esto el resto del proceso se simplifica enormemente:

Código (cpp) [Seleccionar]

class Polinomio
{
  public:

    Polinomio( const std::vector< Monomio >& monomios )
      : _monomios( monomios )
    { }

    double operator( )( double x) const
    {
      double resultado = 0.0f;

      for ( const auto& monomio : _monomios )
      {
        resultado += monomio( x);
      }

      return resultado;
    }

    friend std::ostream& operator<<( std::ostream& out, const Polinomio& poli )
    {
      out << "y=";

      for ( const auto& monomio : poli._monomios )
        out << monomio;

      return out;
    }

  private:

    std::vector< Monomio > _monomios;
};

int main()
{
  std::vector< Monomio > monomios { { 1.0, 2.0 }, { -14.0, 1.0 }, { 48.0, 0.0 } };

  Polinomio poli( monomios );

  std::cout << "Función: " << poli << std::endl;
  std::cout << "Resultados: " << std::endl;
  for ( double x = 0; x < 10; x++ )
  {
    std::cout << "x=" << x << " - y=" << poli( x ) << std::endl;
  }
}


Para graficar las funciones tendrás que pelearte con alguna librería gráfica... pero al menos ya tienes la pareja de valores (x,y)