Questo può sembrare un po 'una domanda retorica, ma lo chiedo qui per due motivi:Perché C++ definisce la norma come la norma euclidea quadrato
- Mi c'è voluto un po' per capire cosa C++ std :: norm() stava facendo diversamente da Matlab/Octave, quindi altri potrebbero inciampare qui.
- Trovo strano per definire la funzione di
norm()
come qualcosa di diverso (anche se strettamente correlata) a quello che è generalmente considerato essere la norma (o norma L2, o norma euclidea, ecc ecc)
In particolare la libreria standard C++ definisce norm()
per i numeri complessi come il quadrato del modulo (o valore assoluto), dove il modulo è sqrt (a^2 + b^2) quando il numero complesso è nella forma a + i * b.
Questo va contro la mia comprensione della norma, che quando specificata come norma euclidea (che corrisponde al modulo usato qui), è la radice quadrata della somma dei quadrati. Mi riferirò allo Mathworld's definition of the complex modulus.
È qualcosa che altri hanno incontrato? L'ho trovato come risultato del porting di un codice di elaborazione del segnale da Octave a C++ e l'unico altro posto in cui ho trovato riferimento a questa differenza era nella mailing list GCC (non è possibile pubblicare il collegamento a causa del limite di 1-link).
Discussione sulla mailing list GCC qui: http://gcc.gnu.org/ml/gcc/2001-08 /msg01129.html – runexe