• Lunes 29 de Abril de 2024, 06:49

Autor Tema:  problema con programa que calcule una serie  (Leído 1660 veces)

marcotulio

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
problema con programa que calcule una serie
« en: Lunes 26 de Octubre de 2009, 22:45 »
0
bueno necesito ayuda estoy haciendo el progra que calcule la serie de taylor para la funcion tangente este es mi codigo no se que tengo mal por que no me da el dato que me da un calculadora comun. yo pruebo el numero 9 el cual en grados me tiene que dar = 0.1583844403 y en radianes me da = -0.4523156594 no importa que resultado de ya sea en grados o en radianes.

h t t p://es.wikipedia.org/wiki/Serie_de_Taylor

ahi esta la serie de tangente no pude poner la imagen ya que me dice que no tengo pribilegio y bla bla ....

Código: C#
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace ConsoleApplication1ser
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.  
  13.             double tangente = 0;
  14.             double x = 4;
  15.             double y = -4;
  16.             Console.WriteLine("ingrese un numero");
  17.                 int numero = int.Parse(Console.ReadLine());// ingresa el numero a valuar
  18.  
  19.             for (int n = 1; n <= 50; n++)// lo pongo como valor de la serie de  ya que no lo voy a poner al infinito
  20.             {
  21.                 double potencia = 1;
  22.                 for (int i = 1; i <= n; i++)
  23.  
  24.                     potencia = potencia * x;// calcula la potencia de 4^n
  25.  
  26.                 double potencia2 = 1;
  27.                 for (int i = 1; i <= n; i++)
  28.  
  29.                     potencia2 = potencia2 * y;// calcula la potencia de (-4)^n
  30.  
  31.                 double factorial = 1;
  32.                 for (int i = 1; i <= n; i++)
  33.                     factorial = factorial * i;// calcula factorial
  34.  
  35.                 double denominador = 1;// aqui  es donde tengo duda si lo estoy haciendo bien calcula ""2n""
  36.                 for (int i = 1; i <= n; i++)
  37.                     denominador = 2 * i;
  38.  
  39.                 double berno = 1;
  40.                 for (int i = 1; i <= n; i++)
  41.                     berno = 0.166666666 * i;// igual aqui tengo duda calcula el numero de bernoulli elcual es 1/6 por "n"
  42.  
  43.                 double potenciadenum = 1;
  44.                 for (int i = 1; i <= n; i++)
  45.  
  46.                     potenciadenum = numero * (denominador-1);// igual aqui tengo duda no se si esta calculando bien la potenca de X^(2n -1)
  47.  
  48.  
  49.  
  50.                 //Console.WriteLine(potencia);
  51.                 //Console.WriteLine(potencia2);
  52.                 //Console.WriteLine(factorial);
  53.                 //Console.WriteLine(denominador);
  54.  
  55.                 tangente = tangente + berno * potencia2 * (1 - potencia) * potenciadenum / denominador * factorial; // esta es la operatoria
  56.             }
  57.            
  58.             Console.WriteLine(tangente);// despliega  el resultado
  59.             Console.ReadLine();
  60.         }
  61.     }
  62.  

tannke

  • Miembro MUY activo
  • ***
  • Mensajes: 152
  • Nacionalidad: es
    • Ver Perfil
Re: problema con programa que calcule una serie
« Respuesta #1 en: Martes 27 de Octubre de 2009, 10:09 »
0
Bueno creo que lo que te voi a decir no solucione tu problema, que la verdad , no veo de donde puede salir, tendria que repasar un poco matematicas supongo para sacarlo.

Citar
double denominador = 1;// aqui  es donde tengo duda si lo estoy haciendo bien calcula ""2n""
                for (int i = 1; i <= n; i++)
                    denominador = 2 * i;
Si tu intención es calcular 2n, bueno, creo que el resultado final es el mismo, pero no creo que haga falta hacer un bucle de eso, obtendrias el mismo resultado sustituyendo el codigo anterior por:
double denominador = 2*n;

 
               
Citar
double berno = 1;
                for (int i = 1; i <= n; i++)
                    berno = 0.166666666 * i;// igual aqui tengo duda calcula el numero de bernoulli elcual es 1/6 por "n"

Aqui estamos igual que en el caso anterior, obtendias el mismo resultado sustituyendo el codigo anterior por:

double berno = 0.166666666 * n; o ...=(1/6)*n;

gophlb

  • Visitante
Re: problema con programa que calcule una serie
« Respuesta #2 en: Viernes 30 de Octubre de 2009, 18:36 »
0
Citar
double denominador = 1;// aqui  es donde tengo duda si lo estoy haciendo bien calcula ""2n""
                for (int i = 1; i <= n; i++)
                    denominador = 2 * i;
aqui lo que estas haciendo es lo siguiente:
supongamos que n=4
i=1 n=4 i<=n -> denominador=2*1=2
i=2 n=4 i<=n -> denominador=2*2=4
..
i=4 n=4 i<=n -> denominador=2*4=8

tal y como te dice el compañero, estas haciendo un bucle para una multplicacion que se puede resolver tan simple como
denominador=2*n.

otra cosa es que quieras hacerlo de tal forma que el resultado de esa multiplicacion se vaya almacenando y multiplicando por 2 o por 1/6, desde i=1 hasta n=valorQueSea en cuyo caso ya el codigo seria ligeramente diferente:
double denominador = 1;
for (int i = 1; i <= n; i++)
  denominador = 2 * denominador;

saludetes !