stringtranslate.com

Adición pitagórica

En matemáticas , la suma pitagórica es una operación binaria sobre los números reales que calcula la longitud de la hipotenusa de un triángulo rectángulo , dados sus dos lados. Según el teorema de Pitágoras , para un triángulo con lados y , esta longitud se puede calcular como donde denota la operación de suma pitagórica. [1]

Esta operación se puede utilizar en la conversión de coordenadas cartesianas a coordenadas polares . También proporciona una notación y terminología sencillas para algunas fórmulas cuando sus sumandos son complicados; por ejemplo, la relación energía-momento en física se convierte en Se implementa en muchas bibliotecas de programación como la función hipot , de una manera diseñada para evitar errores que surgen debido a cálculos de precisión limitada realizados en computadoras. En sus aplicaciones al procesamiento de señales y propagación de la incertidumbre de medición , la misma operación también se llama adición en cuadratura ; [2] está relacionada con la media cuadrática o "raíz cuadrada media".

Aplicaciones

La suma pitagórica encuentra la longitud de la diagonal del cuerpo de un cuboide rectangular , o equivalentemente, la longitud de la suma vectorial de vectores ortogonales .

La suma pitagórica (y su implementación como función hipot) se utiliza a menudo junto con la función atan2 para convertir coordenadas cartesianas a coordenadas polares : [3] [4]

La suma pitagórica repetida permite hallar el diámetro de un cuboide rectángulo . Esta es la distancia más larga entre dos puntos, la longitud de la diagonal del cuerpo del cuboide. Para un cuboide con lados de longitud , , y , esta longitud es .

Si las mediciones tienen errores independientes respectivamente, el método de cuadratura proporciona el error general, mientras que el límite superior del error general es si los errores no fueran independientes. [5]

En el procesamiento de señales, se utiliza la adición en cuadratura para encontrar el ruido general de fuentes de ruido independientes. Por ejemplo, si un sensor de imagen proporciona seis números digitales de ruido de disparo , tres de ruido de corriente oscura y dos de ruido de Johnson-Nyquist bajo una condición específica, el ruido general son números digitales, [6] lo que muestra el predominio de fuentes de ruido más grandes.

La raíz cuadrada media de un conjunto finito de números es multiplicada por su suma pitagórica. Esta es una media generalizada de los números.

Propiedades

La operación es asociativa y conmutativa , [7] y Esto significa que los números reales forman un semigrupo conmutativo .

Los números reales bajo no son un grupo , porque nunca pueden producir un número negativo como su resultado, mientras que cada elemento de un grupo debe ser el resultado de aplicar la operación de grupo a sí mismo y al elemento identidad . En los números no negativos, todavía no es un grupo, porque la adición pitagórica de un número por un segundo número positivo solo puede aumentar el primer número, por lo que ningún número positivo puede tener un elemento inverso . En cambio, forma un monoide conmutativo en los números no negativos, con cero como su identidad.

Implementación

Hypot es una función matemática definida para calcular la longitud de la hipotenusa de un triángulo rectángulo. Fue diseñada para evitar errores que surgen debido a cálculos de precisión limitada realizados en computadoras. Calcular la longitud de la hipotenusa de un triángulo es posible utilizando la función raíz cuadrada en la suma de dos cuadrados , pero la función hypot evita los problemas que ocurren al elevar al cuadrado números muy grandes o muy pequeños. Si se calcula utilizando la fórmula natural, los cuadrados de valores muy grandes o muy pequeños de y pueden exceder el rango de precisión de la máquina cuando se calculan en una computadora, lo que lleva a un resultado inexacto causado por desbordamiento y subdesbordamiento aritmético . La función hypot fue diseñada para calcular el resultado sin causar este problema. [8]

Si cualquiera de las entradas de la función hipot es infinita, el resultado es infinito. Como esto es cierto para todos los valores posibles de la otra entrada, el estándar de punto flotante IEEE 754 exige que esto siga siendo cierto incluso cuando la otra entrada no sea un número (NaN). [9]

Desde C++17 , existe una función hipot adicional para cálculos 3D: [10]

Orden de cálculo

La dificultad con la implementación ingenua es que puede desbordarse o desbordarse, a menos que el resultado intermedio se calcule con precisión extendida . Una técnica de implementación común es intercambiar los valores, si es necesario, de modo que , y luego usar la forma equivalente

El cálculo de no puede desbordarse a menos que ambos y sean cero. Si se desborda por debajo de su valor, el resultado final es igual a , lo cual es correcto dentro de la precisión del cálculo. La raíz cuadrada se calcula de un valor entre 1 y 2. Finalmente, la multiplicación por no puede desbordarse por debajo de su valor, y se desborda solo cuando el resultado es demasiado grande para ser representado. [8] Esta implementación tiene la desventaja de que requiere una división de punto flotante adicional, que puede duplicar el costo de la implementación ingenua, ya que la multiplicación y la suma son típicamente mucho más rápidas que la división y la raíz cuadrada. Normalmente, la implementación es más lenta por un factor de 2,5 a 3. [11]

Las implementaciones más complejas evitan esto dividiendo las entradas en más casos:

Sin embargo, esta implementación es extremadamente lenta cuando provoca predicciones de salto incorrectas debido a diferentes casos. Las técnicas adicionales permiten calcular el resultado con mayor precisión, por ejemplo, a menos de un ulp . [8]

Soporte de lenguaje de programación

La función de adición pitagórica está presente como la función hipot en muchos lenguajes de programación y bibliotecas, incluyendo CSS , [12] C++11 , [13] D , [14] Fortran (desde Fortran 2008), [15] Go , [16] JavaScript (desde ES2015), [17] Julia , [18] Java (desde la versión 1.5), [19] Kotlin , [20] MATLAB , [21] PHP , [22] Python , [23] Ruby , [24] Rust , [25] y Scala . [26]

Metafont tiene la suma y resta pitagórica como operaciones integradas, bajo los nombres ++y +-+respectivamente.

Véase también

Referencias

  1. ^ Moler, Cleve; Morrison, Donald (1983). "Reemplazo de raíces cuadradas por sumas pitagóricas". Revista IBM de investigación y desarrollo . 27 (6): 577–581. CiteSeerX  10.1.1.90.5651 . doi :10.1147/rd.276.0577.
  2. ^ Johnson, David L. (2017). "12.2.3 Adición en cuadratura". Herramientas estadísticas para la práctica integral de las ciencias de la higiene industrial y la salud ambiental . John Wiley & Sons. pág. 289. ISBN 9781119143017.
  3. ^ "SIN (3M): Funciones trigonométricas y sus inversas". Manual del programador de Unix: Guía de referencia (versión virtual VAX-11 de Berkeley Software Distribution 4.3). Departamento de Ingeniería Eléctrica y Ciencias de la Computación, Universidad de California, Berkeley. Abril de 1986.
  4. ^ Beebe, Nelson HF (2017). Manual de cálculo de funciones matemáticas: programación con la biblioteca de software portátil MathCW. Springer. pág. 70. ISBN 9783319641102.
  5. ^ DB Schneider, Análisis de errores en sistemas de medición, Actas de la Conferencia de laboratorio de normas de 1962, página 94
  6. ^ JT Bushberg et al, La física esencial de las imágenes médicas, sección 10.2.7, Wolters Kluwer Health
  7. ^ Falmagne, Jean-Claude (2015). "Derivar leyes científicas significativas a partir de axiomas abstractos de tipo" gedanken ": cinco ejemplos". Aecuaciones Mathematicae . 89 (2): 393–435. doi :10.1007/s00010-015-0339-1. SEÑOR  3340218. S2CID  121424613.
  8. ^ abc Borges, Carlos F. (2021). "Algoritmo 1014: Un algoritmo mejorado para hipot(x, y)". ACM Transactions on Mathematical Software . 47 (1): 9:1–9:12. arXiv : 1904.09481 . doi :10.1145/3428446. S2CID  230588285.
  9. ^ Fog, Agner (27 de abril de 2020). "Seguimiento de excepciones de punto flotante y propagación de NAN" (PDF) . pág. 6.
  10. ^ Funciones matemáticas comunes std::hypot, std::hypotf, std::hypotl
  11. ^ Medido en ARM y x64 (Intel y AMD) para diferentes compiladores con máxima optimización para flotantes de 32 bits y 64 bits.
  12. ^ Cimpanu, Catalin. "CSS obtendrá soporte para funciones trigonométricas". ZDNet . Consultado el 1 de noviembre de 2019 .
  13. ^ "Hypot - Referencia de C++".
  14. ^ "STD.math - Lenguaje de programación D".
  15. ^ "Las novedades de Fortran 2008" (PDF) .
  16. ^ "Paquete de matemáticas - math - PKG.go.dev".
  17. ^ "Math.hypot() - JavaScript | MDN". 21 de febrero de 2023.
  18. ^ "Matemáticas · el lenguaje de Julia".
  19. ^ "Matemáticas (plataforma Java 2 SE 5.0)".
  20. ^ "hypot - Lenguaje de programación Kotlin". Kotlin . Consultado el 19 de marzo de 2018 .
  21. ^ "Raíz cuadrada de la suma de cuadrados (Hipotenusa) - MATLAB hypot - MathWorks Benelux".
  22. ^ "PHP: Hipoteca - Manual".
  23. ^ "Matemáticas — Funciones matemáticas — Documentación de Python 3.9.7".
  24. ^ "Módulo: Matemáticas (Ruby 3.0.2)".
  25. ^ "F64 - Óxido".
  26. ^ "Biblioteca estándar de Scala 2.13.6 - scala.math".

Lectura adicional