Esto puede sonar como un poco de una pregunta retórica, pero lo pregunto aquí por dos razones:¿Por qué C++ definen en la norma como la norma euclídea al cuadrado
- Me tomó un tiempo para averiguar lo que C++ std :: norm() estaba haciendo algo diferente de Matlab/Octave, por lo que otros pueden tropezar con esto aquí.
- Me parece extraño para definir la función
norm()
como algo diferente (aunque estrechamente relacionado) a lo que se considera generalmente que es la norma (o L2-norma, o norma euclidiana, etc, etc)
Específicamente, la biblioteca estándar de C++ define norm()
para que los números complejos sean el cuadrado del módulo (o valor absoluto), donde el módulo es sqrt (a^2 + b^2) cuando el número complejo tiene la forma a + i * segundo.
Esto va en contra de mi comprensión de la norma, que cuando se especifica como la norma euclidiana (que corresponde al módulo utilizado aquí), es la raíz cuadrada de la suma de cuadrados. Voy a hacer referencia al Mathworld's definition of the complex modulus.
¿Es esto algo que otros han encontrado? Lo encontré como resultado de transferir algún código de procesamiento de señales de Octave a C++, y el único otro lugar donde encontré referencia a esta diferencia estaba en la lista de correo de GCC (no se puede publicar el enlace debido al límite de 1 enlace).
Discusión sobre la lista de correo GCC aquí: http://gcc.gnu.org/ml/gcc/2001-08 /msg01129.html – runexe