stringtranslate.com

adición pitagórica

En matemáticas , la suma pitagórica es una operación binaria sobre 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

[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 simples para algunas fórmulas cuando sus sumandos son complicados; por ejemplo, la relación energía-momento en física se vuelve

hipotprocesamiento de señalespropagaciónincertidumbre de mediciónsuma en cuadratura[2]media cuadrática

Aplicaciones

Ejemplo de suma pitagórica de errores independientes utilizando la suma vectorial de vectores ortogonales

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

Si las mediciones tienen errores independientes respectivamente, el método de cuadratura da el error general,

[5]

Esto equivale a encontrar la magnitud de la resultante de sumar vectores ortogonales , cada uno con magnitud igual a la incertidumbre, utilizando el teorema de Pitágoras .

En el procesamiento de señales, la suma en cuadratura se utiliza 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 en una condición específica, el ruido general es

[6]

La raíz cuadrática media de un conjunto finito de números es simplemente su suma pitagórica, normalizada para formar una media generalizada dividiendo por .

Propiedades

La operación es asociativa y conmutativa , [7] y

semigrupo conmutativo

Los números reales siguientes no son un grupo , porque nunca pueden producir un número negativo como 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 suma 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 el cero como 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ñado para evitar errores que surjan 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 de raíz cuadrada de la suma de dos cuadrados , pero la hipotenusa evita los problemas que se producen al elevar al cuadrado números muy grandes o muy pequeños. Si se calcula usando la fórmula natural,

precisión de la máquinasubdesbordamiento aritmético[8]

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

Desde C++17 , ha habido 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 no, 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 el desbordamiento es insuficiente, el resultado final es igual a , que es correcto dentro de la precisión del cálculo. La raíz cuadrada se calcula con un valor entre 1 y 2. Finalmente, la multiplicación por no puede desbordarse y solo se desborda cuando el resultado es demasiado grande para representarlo. [8] Esta implementación tiene la desventaja de que requiere una división de punto flotante adicional, lo que puede duplicar el costo de la implementación ingenua, ya que la multiplicación y la suma suelen ser mucho más rápidas que la división y la raíz cuadrada. Normalmente, la implementación es más lenta en 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. Técnicas adicionales permiten calcular el resultado con mayor precisión, por ejemplo, con menos de un ulp . [8]

Soporte de lenguaje de programación

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

Ver también

Referencias

  1. ^ Moler, Cleve; Morrison, Donald (1983). "Reemplazar 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 Suma en cuadratura". Herramientas Estadísticas para la Práctica Integral de las Ciencias de la Higiene Industrial y la Salud Ambiental . John Wiley e hijos. pag. 289.ISBN 9781119143017.
  3. ^ "SIN (3M): Funciones trigonométricas y sus inversas". Manual del programador de Unix: Guía de referencia (4.3 Berkeley Software Distribution Virtual VAX-11 Versión ed.). Departamento de Ingeniería Eléctrica e Informática, Universidad de California, Berkeley. Abril de 1986.
  4. ^ Beebe, Nelson HF (2017). Manual de computación de funciones matemáticas: programación utilizando la biblioteca de software portátil MathCW. Saltador. pag. 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)". Transacciones ACM sobre software matemático . 47 (1): 9:1–9:12. arXiv : 1904.09481 . doi :10.1145/3428446. S2CID  230588285.
  9. ^ Niebla, Agner (27 de abril de 2020). "Seguimiento de excepciones de punto flotante y propagación NAN" (PDF) . pag. 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 optimización máxima para flotantes de 32 y 64 bits.
  12. ^ Cimpanu, Catalín. "CSS para obtener 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. ^ "Paquete de matemáticas - matemáticas - PKG.go.dev".
  16. ^ "Math.hypot() - JavaScript | MDN". 21 de febrero de 2023.
  17. ^ "Matemáticas · el lenguaje Julia".
  18. ^ "Matemáticas (plataforma Java 2 SE 5.0)".
  19. ^ "hypot - Lenguaje de programación Kotlin". Kotlin . Consultado el 19 de marzo de 2018 .
  20. ^ "Raíz cuadrada de la suma de cuadrados (hipotenusa) - hipotética de MATLAB - MathWorks Benelux".
  21. ^ "PHP: Hypot - Manual".
  22. ^ "Matemáticas - Funciones matemáticas - Documentación de Python 3.9.7".
  23. ^ "Módulo: Matemáticas (Ruby 3.0.2)".
  24. ^ "F64 - Óxido".
  25. ^ "Biblioteca estándar Scala 2.13.6 - scala.math".

Otras lecturas