小编run*_*exe的帖子

为什么C++将范数定义为欧几里德范数的平方

这可能听起来像是一个修辞问题,但我在这里提出这个问题有两个原因:

  1. 我花了一段时间才弄清楚C++ std :: norm()与Matlab/Octave的做法有何不同,所以其他人可能会在这里偶然发现它.
  2. 我发现将norm()函数定义为与通常被认为是标准(或L2范数,或欧几里德范数等等)不同(虽然密切相关)的函数很奇怪.

具体而言,C++标准库将norm()复数定义为模数(或绝对值)的平方,其中当复数为a + i*b时,模数为sqrt(a ^ 2 + b ^ 2).

这违背了我对规范的理解,当规范为欧几里德范数(对应于这里使用的模数)时,是平方和的平方根.我将参考Mathworld对复模数的定义.

这是其他人遇到的事吗?我发现它是将一些信号处理代码从Octave移植到C++的结果,而我发现引用这个差异的唯一其他地方是在GCC邮件列表上(由于1-link限制而无法发布链接).

c++ math

15
推荐指数
2
解决办法
1万
查看次数

标签 统计

c++ ×1

math ×1