Número Pi con Autoit

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
Avatar de Usuario
Esgrimidor
Hacker del Foro
Mensajes: 286
Registrado: 19 Oct 2008, 00:59
Ubicación: Santa Cruz de Tenerife
Contactar:

Número Pi con Autoit

Mensaje por Esgrimidor »

Quiero calcular el volumen de un cono con autoit.
ya casi lo tengo, pero me he detenido al querer proponer el valor de pi en la fórmula con autoit.

En excel existe la función Pi(), pero en autoit no veo qué comando me permite proponer pi con cierta exactitud.

No existe una función para pi en Autoit ?

Gracias
jamaro
Hacker del Foro
Mensajes: 253
Registrado: 03 Nov 2010, 23:04

Re: Número Pi con Autoit

Mensaje por jamaro »

Hola Esgrimidor:

Efectivamente, en la ayuda de Autoit sólo vienen ejemplos en los que se define $pi = 3.14159265358979 con más o menos decimales.

En el foro inglés, Daniel W. ha hecho un archivo .au3 definiendo pi con más decimales.

http://www.autoitscript.com/forum/topic ... fining-pi/

En este otro hilo calcula Pi:

http://www.autoitscript.com/forum/topic ... culate-pi/

Pero también se habla de que se tenga en cuenta las limitaciones de Autoit

http://www.autoitscript.com/forum/topic ... _p__627085

Un saludo
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Número Pi con Autoit

Mensaje por Ximorro »

Hay un truco para calcular PI justamente con el límite de precisión de la máquina y sistema usados. Así si estás en un sistema que use reales DOUBLE pues tendrás más precisión que en otro que use SINGLE, por ejemplo.
Si se dispone de funciones trigonométricas (y AutoIT las tiene), puedes calcular PI como:
Global CONST $PI = 4 * Atan(1)

Explicación:
PI se puede calcular como cuatro veces la arcotangente de 1 porque:
La tangente de 45º es UNO.
Así que la arcotangente de 1 es 45º (y otros pero se da el positivo menor), pero se trabaja en radianes, y como una circunferencia tiene 2*PI radianes, 45º corresponde a PI/4 (PI es 180º, PI/2 es 90º), que es lo que nos está devolviendo Atan(1), así que al multiplicar por 4 despejamos la PI ;-)
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Número Pi con Autoit

Mensaje por Ximorro »

Enhorabuena Esgrimidor, veo que empiezas a darle caña al AutoIt.

Por cierto, ya que hablo de precisión máxima sería interesante saber si AutoIt se comporta de manera diferente en 32bits y 64bits.
Por favor, que alguien pruebe el siguiente script en 64 bits, a ver qué da.

Código: Seleccionar todo

Global Const $PI = 4 * Atan(1)
ConsoleWrite($PI & @CRLF)
MsgBox(64, "Número PI", $PI)
Yo uso ConsoleWrite porque así puedo copiar el resultado fácilmente, pero como hay gente que sólo usa MsgBox pues pongo los dos.
A mí me da:
3.14159265358979

Eso es 32bits.
La cosa es probarlo en un S.O. 64 bits con el script COMPILADO EN 64BITS. Ojo que por defecto se compila en 32bits, con lo que estaríamos igual.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Número Pi con Autoit

Mensaje por Chefito »

Compilado en 64 bits y ejecutado en un w7 home 64 bits da lo mismo :smt002 .

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Avatar de Usuario
Esgrimidor
Hacker del Foro
Mensajes: 286
Registrado: 19 Oct 2008, 00:59
Ubicación: Santa Cruz de Tenerife
Contactar:

Re: Número Pi con Autoit

Mensaje por Esgrimidor »

Gracias muchachos.
Total que no me entero.
Yo voy con 32 bit
Tengo una fórmula para introducir el número pi
Que pongo ? 3.1415 ?
o aprovecho la función que dice Jamaro en las funciones definidas por el usuario : pi.au3
Qué propongo exactamente en la fórmula de cálculo del volumen del cono ?

:smt021
jamaro
Hacker del Foro
Mensajes: 253
Registrado: 03 Nov 2010, 23:04

Re: Número Pi con Autoit

Mensaje por jamaro »

Sinceramente, yo creo que simplemente pondría $pi=3.14159265358979 o el cálculo con arcotangente que comenta Ximorro.

Según wikipedia (debía tener muy guardada y empolvada en mi memoria la fórmula) el volumen del cono es 1/3 el volumen del cilindro, y se calcula:

http://es.wikipedia.org/wiki/Cono_%28geometr%C3%ADa%29

V = (pi * r^2 * h) / 3

No creo que sea necesario más decimales de los comentados.

Saludos
Avatar de Usuario
Esgrimidor
Hacker del Foro
Mensajes: 286
Registrado: 19 Oct 2008, 00:59
Ubicación: Santa Cruz de Tenerife
Contactar:

Re: Número Pi con Autoit

Mensaje por Esgrimidor »

Hecho
Y a lo hecho pecho.

A ver si para la próxima AutoIt muestra su "superioridad".
Estoy estudiando hace semanas un script inicial. Algo así como una segunda arrancada. Y a ver si me arranco.
Lo de las fórmulas ha sido cosa fácil gracias al enlace :

http://www.iesromerovargas.net/estacion-formulas.htm

Gracias
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Número Pi con Autoit

Mensaje por Ximorro »

Gracias por la prueba Chefito.
Entonces son unas 15 cifras significativas, así que se usan siempre reales dobles de 64 bits. Pues ya sabemos una cosa más.

Esgrimidor, no es buena idea usar los PI de los enlaces de Jamaro para hacer cálculos matemáticos. Aquéllo son experimentos para calcular PI con muchos decimales, interesantes para el estudio de PI pero para hacer cálculos es tontería poner más decimales de los que aguanta la máquina. Es una de las limitaciones importantes de los ordenadores (no de AutoIT en particular). Como no tienen memoria infinita no pueden almacenar números de infinitas cifras.

Prueba por ejemplo este miniprograma:

Código: Seleccionar todo

Global Const $SuperPI = 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117
ConsoleWrite($SuperPI & @CRLF)
Le pongo PI con bastantes decimales esperando que los use todos, pero por ejemplo al mostrarlo en consola veo que me devuelve:
3.14159265358979
y no es cosa de la impresión en pantalla ¡es porque sólo ha almacenado eso en la variable! Es lo que cabe en un real de 64bits.

Así que no hay que complicarse la vida, o pones a piñón fijo ese último valor y ya está, o lo calculas con lo de la arcotangente (u otro sistema si conoces algo más sencillo, yo es lo mejor que he encontrado)
Lo bueno de la fórmula es que es adaptativa, si por ejemplo hubiera ocurrido que en 64bits se almacenan más decimales, con ese sistema los obtienes sin necesidad de cambiar el programa. Además siempre obtienes el máximo posible de decimales, no tienes que estar tú contando si te caben 8, 16 o 32 cifras.
Cuando programas en diferentes sistemas en diferentes lenguajes también es útil, pues pones la fórmula y tienes toda la precisión sin necesidad de estar investigando cuál es el mejor valor para esa configuración.
Pero si la fórmula te da repelús no pasa nada, pon el valor directo y ya está, pero eso sí, no te molestes en poner 100 decimales, pero tampoco pongas 4, lo mejor es poner el máximo posible, así los cálculos serán lo más preciso posible :smt003

Ale Esgrimidor, tranquilo que ya lo tienes. Has hecho muy bien empezando por programas más sencillos y luego lo vas ampliando o haciendo otras cosas más complejas.
Ahora un GUI para que el usuario pueda poner el radio y la altura en cajas de texto ;-)
Y cuando tengas el GUI que se pueda seleccionar diferentes fórmulas para calcular el volumen de diferentes cuerpos, eso ya será la leche :smt004

Por cierto, por si no la conoces antes de meterte en GUIs igual te interesará ver la función InputBox, que sirve para pedir datos a un usuario interactivamente. Es como un MsgBox pero tiene una caja de texto para que te den el valor.
Con un par de InputBox puedes pedir radio y altura y así hacer diferentes cálculos sin necesidad de recompilar el programa, y sin necesidad de hacer un GUI.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Avatar de Usuario
Esgrimidor
Hacker del Foro
Mensajes: 286
Registrado: 19 Oct 2008, 00:59
Ubicación: Santa Cruz de Tenerife
Contactar:

Re: Número Pi con Autoit

Mensaje por Esgrimidor »

También vienen ejemplos sin gui en el enlace que puse más arriba.
Lo del uso del koda es que creo que facilita código.

Para todo lo demás lo más cómodo es basarse en lo que han escrito otros. Y con el tiempo podré hacer algún pinito y sorprenderme en algún alarde creativo. Pero dentro de mucho tiempo, vamos.
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Número Pi con Autoit

Mensaje por Ximorro »

Ya, pero esos programas no los has hecho tú. No era para que me hicieras el programa sino para que lo hicieras tú y practicaras.
Anímate que no es complicado, con InputBox es bastante sencillo. Con GUI es algo más complicado (incluso con Koda).
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Responder