Método de aproximación al número PI/4 a partir de sumas finitas de hipotenusas
cuyos vértices recorren el perímetro de
cuarto de circunferencia, realizadas mediante programación.
El número de hipotenusas en la suma es igual a la longitud
del intervalo finito escogido, el cateto del eje x es igual al inverso de la
longitud del intervalo.
La aproximación a PI/4 no se comporta como límite, cuando el
intervalo se hace muy grande el resultado tiende a hacerse inferior a PI/4.
Además algunos intervalos no funcionan como 1/500, 1/50, 1/200 ,1/20 no son
válidos;
El resultado más próximo se da según la variable y quede más
próxima a 0 en orden de 1-7
El cateto x está determinado por el intervalo, su resultado de sumas + radio
siempre es próximo a 2 del orden de 1.9999999999994458
Si el intervalo es de 8
000 -à
Hay una suma de 8 000 hipotenusas las
cuales se forman con el cateto horizontal x de una longitud igual a (1/8 000),
la longitud del cateto vertical y es variable. En el método el cateto y es la
variable para despejar aplicando sucesivamente el teorema de Pitágoras.
Para el intervalo de 8000 como tipo de dato doublé en java
da un resultado de PI: 3.141590137127779
X: 1.9999999999994458
Y: 1.052827938357335E-6
Para desarrollar el método empleo el concepto de arco capaz
de semicircunferencia, esto es la hipotenusa del triangulo es el diámetro de la
circunferencia y el vértice de unión de los dos catetos es sobre un punto de la
semicircunferencia, los dos catetos juntan
sus vértices en un punto del
perímetro de la semicircunferencia la cual recorren un cuarto de circunferencia
empezado en x = radio, termina en (x
cerca de diámetro), en todo el recorrido los dos catetos forman un ángulo de 90
grados, la altura y empieza en y = radio, termina en (y cerca de 0).
Las hipotenusas se calculan en la diferencia de posición
entre dos vértices consecutivos del triángulo rectángulo que recorre el cuarto
de circunferencia.
Diámetro = Ø
Diferencia de x = Δx
Hipotenusa
= H
Δx =
1/(intervalo)
Diferencia de y = Δy
ρ =
(Ø – (x+Δx))
y0 = Ø/2
2y21 + x2 + ρ2 = Ø2
Δy0
= y0 – y1
, Δyn
= yn-1 - yn
n = intervalo
H2 = Δx2 + Δy2
ΣHn0
≈ ϖ/4
SOBRE EL CÓDIGO JAVA
Si se pone como intervalo 8000 el inverso es finito y no da
problema, en cambio para otro número como 9000 el inverso que calcula el programa da muchas
cifras con formato científico, esto luego da errores en el cómputo de las
operaciones, por esto para calcular delta de x lo hago con un método que limito
el número de decimales para el valor de delta x.
La circunferencia del código es de radio = 1 , luego en el
resultado de PI/4 para que sea PI se multiplica por 2, si la circunferencia
fuese de radio = 1/2 se multiplicaría por 4.

public class Pi_cuartos {
public double metodo_dividir(double nn, int t) {
double nn2=0;
String numer =Double.toString(nn);
if(t==1) {
String decimales="1";
for(int y=0; y<numer.length()-2; y++) {
decimales=decimales+"0";
}
nn2 = Double.valueOf(decimales);
}
if(t==0) {
if(numer.length()>=6) {
numer=numer.substring(0,numer.length()-5);
}else {
numer=numer.substring(0,numer.length());
}
nn2 = Double.valueOf(numer);
}
return nn2;
}
public static void main(String [] args) {
Pi_cuartos mi_division =new Pi_cuartos();
double x=1, y=1, z, delta_x, delta_y=0, ro, arco=0, mi_pi_cuartos=0;
double mi_alfa=0;
z = x;
double particion_intervalo = 88888888;
double div = mi_division.metodo_dividir(particion_intervalo,1);
double resto = div/particion_intervalo;
resto = mi_division.metodo_dividir(resto,0);
delta_x=(1/div)*resto;
ro = 2-(z + delta_x);
int ciclos=(int)particion_intervalo;
for(int i=0; i<ciclos; i++) {
mi_alfa = 4 - (ro*ro) - ((x+delta_x)*(x+delta_x));
mi_alfa=Math.sqrt(mi_alfa/2);
delta_y=y-mi_alfa;
y=mi_alfa;
x=x+delta_x;
arco=Math.sqrt((delta_x*delta_x)+(delta_y*delta_y));
mi_pi_cuartos = mi_pi_cuartos + arco;
z = x ;
ro = 2-(z + delta_x);
}
System.out.println(" y: "+y);
System.out.println(" x: "+x);
System.out.println(" pi: "+mi_pi_cuartos*2);
}
}

CÓDIGO JAVA
package pi_cuartos;
public class Pi_cuartos {
public double metodo_dividir(double nn, int t) {
double nn2=0;
String numer =Double.toString(nn);
if(t==1) {
String decimales="1";
for(int y=0; y<numer.length()-2; y++) {
decimales=decimales+"0";
}
nn2 = Double.valueOf(decimales);
}
if(t==0) {
if(numer.length()>=6) {
numer=numer.substring(0,numer.length()-5);
}else {
numer=numer.substring(0,numer.length());
}
nn2 = Double.valueOf(numer);
}
return nn2;
}
public static void main(String [] args) {
Pi_cuartos mi_division =new Pi_cuartos();
double x=1, y=1, z, delta_x, delta_y=0, ro, arco=0, mi_pi_cuartos=0;
double mi_alfa=0;
z = x;
double particion_intervalo = 88888888;
double div = mi_division.metodo_dividir(particion_intervalo,1);
double resto = div/particion_intervalo;
resto = mi_division.metodo_dividir(resto,0);
delta_x=(1/div)*resto;
ro = 2-(z + delta_x);
int ciclos=(int)particion_intervalo;
for(int i=0; i<ciclos; i++) {
mi_alfa = 4 - (ro*ro) - ((x+delta_x)*(x+delta_x));
mi_alfa=Math.sqrt(mi_alfa/2);
delta_y=y-mi_alfa;
y=mi_alfa;
x=x+delta_x;
arco=Math.sqrt((delta_x*delta_x)+(delta_y*delta_y));
mi_pi_cuartos = mi_pi_cuartos + arco;
z = x ;
ro = 2-(z + delta_x);
}
System.out.println(" y: "+y);
System.out.println(" x: "+x);
System.out.println(" pi: "+mi_pi_cuartos*2);
}
}
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.