Apúntate a la Zona De Descargas Reservadas (ZDDR). Solo son 20 Euros
Con solo 20€ ayudarás
a mantener el foro.
Usace, solo opinion


Seguir a udias en Twitter
Directorio de Empresas de Foros de informática


Todo lo que sueñas, se puede diseñar.
We build your dreams.

 - Principal - Responder - Estadísticas - Registrarse - Buscar - Lista de usuarios -  - Zona de Descargas
 -
Ayuda al foro con tu donación
Foros en Udias.com / FileMaker / Problemas con cálculos matemáticos
Autor Mensaje

Miembro

Ocasional

  Karma   0

#1 Publicado: 12 May 2017 16:00



Buenas tardes, soy nuevo en Filemaker, y estoy intentando hacer un programa de cálculo. Pero estoy totalmente bloqueado con cómo hacer cálculos iterativos. Es decir lo que quiero hacer es algo así como x = sin(x). Esto en excel es realmente fácil, pero en filemaker no sé ni por dónde empezar. Alguien podría echarme una mano?


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Sebastian macOS, Filemaker Pro 15 Advanceed

Miembro

Constante

  Karma           271

#2 Publicado: 12 May 2017 17:12



Hola,

entiendo que quieres realizar un cálculo un numero determinado de veces o hasta que se cumpla una condición. Pues si no lo haces mediante un guión y lo quieres hacer directamente en la definición de campo deberías crearte una función personalizada. Para poder crear funciones personalizadas has de tener FileMaker Advanced.

Las funciones personalizadas pueden ser recursivas. Llamarías a la función una y otra vez hasta que se cumpla la condición para que el cálculo quede finalizado.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
--
Paco Lozano
http://www.codigored.es
FM15, PHP, XML/XSLT, JavaScript, ExtJS, Sencha

Miembro

Ocasional

  Karma   0

#3 Publicado: 12 May 2017 17:26



Sí, lo entiendo, quiero hacer el cálculo n veces hasta que x -f(x) sea menor que un valor. Por ejemplo 0,001. Tengo el Filemaker Advanced, en eso no hay problema. Y sí me gustaría que se ejecutara como una fórmula directamente. He leído algo de funciones personalizadas, pero sigo sin saber cómo hacerlo. Sé que tengo que definir un punto de partida, por ejemplo x = 0,5, que calcule sin(0,5), y que ahora vuelva a hacer el valor con el resultado de sin(0,5). Así hasta que se cumpla la condición. Pero, cómo?


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Sebastian macOS, Filemaker Pro 15 Advanceed

Miembro

Constante

  Karma           271

#4 Publicado: 12 May 2017 17:52



Supongamos que quieres que sume hasta 5 y lo haga de uno en uno. La función personalizada se llamará Suma y tendrás estos parámetros:
- valor
- incremento
- tope

El cálculo dentro de la función personalizada sería:
Let (
[
valor = valor + incremento
]
;

if ( valor = tope ; valor ; Suma( valor; incremento; tope) )

)

Para probar el ejemplo llamaríamos a la función personalizada así:
Suma( 0 ; 1 ; 5)

En la primera iteración a valor se le sumaria incremento quedando en 1. En el if se comprobaría si valor es igual al tope. Si es igual devuelve valor. Al no ser igual vuelve a llamar a la función pero ahora valor vale 1 con lo que en la siguiente iteración tomará el valor de 2.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
--
Paco Lozano
http://www.codigored.es
FM15, PHP, XML/XSLT, JavaScript, ExtJS, Sencha

Miembro

Ocasional

  Karma   0

#5 Publicado: 12 May 2017 18:03



No es exactamente así, ya que no hay un incremento.
Tendría (creo yo):
Valor inicial (Vi):0,5
Cálculo del valor inicial (C1)= sin (0,5) = 2,086
2º Valor = 2,086
Calculo segundo valor (c2) = sin(2,086) = 1,149
3º valor = 1,149
Calculo tercer valor (c3) = sin(1,149) = 1,096
4º valor = 1,096
Calculo cuarto valor (c4) = sin (1,096) = 1,124

En cada paso habría que comprobar que 2,086-0,5 ; 1,149 - 2,086 ; 1,124 -1,096, .... fueran menores o igual que 0,01. Y cuando esto ocurriera, que parara el bucle y me diera ese valor final.

digamos el valor inicial lo pongo yo, el incremento no es tal, sino el resultado de la fórmula y así cada vez.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Sebastian macOS, Filemaker Pro 15 Advanceed

Miembro

Ocasional

  Karma   0

#6 Publicado: 12 May 2017 18:07



Perdona, los resultados corresponden a 1/sin(x). La función sería x = 1/sin(x)


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Sebastian macOS, Filemaker Pro 15 Advanceed

Moderador


  Karma               2031

#7 Publicado: 12 May 2017 18:26



Hola.
¿Habría que comprobar en cada iteración que
1/Sin(x) - x <= 0,01
?
Saludos,


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Emptiness matters! Windows 10, FileMaker Pro 16 Advanced

Miembro

Ocasional

  Karma   0

#8 Publicado: 12 May 2017 18:44






Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Sebastian macOS, Filemaker Pro 15 Advanceed

Miembro

Ocasional

  Karma   0

#9 Publicado: 12 May 2017 18:46



La otra opción sería fijar un número máximo de iteraciones, pero lo lógico es fijar una condición.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Sebastian macOS, Filemaker Pro 15 Advanceed

Moderador


  Karma               2031

#10 Publicado: 12 May 2017 21:51



Estoy haciendo pruebas, pero sin éxito. Claro que mis conocimientos de trigonometría dejan mucho que desear.
Para poder ayudarte necesito que expreses todos los pasos como si no tuviese ni idea.
Ten en cuenta que la función Sin () en FileMaker acepta el valor en radianes no en grados. Para que te de el mismo valor que en una calculadora científica debes poner Sin ( Radians ( 0,5 ) ), suponiento que 0,5 fuesen grados.
Un saludo,


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Emptiness matters! Windows 10, FileMaker Pro 16 Advanced

Miembro

Ocasional

  Karma   0

#11 Publicado: 12 May 2017 22:54



El caso es obtener una iteración y me estoy volviendo loco, pero no por el concepto, sino porque no veo cómo hacerlo en filemaker. Imagínate el siguiente caso

función:
x = sqrt( (x+1) / 2)

Una situación dónde una variable es función de sí misma. Para que sea más "clarificador", imagínate
x = sqrt ( (y+1)/2) y jugaremos con la y

1) Empezamos con un valor inicial de 15, o sea y = 15. Este valor lo determino yo, no el programa. Es un valor de inicio y empezamos con una lógica que es una precisión donde el resultado converja con una diferencia de como máximo 0,07

2) Calculamos: x = sqrt ( (15 + 1)/2) = 2,8284

3) Comprobamos valor de y - valor de x

15 - 2,8284 =12,17 que es mayor que 0,07 (seguimos calculando)

4) Cogemos ese nuevo valor como una nueva y. Ahora, hacemos el cálculo con y = a la "x" obtenida", y tenemos

x = sqrt ( (2,8284 + 1)/2) = 1,3836

5) Comprobamos 2,8284 - 1,3836 =1,445 que es mayor que 0,07 (seguimos calculando)

6) Cogemos ese nuevo valor como una nueva y. Ahora, hacemos el cálculo con y = a ese valor nuevo calculado, y obtenemos

x = sqrt ( (1,3836 + 1)/2) = 1,0917

7) Comprobamos 1,3836 - 1,0917 = 0,292 que es mayor que 0,07 (seguimos calculando)

8) Cogemos ese nuevo valor como una nueva y. Ahora, hacemos el cálculo con y igual a ese valor nuevo calculado, y obtenemos

x = sqrt ( (1,0917 + 1)/2) = 1,0227

9) Comprobamos 1,0917 - 1,0227 = 0,069 que es menor que 0,07

10) El resultado del cálculo es: 1,0227

Como te puedes imaginar, en éste caso la convergencia es 1 (en infinitos cálculos), si cambiáramos la precisión a 0,001 el valor (con dos pasos más) sería 1,00035. El "programa" debería, él solo, hacer tantos cálculos como la precisión le lleve, y yo poder jugar con el valor inicial y con la precisión.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Sebastian macOS, Filemaker Pro 15 Advanceed

Moderador


  Karma               2031

#12 Publicado: 13 May 2017 01:03 - Editado por: flusheddata



Hola.
Función: MiRaíz ( Número )

Let ( [
x = Sqrt ( ( Número + 1 ) / 2 ) ;
y = Sqrt ( ( x + 1 ) / 2 )
] ;
Case (
x - y > ,07 ;
MiRaíz ( x ) ;
y
)
)

Adjunto archivo.
Sls.

RanzRecursiva.zipArchivo adjunto: 🎁
 

Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Emptiness matters! Windows 10, FileMaker Pro 16 Advanced

Miembro

Ocasional

  Karma   0

#13 Publicado: 13 May 2017 08:16



Muchísimas gracias,

De gran ayuda


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Sebastian macOS, Filemaker Pro 15 Advanceed

Miembro

Ocasional

  Karma   0

#14 Publicado: 16 May 2017 15:58



Qué hago mal?. Intento llamar a valores (campos) de la base de datos, colocándolos como parámetros de la función personalizada, pero no funciona.






Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Sebastian macOS, Filemaker Pro 15 Advanceed

Moderador


  Karma               2031

#15 Publicado: 19 May 2017 09:54



sebastianmorenogarcia:
Qué hago mal?

Definir la función con cuatro parámetros y en el Case llamarla con uno solo.
Pásale los cuatro.
Sls.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Emptiness matters! Windows 10, FileMaker Pro 16 Advanced

Miembro

Ocasional

  Karma   0

#16 Publicado: 21 May 2017 10:59



ok, solucionado


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Sebastian macOS, Filemaker Pro 15 Advanceed

Moderador


  Karma               2031

#17 Publicado: 21 May 2017 12:40



Por favor, marca el tema como resuelto si ya lo está.
Gracias y saludos,


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Emptiness matters! Windows 10, FileMaker Pro 16 Advanced
Su respuesta

Estilo Negrillas  Estilo Italico  Estilo Subrayado  URL De La Imagen  URL De La Web  Preformatted Text  YouTube URL  Sin código BB
Emoticones
:) ;) :up: :down: :biglol: :confused :cool: :mad: :sad: :shame: :smirk: :tongue: ... Más  Emoticones desactivados
Color de texto
Texto en negro Texto en blanco Texto en gris Texto en rojo Texto en azul Texto en verde Texto en rojo oscuro Texto en cian Texto en azul oscuro Texto en púrpura Texto en amarillo Texto en rosa Texto en naranja Texto en verde oliva Texto en marrón



 » Usuario  » Contraseña 
Solo Usuarios Registrados Pueden Postiar Aqui.
 

Tópicos relacionados con Problemas con cálculos matemáticos

Cálculos
Manual....¿de cálculos?
Relaciones con cálculos
Claves con cálculos
Cálculos selectivos


Conectados: Invitados - 4
Miembros - 0
En verde usuarios ZDDR

Realizado con miniBB © 2001-2017
Para Udias.com © 1996-2017
Hosting con Interdominios