为什么R语言中norm(x, type='2')的运算结果与x%*%x不相等?
运算结果不一致的原因
两者计算的是完全不同的数学值,差异来源如下:
norm(x, type = '2')计算的是向量的L2范数,计算逻辑为所有元素平方和开平方,代入x=c(1,2,3)的结果为sqrt(1²+2²+3²) = sqrt(14) ≈ 3.74166x %*% x计算的是向量与自身的内积,计算逻辑为所有元素平方和,代入x的结果为1²+2²+3² = 14- 二者相减的结果就是
3.74166 - 14 ≈ -10.25834,和你得到的输出完全吻合,不存在运算异常。
如果要让两个值匹配,只要对L2范数的结果做平方即可,运行print(norm(x, type='2')^2 - x%*%x)就会得到接近0的结果(浮点数精度误差范围内可认为相等)。
内容的提问来源于stack exchange,提问作者profPlum
相关产品推荐
相关产品推荐

