SERIES DE TAYLOR C++

Iniciado por anita0421, 17 Noviembre 2012, 17:59 PM

0 Miembros y 1 Visitante están viendo este tema.

anita0421

Buenos dias!
Ésta es una tarea en C++ que no logro entender... si pudieran ayudarme estaria muy agradecidaa! :)





Empleando series de Taylor, obtienes resultados por aproximación para resolver la funcion básica ex para valores complejos de x

Apóyate en programación C/C++ para desarrollar la solución a este problema.

Condiciones que debe tener tu práctica:


harás uso solo y exclusivamente de funciones definidas por el programador (FDP), no usar funciones predefinidas.

La FDP será la única que podrá calcular y generar el resultado de  la cual llevará por nombre «exponente()».

No harás uso de definiciones simbólicas ni constantes, ni variables globales

Solicitar desde el programa principal el valor de x

Imprimir o desplegar desde el programa principal el resultado calculado y generado por «exponente()»

Hacer todo el proyecto lo mas modular y funcional posible, creando las FDP necesarias para simplificar tareas y dejar mas limpia el área de llamados a dichas funciones.


Nota: Cuando vas obteniendo resultados parciales, el último resultado hasta el momento obtenido se compara contra el anterior. Si la diferencia entre este último valor obtenido contra el anterior es nula (son iguales), es momento de concluir la serie de operaciones acumulativas para tal serie. En cualquier otro caso se continuará con los cálculos, operaciones acumulativas y de nueva cuenta la comparación.


Podemos usar los siguientes archivos:


PARA FACTORIAL:

(Main)



/* calculo del factorial  */
#include <stdio.h>
#include </home/usuario/Documentos/jhesquivel/factorial.h>

int main()
{
   int dato, factor;
   printf("Dame el valor a calcular: ");
   scanf("%d", &dato);
   factor=factorial(dato);
   printf(" El factorial de %d es %d. %s \n",dato, factor, factor==9999 ? "El resultado excedió el limite de tu compu" : "");
   return 0;
}




(Funcion Definida por el Programador)

int factorial(int dato)
{
   int resultado=1, resultado_tmp, contador;
   contador=dato-2;
   printf("1 ");

   while (contador>=0)
   {
       printf("* %d ",(dato-contador));
       resultado*=(dato - contador); // producto parcial
       resultado_tmp=resultado; // respalda resultado
       contador--; // posicionarse para el siguiente producto parcial

       resultado_tmp=resultado*(dato - contador)/resultado_tmp; // multiplica y divide por si mismo. No debe alterar
       if (resultado_tmp!=(dato - contador))
       {  resultado=9999;
          break;
       }
   }
   return resultado;
}



PARA POW: (Funcion Defindia por el Programador)



int raiz_2(int x)
{
  float b;

  b =float(x);
  while (!(b==(x/b)))
  {
     b =(x/b+b)/2.0;
  }
  return b;
}




MUCHISIMAS GRACIAS! :)

leosansan

No hace falta la función factorial ni la que emule a pow:
Código (cpp) [Seleccionar]

/*  serie e^x */
#include <stdio.h>

int main()
{
    int terminos;
    double x;
    double serie(double ,int );
    printf("Este programa calcula \"e\" elevado a \"x\" por desarrollo en serie\ncon el numero de terminos que quieras\n");
    printf("Teclea x: ");
    scanf("%lf",&x);
    printf("Teclea el numero de terminos: ");
    scanf("%d", &terminos);
    printf("El resultado de e elevado a %g con %d terminos es %1.16lf\n", x, terminos, serie(x, terminos));
   
    return 0;
}
double serie(double z, int numero)
{
     double miserie=1, frac;
     int i;
     frac=z;
     miserie+=frac;
     i=2;
     if (numero==1)
         {
             miserie=1;
             return miserie;
         }
     while (i<=numero)
        {
             frac=frac*z/i++;
             miserie+=frac;
        }
return miserie;
}

Si, ya sé que está el código en C en lugar de C++ como querias, pero es que no has puesto nada tuyo y tampoco es plan de hacerte la tarea a la carta.
Saludos!.

Hectorues

Hola alguien me puede ayudar con la siguiente serie de taylor porfavor, sin−1  x =x+1/2.x^3/3+1/2.3/4.x^5/5+1/2.3/4.5/6.x^7/7.... (el punto significa multiplicacion) lo que necesto es un programa que la resuelva incluyendo recursividad. Muchas gracias de antemano y espero respuestas.

kaltorak

Cita de: Hectorues en 12 Septiembre 2013, 02:47 AM
Hola alguien me puede ayudar con la siguiente serie de taylor porfavor, sin−1  x =x+1/2.x^3/3+1/2.3/4.x^5/5+1/2.3/4.5/6.x^7/7.... (el punto significa multiplicacion) lo que necesto es un programa que la resuelva incluyendo recursividad. Muchas gracias de antemano y espero respuestas.

Nos encantaría ayudarte, pero no hacerte la tarea, si subes el código que llevas hasta el momento y nos dices donde tienes el problema, estaríamos encantados de ayudarte  ;)

Un saludo
Kaltorak.



MeCraniDOS

#4
Cita de: leosansan en 17 Noviembre 2012, 20:53 PM
y tampoco es plan de hacerte la tarea a la carta.

Tu tampoco has hecho nada, has hecho copy - paste  :-*, lo digo porque tengo el mismo código y lo saqué de una web.

/*  serie e^x */
#include <stdio.h>

int main()
{
   int terminos;
   double x;
   double serie(double ,int );
   printf("Este programa calcula \"e\" elevado a \"x\" por desarrollo en serie\ncon el numero de terminos que quieras\n");
   printf("Teclea x: ");
   scanf("%lf",&x);
   printf("Teclea el numero de terminos: ");
   scanf("%d", &terminos);
   printf("El resultado de e elevado a %g con %d terminos es %1.16lf\n", x, terminos, serie(x, terminos));

fflush(stdin);
   getchar();
}
double serie(double z, int numero)
{
    double miserie=1, frac;
    int i;
    frac=z;
    miserie+=frac;
    i=2;
    if (numero==1)
        {
            miserie=1;
            return miserie;
        }
    while (i<=numero)
       {
            frac=frac*z/i++;
            miserie+=frac;
       }
return miserie;
}


Saludos  :rolleyes:




Cita de: Hectorues en 12 Septiembre 2013, 02:47 AM
Hola alguien me puede ayudar con la siguiente serie de taylor porfavor, sin−1  x =x+1/2.x^3/3+1/2.3/4.x^5/5+1/2.3/4.5/6.x^7/7.... (el punto significa multiplicacion) lo que necesto es un programa que la resuelva incluyendo recursividad. Muchas gracias de antemano y espero respuestas.

Crea otro tema y aporta tu algo, no te vamos a hacer el trabajo.

Saludos
"La física es el sistema operativo del Universo"
     -- Steven R Garman

Hectorues

La verdad aun empiezo en esto de programar y no tenia idea de como empezar, muchas gracias por sus respuestas :)

flony

CitarEmpleando series de Taylor, obtienes resultados por aproximación para resolver la función básica ex para valores complejos de x
"valores complejos"=numero complejos?
si es así, habría que revisar los codes
si un problema no tiene solucion entonces no es un problema...es algo inevitable