jueves, 2 de junio de 2011

Deitel_Java_5.20 (El valor de Pi con la Serie de Mclaurin en Java)

5.20 Calcule el valor de π, a partir de la serie infinita:

π = 4 - 4/3 + 4/5 - 4/7 + 4/9 - 4/11 + .....

Imprima una tabla que muestre el valor aproximado de pi, calculando un término de esta serie, dos términos, tres, etcétera. ¿Cuántos términos de esta serie tiene que utilizar para obtener 3.14? ¿3.141? ¿3.1415? ¿3.14159?
_______________________________________________________________________________________
Solución:
Este desarrollo en serie de π se obtiene usando la serie de Maclaurin aplicada a arctan(x). La idea original es de Leibniz.

El siguiente código debe guardarse como UsaDeitel_5_20.java

public class UsaDeitel_5_20
{        // Abre clase UsaDeitel_5_20
  
public static void main( String args[])
{         // Abre main

// Se crea un objeto de la clase UsaDeitel_5_20
Deitel_5_20 miObjeto = new Deitel_5_20();

// Se llama al metodo Imprime
miObjeto.Imprime();
}       // Cierra main
}        // Cierra clase UsaDeitel_5_20

El siguiente código debe guardarse como Deitel_5_20.java

 ////////////////////////////////////////////////////
 /* Este programa genera 10 numeros aleatorios      /
 // entre 1 y 10 mediante un ciclo for              /
 ///////////////////////////////////////////////////*/
 
 import java.util.Random;
 // Es necesario incluir este paquete 
 // de la API de java
 

 public class Aleatorios

 {         // Abre clase Aleatorios

 public static void main(String args[])
 {  // Abre main
 
 Random aleatorios = new Random();
 // Se crea un objeto de tipo Random
 
 int Tamano = 10;
 int Escala = 10;
 // Se generaran 10 numeros aleatorios
 // entre 1 y 10
 // para generar mas, es necesario cambiar
 // la variable Tamano, 
 // tambien se puede cambiar la Escala
 // para generar numeros en un rango diferente
 
 int numero;

 for ( int i = 1; i <= Tamano; i++)
 {   // Abre for
 numero =  1 + aleatorios.nextInt(Escala);
 // ya que la instruccion aleatorios.nextInt(Escala)
 // genera numeros entre 0 y 9, se agrega 1 como
 // factor de desplazamiento para generar numeros 
 // entre 1 y 10
 
 System.out.printf("%3d", numero);

 System.out.print( (0 == i % 5)? "\n":"" );
 // Esta instruccion hace que se de un salto 
 // de linea cada que se imprimen 5 numeros.
 
 }
  
 }  // Cierra main
 }         // Cierra clase Aleatorios

Una ejecución del programa es la siguiente:
Este programa calcula el valor de pi. usando la serie de Maclaurin.

Este programa calcula el valor de pi. usando la serie de Maclaurin. 
Cuantos terminos quiere de la serie?
15

2.666667
3.466667
2.895238
3.339682
2.976046
3.283738
3.017072
3.252366
3.041840
3.232316
3.058403
3.218403
3.070255
3.208186
3.079153
El valor aproximado de pi con 15 terminos  de la serie de Maclaurin es: es: 3.079153

El numero 3.14 aparece cuando se toma el término 128 de la serie, 3.141 aparece 2453, 3.1415 aparece en 144823, 3.14159 aparece por primera vez en 144836.

3 comentarios:

  1. ese no es el código, te confundiste con uno que lanza números aleatorios

    ResponderEliminar
  2. Te equivocaste de código.

    ResponderEliminar
  3. Les comparto mi código para este problema, solo con dos contadores for. Se puede manipular las veces que se repite la serie remplazando el numero dentro de los bucles por uno ingresado por el Usuario.
    public class Division {
    public static void main(String[] args) {

    double a;
    double n1 = 0 ;
    double n2 = 0 ;
    double numero ;

    for (int i = 5; i <=10000; i +=4) {

    a = 4.0/i;

    n1 += a ;
    }

    for (int i = 3; i <=10000; i +=4) {

    a = 4.0/i;

    n2 += a ;
    }

    numero = 4 + (n1 - n2) ;
    System.err.printf("El numero pi es: %f",numero);

    }/*Fin del Metodo Void */

    }/*Fin de la Clase */

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...