lunes, 18 de septiembre de 2023

Resolver, con Excel, el valor de X en una función f(x), para un determinado valor de Y. Preliminar. Sobre todo para ingenieros.

 Empezamos con una conjetura: 

Toda función, por compleja que sea, continua, creciente o decreciente, para un intervalo lo suficientemente pequeño, se comporta como una recta. Y, si el resultado obtenido no le vale a un matemático, a un ingeniero si.

¿Como llegamos a ese intervalo lo suficientemente pequeño? 

A base de miles de operaciones. La conjetura solo se puede utilizar a base de miles de operaciones matemáticas. Por lo tanto o bien se realiza programando o bien se utiliza una hoja de cálculo que nos permita hacer esas miles de operaciones en poco tiempo. 




Nota importante:  Excel no procesa bien valores excesivamente pequeños, parece que no soporta mas de quince decimales,  da un error, ni suma ni divide bien, por lo que en para algunas funciones no podemos asegurar la exactitud de los cálculos. En algunos casos, con Excel, llegaremos a encontrar el resultado exacto, en los otros nos aproximaremos bastante. Por lo demás, el resultado es bastante aproximado al que debería ser, si a un matemático no le vale el resultado, a un ingeniero si. 

Pinchando sobre el icono de Excel se pueden bajar un zip con dos libros, el primero FuncionLinealII, es el libro sobre el que he desarrollado esta idea, los comentarios son sobre el, en este libro utilizo una función conocida,  fácil de resolver. El segundo libro, FExponencial, trata una función mas compleja, de hecho es una especie de alarde matemático que encontré (o me encontró ella) en youtube. Mientras que la primera se resuelve en tres pasos, la segunda necesitaría mas de seis, pero, también tendríamos que poder utilizar con precisión mas de 15 decimales, lo que parece que ni Excel ni sus compatibles OpenOffice y LibreOffice hacen. Esta falta de precisión se puede observar el la hoja funcion6. 

Algoritmo (o como se hace):

  • Encontramos un primer intervalo que incluya el valor buscado. En principio, este primer intervalo, sería de menos infinito a mas infinito  pero, no solo se puede, se debe abreviar.
  • Estudiamos para cada función como establecer el primer  intervalo.
  • Debemos encontrar unos valores, para este primer intervalo, que nos permitan trabajar en un margen mas pequeño.
  • Calculamos, para cada función, unos mil puntos.
  • La cantidad de mil puntos es opcional, mil es un número redondo. Puede que necesitemos mas puntos o, incluso menos.
  • Buscamos dos puntos entre los que se encuentre el valor buscado. 
  • Esos dos puntos nos dan un segundo intervalo, mucho menor que el primero.
  • Seguimos considerando que mil puntos son los adecuados, por el mismo motivo, mil es un número redondo. 
  • Calculamos, para este segundo intervalo, el valor de esos mil puntos.
  • En este segundo intervalo buscamos dos puntos entre los que se encuentre el valor buscado. 
  • Repetimos lo anterior para este tercer intervalo. Cálculo de mil puntos y búsqueda del valor buscado.
  • Así cuantas veces consideremos necesario.
Ejemplo del libro Excel:
Vamos a utilizar la función y=X²+2X+1, que es una función conocida, fácil de resolver.

Primer intervalo:
 Este estudio hay que hacerlo para cada función que queramos resolver. Cada función diferente necesita su propio estudio.
  • Para un valor buscado grande (aunque en la practica empecemos desde uno), la X será grande, la función la podemos aproximar a X².
  • Si utilizamos un X=raiz(valor buscado), positivo, la función nos va a dar siempre un valor por encima del valor buscado.
  • Para X negativo necesitamos añadir a X un valor que nos  compense del 2X (como X es negativa, -2X) de modo que la función nos de un valor de Y superior al valor buscado.
  • En este caso, basta con añadir a X la raiz(raiz(VB)). Hoja ValorBuscado-Aux B3.
  • Para valores buscados menores de uno, el intervalo es mas complejo de calcular, por lo que lo dejamos que el intervalo vaya de -2 a +1 (como si buscásemos el valor 1)
  • Estos limites del intervalo nos dan una gráfica asimétrica pero, de momento, es poco importante esta asimetría.
  • Ya tenemos, para casi cualquier valor que pueda tomar la función, los límites del primer intervalo.
  • De momento, este libro Excel, no calcula ni los valores próximos al mínimo de la función ni puntos de inflexión.
  • Los siguientes intervalos nos dan los dos puntos entre los que se encuentra el valor buscado.
  • En el libro Excel, cada uno de los distintos pasos ocupa una hoja distinta. Así mismo cada paso cuenta con su gráfica correspondiente.
  • Como ya he dicho, de momento, el libro solo funciona con tramos continuos, ascendentes o descendentes.
  • ¿Como conocer los puntos entre los que se encuentra nuestro intervalo?
  • Para un tramo descendente el primer punto es mayor o igual al valor buscado. El segundo punto es menor o igual al valor buscado. y(f2>=VB;f3<=VB), aunque quizás sería mejor  utilizar  y(f2>=VB;f3<VB ). Con la primera fórmula se puede, si el valor de la celda en VB, encontrar dos celdas que cumplen los requisitos.
  • Para un tramo ascendente el primer punto es menor o igual al valor buscado. El segundo punto es mayor o igual al valor buscado. y(f2<=VB;f3>=VB) o y(f2<=VB;f3>VB)
  • Ver columna K de la hoja Funcion.
  • Conocidos dos puntos, podemos calcular la recta que los une. Una recta es Y=mX+c (Hoja Función, celdas O2 y P2)
  • Conocida la recta, podemos encontrar el valor de X que nos da el valor buscado.
  • Con ese valor de X calculamos el valor que toma  Y en la función. Como es lógico, en los primeros pasos hay una pequeña diferencia entre el valor en la recta y el valor de la función.
  • Con las pruebas realizadas, para esta función, bastan tres pasos para resolver o encontrar la X que da un determinado valor buscado (valor de Y). 
¿Como utilizar el libro? Libro FuncionLinealII:

Hoja ValorBuscado-Aux:
  • Es la hoja inicial, en la que ponemos a mano o calculamos el primer intervalo y nos da el resultado final.
  • En esta hoja, en A2, escribimos el valor buscado. 
  • En H2 e I2 obtenemos el valor de X y comprobamos que el Y de la función se corresponde con el valor buscado.
  • B2:C3 nos dan los valores del primer intervalo para X, así como los posibles valores de Y.
  • Este primer intervalo puede ser el resultado de un estudio personalizado de cada función o puede ser unos datos incluidos "a mano"
Hojas Funcion:
  • El libro tiene tres hojas llamadas función,Función2 y Función3. Estas tres hojas tienen la misma estructura, salvo la hoja función que usa, pero mantiene oculta la columna, "G".
  • La columna "E" tiene los mil valores X que vamos a dar a X. 
  • Primero calculamos el incremento de X entre cada dos puntos. Este valor de X se calcula dividiendo por mil la diferencia entre el valor mayor del intervalo y el menor valor del intervalo. (rango D2)
  • Empezando por el mínimo valor del intervalo vamos incrementado el valor de X.
  • El valor de Y lo calculamos escribiendo la función para cada celda de la columna "F". En este caso =E2^2+2*E2+1
  • En la columna "G" (K para la hoja función) encontramos dos puntos entre los que se encuentra el valor buscado. =SI(O(Y(F2>=VB;F3<=VB);Y(F2<=VB;F3>=VB));1;0)
  • En H2 encontramos la primera línea que cumple la condición.
  • M2,M3,N2 y N3 nos dan los valores X,Y de ambos puntos.
  • En O2 y P2 encontramos la pendiente de la recta (m) y la constante c de la recta y=mx+c
  • En las columnas Q y R vemos el valor que tendría X para el valor de Y buscado y el valor que toma la función para ese valor de X. 
  • Q2 de Funcion3 es, en este caso, la respuesta. Es el valor de X que nos da el valor buscado.
  • Las columnas A,B,C contienen, básicamente, los límites del intervalo. En "funcion" esos límites vienen del valor encontrado en la hoja "ValorBuscado-Aux". En funcion2 y funcion3 son los valores de los puntos, encontrados en la hoja anterior, entre los que se encuentra el valor buscado.
  • Cada paso cuenta con su correspondiente gráfica, GFuncion,GFuncion2 y GFuncion3. 
Libro FExponencial: 
  • En este libro el primer intervalo no se calcula, se pone a mano, como decían en el cole, "a ojo de buen cubero".
  • Está función necesita mas de tres pasos para ser resuelta, hay que añadir, al menos, una hoja "funcion" por cada paso. Yo he llegado hasta el sexto paso, con sus correspondientes gráficas.
  • Vease la  hoja funcion6, en donde nos encontramos con lo antes mencionado sobre excel y los decimales.



martes, 4 de abril de 2023

Cálculo del área de una superficie, conocidas las coordenadas de su perímetro, con Excel. Utilizando nuestras propias funciones Excel.


Se trata de calcular con Excel el área de una superficie, conocidas las coordenadas de su perímetro utilizando las fórmulas de Haversine y de Herón. 

  • La fórmula de Haversine nos da la distancia entre dos puntos de la geografía terrestre, conocidas las coordenadas de ambos puntos. Esta fórmula se convierte en una función propia para Excel desarrollada en VBasic.
  • La fórmula de Herón nos da el área de un triángulo conocidas las longitudes de sus lados. También la utilizamos como "nuestra propia función" convirtiéndola a VBasic.
  • Podemos desarrollar, para utilizarlas en excel, nuestras propias funciones en VBasic. Una vez desarrolladas estas funciones se utilizan como cualquier otra función de excel. Nombre de la función y parámetros.
  • "Nuestras funciones" se incluyen en el código VBasic de excel.
Una vez descargado el libro excel, debemos autorizar la ejecución de macros (el código VBasic).


Para calcular el área:
  • Tomamos n puntos del perímetro de la superficie a medir con el GPS o con cualquier aplicación que nos permita consultar y obtener las coordenadas de los puntos que consideremos precisos para una correcta medida del tamaño de una superficie.
  • Promediamos esos puntos con el fin de encontrar un centro geográfico de ellos, aunque este centro podríamos moverlo a voluntad (siempre que se pueda decir que es un centro)
  • Dividimos la superficie en los distintos triángulos que forman los lados entre dos puntos consecutivos y esos dos puntos con el centro.
  • Primer triángulo, lado formado por el primer y segundo punto, el lado que se forma entre el primer punto y el centro, el lado que se forma entre el segundo punto y el centro.
  • Primer triángulo, primer y segundo punto, centro. Segundo  triángulo, segundo y tercer punto, centro.
  • Último triángulo, ultimo punto, primer punto y centro.
Tengo que comprobar mi trabajo teórico. Busco un sitio conocido, del que pueda encontrar información facilmente. Me decido por el área de juego del terreno del Real Madrid.



Con Google maps tomo las coordenadas del área de juego del campo del Real Madrid, las cuatro esquinas, en donde van los banderines de los corners. Intento ser lo mas preciso posible.


En Wikipedia, consigo enterarme de la dimensiones teóricas del área de juego del Real Madrid, 105*68 metros. 
Según mis cálculos sale, para los lados largos, que uno mide 105,2 y el otro 104,9 metros. Para los lados cortos uno mide 67,76 y el otro 68,04 metros. Bastante ajustado al valor teórico.

Variables o rangos con nombre utilizadas en el libro excel:

  • NPuntos. Es el número de puntos tomados.
  • XCentro: Longitud (coordenadas) del centro.
  • YCentro: Latitud del centro de las coordenadas tomadas.


Si no queremos utilizar programación VBasic, tanto la distancia entre dos puntos (Haversine) y el área de un triángulo (Herón) se pueden calcular con las funciones propias de excel.









Fórmula de Haversine en VBasic:

Function DGeo(Lat1, Lon1, Lat2, Lon2)

Dim GaR, R, Lat1R, Lat2R, Lon1R, Lon2R

DGeo = -1

On Error Resume Next

'57.29577951 para convertir grados a radianes

'6378137 Radio de la tierra

GaR = 57.29577951

GaR = 57.2957795130823


R = 6378137

'R = 6397000

'R = 6371000


'6,371.0 km

Lat1R = Lat1 / GaR

Lat2R = Lat2 / GaR

Lon1R = Lon1 / GaR

Lon2R = Lon2 / GaR

'DGeo = R * Atn(Sqr((1 - (Sin(Lat1 / GaR) * Sin(Lat2 / GaR) + Cos(Lat1 / GaR) * Cos(Lat2 / GaR) * Cos(Lon2 / GaR - Lon1 / GaR)) ^ 2)) / _

(Sin(Lat1 / GaR) * Sin(Lat2 / GaR) + Cos(Lat1 / GaR) * Cos(Lat2 / GaR) * Cos(Lon2 / GaR - Lon1 / GaR)))


DGeo = R * Atn(Sqr((1 - (Sin(Lat1R) * Sin(Lat2R) + Cos(Lat1R) * Cos(Lat2R) * Cos(Lon2R - Lon1R)) ^ 2)) / _

(Sin(Lat1R) * Sin(Lat2R) + Cos(Lat1R) * Cos(Lat2R) * Cos(Lon2R - Lon1R)))

On Error GoTo 0

End Function

Fórmula de Herón en VBasic:

Function AreaHeron(a, b, c)

s = (a + b + c) / 2

  AreaHeron = Sqr(s * (s - a) * (s - b) * (s - c))

End Function